-
Notifications
You must be signed in to change notification settings - Fork 120
Xschem symbols unified to provide instance name without "spiceprefix". #607
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: dev
Are you sure you want to change the base?
Conversation
Signed-off-by: KrzysztofHerman <herman@ihp-microelectronics.com>
|
@KrzysztofHerman Could you help me understand this change? My understanding is that klayout expects device names to begin the the standard spice prefix for the respective models. However, the ngspice models are defined as subcircuits, so In sky130, the magic extraction rules were designed to extract as |
|
@KrzysztofHerman @RTimothyEdwards @FaragElsayed2 We attempted to run LVS against the magic extracted netlist using the We ran into a problem with the 3 terminal capacitor/resistor devices and 4 terminal bipolar devices. The The cdl (Calibre) format for 3 terminal resistors/capacitors adds the third terminal as a comment I don't know if magic can handle this or not. Klayout rules could be modified to process this, I think. Is it iHP's intention to configure xschem to produce an LVS netlist that will pass Klayout LVS without modification? If that is the case, we can create scripts that will modify that netlist to pass magic/netgen LVS. Or do you want to create a netlist that will pass all LVS - Klayout, magic/netgen, Calibre, etc.? |
d-m-bailey
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@sergeiandreyev @KrzysztofHerman
I think that the spice format for LVS using klayout and netgen is different.
Either the netlist will be created for klayout and converted to netgen or created for netgen and converted to klayout.
Which does iHP want to support natively?
| G {} | ||
| K {type=pad | ||
| lvs_format="@spiceprefix@name @pinlist @model" | ||
| lvs_format="@name @pinlist @model" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What device type are bondpads?
If extracted as black boxes the prefix should be X.
If extracted as capacitors the prefix should be C.
| G {} | ||
| K {type=diode | ||
| lvs_format="@spiceprefix@name @pinlist @model l=@l w=@w" | ||
| lvs_format="@name @pinlist @model l=@l w=@w" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What device type are dantenna?
If extracted as black boxes the prefix should be X.
If extracted as diodes the prefix should be D.
| G {} | ||
| K {type=diode | ||
| lvs_format="@spiceprefix@name @pinlist @model m=@m" | ||
| lvs_format="@name @pinlist @model m=@m" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If extracted as black boxes the prefix should be X.
If extracted as diodes the prefix should be D.
| G {} | ||
| K {type=diode | ||
| lvs_format="@spiceprefix@name @pinlist @model m=@m" | ||
| lvs_format="@name @pinlist @model m=@m" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If extracted as black boxes the prefix should be X.
If extracted as diodes the prefix should be D.
| G {} | ||
| K {type=diode | ||
| lvs_format="@spiceprefix@name @pinlist @model m=@m" | ||
| lvs_format="@name @pinlist @model m=@m" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If extracted as black boxes the prefix should be X.
If extracted as diodes the prefix should be D.
| G {} | ||
| K {type=diode | ||
| lvs_format="@spiceprefix@name @pinlist @model m=@m" | ||
| lvs_format="@name @pinlist @model m=@m" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If extracted as black boxes the prefix should be X.
If extracted as diodes the prefix should be D.
| G {} | ||
| K {type=diode | ||
| lvs_format="@spiceprefix@name @pinlist @model l=@l w=@w" | ||
| lvs_format="@name @pinlist @model l=@l w=@w" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If extracted as black boxes the prefix should be X.
If extracted as diodes the prefix should be D.
| G {} | ||
| K {type=esd | ||
| lvs_format="@spiceprefix@name @pinlist @model m=@m" | ||
| lvs_format="@name @pinlist @model m=@m" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If extracted as black boxes the prefix should be X.
If extracted as diodes the prefix should be D.
If extracted as mosfet the prefix should be M.
| G {} | ||
| K {type=vertical_npn | ||
| lvs_format="@spiceprefix@name @pinlist @model le=900e-9 we=70.0n m=@Nx" | ||
| lvs_format="@name @pinlist @model le=900e-9 we=70.0n m=@Nx" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If extracted as black boxes the prefix should be X.
If extracted as bipolar the prefix should be Q.
| G {} | ||
| K {type=vertical_npn | ||
| lvs_format="@spiceprefix@name @pinlist @model le=900e-9 we=70.0n m=@Nx" | ||
| lvs_format="@name @pinlist @model le=900e-9 we=70.0n m=@Nx" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If extracted as black boxes the prefix should be X.
If extracted as bipolar the prefix should be Q.
|
Magic can be patched to handle the unfortunate use of CDLisms like 3-terminal capacitors and resistors that violate SPICE syntax, but I really strongly disapprove of the industry standard that thinks it makes sense to extract unsimulatable netlists for no apparent good reason. |
|
@RTimothyEdwards When you say the industry standard CDLism of 3 terminal capacitors are you referring to this syntax or an actual 3 terminal instance? Simulation (ngspice) uses a subckt model which is totally doable in magic, right? I think we need to figure out how to handle @sergeiandreyev @KrzysztofHerman |
|
@d-m-bailey : Maybe I should have said "industry standards"? Are both commonly used? I mainly intended to mean anything that is a syntax introduced by commercial tools that makes it incompatible with, say, ngspice or Xyce, or otherwise presents something as appearing to be a SPICE low-level component when it isn't. |
|
@RTimothyEdwards the only industry standard that I've seem is the form that should work with ngspice or xyce. CVC handles the converted Which has everything after the first Creating a custom reader for klayout that handles ill-defined devices is leading to inconsistencies across tools, I think. Custom devices might be better handled as X devices, but I haven't seen that in klayout yet. |
Unifies
xschemsymbols not to havespiceprefix. It cancels #605.It also cleans up
lvs_formatentry not to havespiceprefix.