Home > Community > Forums > Custom IC SKILL > does leChopShape() work?

Email

* Required Fields

Recipients email * (separate multiple addresses with commas)

Your name *

Your email *

Message *

Contact Us

* Required Fields
First Name *

Last Name *

Email *

Company / Institution *

Comments: *

 does leChopShape() work? 

Last post Thu, Mar 1 2007 11:09 AM by archive. 5 replies.
Started by archive 01 Mar 2007 11:09 AM. Topic has 5 replies and 2493 views
Page 1 of 1 (6 items)
Sort Posts:
  • Thu, Mar 1 2007 11:09 AM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    does leChopShape() work? Reply

    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
    • Post Points: 0
  • Thu, Mar 1 2007 11:14 AM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: does leChopShape() work? Reply

    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
    • Post Points: 0
  • Thu, Mar 1 2007 12:18 PM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: does leChopShape() work? Reply

    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
    • Post Points: 0
  • Tue, Jun 12 2007 10:44 AM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: does leChopShape() work? Reply

    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
    • Post Points: 0
  • Tue, Jun 12 2007 10:54 AM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: does leChopShape() work? Reply

    Hi ebecheto,

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

    -Bill


    Originally posted in cdnusers.org by bthayer
    • Post Points: 0
  • Tue, Jun 12 2007 11:13 AM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: does leChopShape() work? Reply

    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
    • Post Points: 0
Page 1 of 1 (6 items)
Sort Posts:
Started by archive at 01 Mar 2007 11:09 AM. Topic has 5 replies.