Forum Replies Created
-
AuthorPosts
-
riyaz058
ParticipantThanks Kieth,
I think I need to go ahead a create a python script for MPPs, And I doubt I would be able to add both Cadence and Glade tech-files together right?
Regards…
riyaz058
ParticipantPlease find the code that is present in the techfile that I am using, But whenever I try to run the create MPP command from drop down menu i get error as " No MPP rules found"
lxMPPTemplates(
; ( name [masterPath] [offsetSubpaths] [encSubPaths] [subRects] )
;
; masterPath:
; (layer [width] [choppable] [endType] [beginExt] [endExt] [justify] [offset]
; [connectivity])
;
; offsetSubpaths:
; (layer [width] [choppable] [separation] [justification] [begOffset] [endOffset]
; [connectivity])
;
; encSubPaths:
; (layer [enclosure] [choppable] [separation] [begOffset] [endOffset]
; [connectivity])
;
; subRects:
; (layer [width] [length] [choppable] [separation] [justification] [space] [begOffset] [endOffset] [gap]
; [connectivity] [beginSegOffset] [endSegOffset])
;
; connectivity:
; ([I/O type] [pin] [accDir] [dispPinName] [height] [ layer]
; [layer] [justification] [font] [textOptions] [orientation]
; [refHandle] [offset])
;
; (
)
; (PRing
; (("PIMP" "drawing") 0.44 nil)
; ((("MET1" "drawing") 0.23 t nil nil 0.0 0.0)
; (("PWELL" "drawing") 0.86 nil nil nil 0.21 0.21)
; )
; nil
; ((("CONT" "drawing") 0.22 0.22 t nil nil 0.25 -0.2 -0.2)
; )
; )
; (WellRing
; (("NIMP" "drawing") 0.44 nil)
; ((("MET1" "drawing") 0.23 t nil nil 0.0 0.0)
; (("NWELL" "drawing") 0.86 nil nil nil 0.21 0.21)
; )
; nil
; ((("CONT" "drawing") 0.22 0.22 t nil nil 0.25 -0.2 -0.2)
; )
; )
) ;lxMPPTemplates) ; lxRules
Please let me know why I am getting error for MPP creation even after my techfile.tf is having the above code
riyaz058
ParticipantThank You Kieth,
Please let me know if my understanding is correct from the previous code you sent i.e
1. I need to create a python script(with the syntax you pointed in previous post) for MPPs of my choice like the way we do for PCells. Is it correct?
2. And when i load this python script in the CIW of glade, I will be able to create the MPPsPlease let me know if my understanding is correct.
Regards,
Riyazriyaz058
ParticipantHi Kieth
Thanks for the fast reply, But I didn't get you on this.When I go to the Create MPP option i glade I see 2 option "nguard" and "pguard". And each of these maybe composed of say for example (nguard = Nwell + Ndiff + Met1 + Cont) Similarly could be "pguard". So My question here is, whether is there a python code or something which is present and runs in background to create the nguard or pguard. I would like to have the sample code for the "nguard" or "pguard" which is already present.
Regards,
Riyazriyaz058
ParticipantHi Kieth,
I wanted to make different MPPs of my own can you share with me the sample code for MPPs that you might have created in the "example" library.
Regards,
Riyazriyaz058
ParticipantThanks for the response.
And the check is for absolute vlaues right?
Regards,
Riyazriyaz058
ParticipantHi,
Thanks a lot for creating the function. Coming to the query.
1. Yes only allowed default enclosure is 10nm (i.e absolute value). Also the (28, 2) & (30, 0) are absolute values (not minimum allowed).
Also, I have a query on max_num_enc1 : Maximum number of edges that can have a smaller enclosure.
Consider the following scenario: Met1 enclosure of Via1 on two sides is 28nm and opposite two sides 2 nm. In this case if the two sides are having 28nm and other two sides 2nm it is mandatory for the edges be be opposite to each other (say 28 nm on TOP & BOTTOM and 2nm on LEFT and RIGHT edges and vice versa).
So my question here is max_num_encl1 might allow a pass if 28 nm is on TOP and RIGHT and 2nm on BOTTOM and LEFT this case should flag as fail.In my previos post I had mentioned this:
Ans 1. Actually in case of such scenarios i.e. 28nm on two sides and 2nm on the opposite two sides. It's mandatory that at least two or more sides should have 28nm i.e the larger number but it's not allowed for the smaller number i.e. 2nm to be on more than two sides(We cannot have smaller number say 2nm on more than two sides)
This is a generic case. Why I'm quoting this here is because max_num_enc1 doesn't consider the mandatory condition that if max_num_enc1 is set to "2" then the checks should be done for opposite edges and not adjacent ones. If max_num_enc1 is set to "1" then its irrelevant on which edge the enclosureis 2nmBut for the geomAllowedEncs() we want this check to check for absolute values and not minimum criteria.
Hope my queries are clear and rather not confusing.
Thanks,
Riyazriyaz058
ParticipantPlease find my answers accordingly.
Ans 1. Actually in case of such scenarios i.e. 28nm on two sides and 2nm on the opposite two sides. It's mandatory that at least two or more sides should have 28nm i.e the larger number but it's not allowed for the smaller number i.e. 2nm to be on more than two sides(We cannot have smaller number say 2nm on more than two sides)
Ans 2. Yes as you mentioned there's 100% possibility where we have 1 default rule (Say 10 nm all sides being the default) and 1 or more other rules (Say if we maintain 28nm enclosure on two sides then we are allowed for 2nm on the other two opposite sides.). The chances of not having a default rule are very less. And we can always have 1 or more other rules.
And yes such cases we have encountered only in the enclosure checks.
I'll send in some sample layout test cases tomorrow as attached images.
riyaz058
ParticipantHi, Please find the rule definition below.
Rule : Allowed enclosures of V0 by M1[A|B] "[28, 2, 28, 2], [32, 0, 32, 0], [10, 10, 10, 10]"Allowed enclosures of V0 by M1 :
1. [28, 2, 28, 2]
2. [32, 0, 32, 0]
3. [10, 10, 10, 10]".As you can see in the above example rule definition. Only 3 sets of enclosures are allowed for metal1 enclosure of via0.
1. In this case, the allowed enclosure is 28nm on 2 sides and 2 nm on 2 opposite sides.
2. The second case, the allowed enclosure is 32nm on 2 sides and 0 nm on 2 opposite sides.
3. Whereas in the final case an exact enclosure of 10nm on all sides is allowed.So only the above 3 cases of the enclosure are allowed and all other values apart from these are to be flagged as the error.
riyaz058
ParticipantHi,
As we already have a function like geomAllowedWidths(). Which allows me for performing exact width value checks. Can we have something similar for spacing and enclosure?
Say
geomAllowedSpaces().
geomAllowedSapce2().
geomAllowedEnclose().
geomAllowedEmclose2.Thanks…
riyaz058
ParticipantOn the similar note do we have get90() and get45() like functions…? Maybe even such functions would be definitely of great help in future.
Thanks…
riyaz058
ParticipantYes that's exactly what we are looking for and really appreciate your prompt response.
Thanks
riyaz058
ParticipantHi,
Thank you for response. that flag option was present . We were using old version. sorry for bothering you.Regards
riyazriyaz058
ParticipantHi,
For DRC deck coding is there any command to code the rules like.. NWELL must be Orthogonal . if It is not present is it possible to add some functions to code such rulesRegards
riyazriyaz058
ParticipantHi,
As of now we don't have flags in geomAllowedWidths() command to specify the width check in a particular direction as we have options in geomWidth(layer,rule,int flags, const char, *message). Could you please add that option..
Regardsriyaz
-
AuthorPosts