Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[SOLVED] 3 question regarding SKILL (pins, Layers, mwell)

Status
Not open for further replies.

farhan89

Junior Member level 3
Joined
Jul 29, 2011
Messages
26
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,517
Hey ppl,

I have started learning SKILL by my self and I have three questions regarding my project.

I converted symbol in to schematic (Layout XL: connectivity->Generate->copy all from source). The layout has instance of pcell which is nfet without nwell. I wanted to place nwell somwhere near this instance, create pin for the nwell and then labeling of Drain(d), Gate(g), source(s) and Bulk(b) on their respective layer and updating this in cell properties. I got some help from cadence support but still there are lot of problems with the layout. This is my modified code:
Code:
procedure(CCFaddInstPinLabels(@optional (cellView geGetEditCellView()))
let( (transform pinCenter)
  foreach( inst cellView~>instances
    transform=inst~>transform
    foreach( instTerm inst~>instTerms
    if(instTerm~>name == "b"
    then
    	tf=techGetTechFile(cellView)
	viaDef=techFindViaDefByName(tf "RXNWCAM1")
	b_db = dbCreateVia(cellView viaDef 0.2:0.4 "R0")
	b_pin = dbCreatePin(instTerm~>net b_db "b") ;;bulk pin db
	instTerm = b_pin ;;updates the variable not cell properties
	
    );if
    	
      foreach( pin instTerm~>term~>pins
          
        pinCenter=centerBox(pin~>fig~>bBox)
	print(pinCenter)
        dbCreateLabel(cellView list("NW" "label") ;;alllabels on NW layer
          if(pin~>name == "b"
	  then
	  dbTransformPoint(pinCenter list(0:0 "R0")) ;No transformation for Bulk
	  else
	  dbTransformPoint(pinCenter transform)
	  );if
          strcat("n" instTerm~>name)
          "centerCenter"
          "R0" "stick"
	  0.0625
        ); dbCreateLabel
      ); foreach pin
    ); foreach instance terminal
  ); foreach instance
);let
); procedure CCFaddInstPinLabels

Questions:

[SOLVED] 1. How can I place nwell close to nfet? currently the co-ordinates are fixed for NWellI (dbCreateVia(cellView viaDef 0.2:0.4 "R0") get the values fro nfet co-ordinates using transform=inst~>transform, I can usel dbConcatTransform but what would be the second list in this function ?

I got the instance~>transform value and then separated the co-ordinates and then by using dbConcatTransform function I got nwell near nfet.

2. in my code all the labeling will be on "NW" layer, how can I get the respective layer of terminals, like if the drain is on "M1" make label on "M1". Any function to read the pin layer ?

3. How can I update the properties for bulk in Cellview ? when I reterive cellView~>instances~>instTerms~>term~>pins it returns:
(((db:0x16ddb39b) (db:0x16ddb39d db:0x16ddb39c) (db:0x16ddb39a) nil))
since no pins for bulk so it's value is nil

I tried to update the value using
cellView~>instances~>instTerms~>term~>pins = subst(b_pin '(nil) cellView~>instances~>instTerms~>term~>pins) ;; update bulk pin db in cellview properties
but it's not workiing, I tried dbSetq, but I it's not accepting input.

NOTE: The design is not from me, I am just wrtiting code for nwell and labeling. Sorry for my bad explaination , and pardon if I am in wrong forum

Thanks
 
Last edited:

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top