• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC SKILL
  3. does leChopShape() work?

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 142
  • Views 16027
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

does leChopShape() work?

archive
archive over 18 years ago

Hello,
I'm trying to chop off the GSG ends of a MMIC with SKILL code. GSG means ground signal ground and they are placed at the input and output of an RF device. The grounds are substrate vias that we refer to as VIA. The idea is to define a chop area from the edge of the device to just inside the VIAs on both sides. So I select the vias, get the bounding box and offset the distance. Then I parse x:y values from the layout bounding box & the via bounding box to define 2 chop areas. Then use leChopShape() on each database object in the layout with the defined chop areas.

The code below runs without error but there is no change to the layout. Has anyone used leChopShape() successfully?

procedure(chopOffGSG()
	let(()
		
		VIA = '("VIA" "drawing")		; variable for the via layer
		OFFSET = 63                             ; offset the x values on each side
		
		geDeselectAll();
		
		leSetAllLayerSelectable(nil);		; makes all layers unselectable
		leSetLayerSelectable(VIA t)		; turn on VIA Layer
		geSelectAllFig();			; select the vias
		l_allFig = geGetSelectedSet()		; & save it to a variable
		vBox = CCSgetBBox(l_allFig);		; get bounding box
		
		leSetAllLayerSelectable(t);		; turn on all layers
		geSelectAllFig();			; select everything
		l_allFig = geGetSelectedSet()		; & save it to a variable
		bBox = CCSgetBBox(l_allFig);		; get bounding box of layout
		
                ;left side chop area
                chopBox1 = list(caar(bBox):cadar(bBox) (caar(vBox) + OFFSET):cadadr(bBox)) 

                ; right side chop area
		chopBox2 = list((caadr(vBox) - OFFSET):cadar(bBox) cadr(bBox))
		
		
		foreach(mapcar dbFig l_allFig
			if((dbFig->objType != "label")	; labels cannot be chopped
				; then(
				    leChopShape(dbFig chopBox1 nil nil)     ; chop off left
				    leChopShape(dbFig chopBox2 nil nil)     ; chop off right
                                 )
				; else
                                    dbDeleteObject(dbFig)	; remove pesky labels
			); if	
		); foreach
		
	    ); let
	);chopOffGSG


Originally posted in cdnusers.org by bthayer
  • Cancel
  • archive
    archive over 18 years ago

    BTW,

    CCSgetBBox() is on Sourcelink & I have also tried leChopShape(dbFig chopBox1 t t) [t t | t nil | nil t]

    Regards,
    Bill


    Originally posted in cdnusers.org by bthayer
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • archive
    archive over 18 years ago

    Of course as soon as I post this I figured out my error. There are not enough points for the chop area. It must list every point in the chop area and the first and last points will match. I was using the LL & UR points like a bounding box. The code above should read:

    ;left
    chopBox1 = list(list(caar(bBox) cadar(bBox)) list((caar(vBox) + OFFSET) cadar(bBox)) list((caar(vBox) + OFFSET) cadadr(bBox)) list(caar(bBox) cadadr(bBox)) list(caar(bBox) cadar(bBox)))

    ;right
    chopBox2 = list((caadr(vBox) - offset):cadar(bBox) caadr(bBox):cadar(bBox) caadr(bBox):cadadr(bBox) (caadr(vBox) - OFFSET):cadadr(bBox) (caadr(vBox) - OFFSET):cadar(bBox))


    Originally posted in cdnusers.org by bthayer
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • archive
    archive over 18 years ago

    Is there a place where we ca find all function like CCSgetBBox "gathered". I mean I'm looking for a function like getAllPMOS(). I might develop it but if it allready exist, where it is ? Can't find it on source link.
    thanks for any ideas.
    Regards,


    Originally posted in cdnusers.org by ebecheto
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • archive
    archive over 18 years ago

    Hi ebecheto,

    Yes there is such a place. Go to sourcelink.cadence.com & register.

    -Bill


    Originally posted in cdnusers.org by bthayer
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • archive
    archive over 18 years ago

    Well, I said : "I can't find it on sourcelink"
    What I miss is a kind of : "related function" in each sourcelink "Solution"
    I mean a search on "CCSgetBBox" gives 1 result
    a search on "CCS*" gives 6 result but ont even the one above ... so i fact I am complaining about sourcelink,

    But I admit that sourcelink is somehow usefull.
    Regards,


    Originally posted in cdnusers.org by ebecheto
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information