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:
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
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: