Hi, are the symbols in xschem "cap_mim_m3_2" and "...
# sky130
c
Hi, are the symbols in xschem "cap_mim_m3_2" and "cap_mim_m3_1" (installed from OpenPDK from the sky130_fd_pr library) the same as the ones shown from https://skywater-pdk.readthedocs.io/en/main/rules/device-details.html#details? It does not show the capacitance like as in the online document and does not show the parasitic resistances or capacitance value as mentioned (in the spice or xschem). Is there a way to show that in xschem or these are not the same devices?
t
You should ask in the #xschem channel. Printing the capacitance value is a pretty simple addition, although the symbol definition will need to know the area and perimeter capacitance values.
πŸ‘ 1
c
@User So they are the same component it is only an xschem display value? I was worried because the document said the capacitor was actually a circuit consisting of resistors and capacitors, but I was unable to descend into the subckt
t
The model may be a subcircuit consisting of resistors and capacitors representing the details of the resistance of the via connections to the top plate and the MiM capacitance itself. But the xschem symbol just intantiates the subcircuit model, nothing else. Since this is a semiconductor capacitor, the only properties passed to the SPICE model are width and length. Any capacitance shown in schematic or layout is only for reference. The circuit simulation will behave according to the actual circuit capacitance, to the extent that the model is correct and the extraction has correctly computed parasitics.
🌍 1
c
Thanks for the clarification!
h
You can use Magic Device generator to check and calculate the capacitance with W and L as inputs
s
@User Adding an expression printing the (approximate) capacitance value (using area and perimeter specific capacitance values as @User said) from the geometrical values W, L is not difficult. In many cases however you pass parameters, not actual numbers to W and L, and these might be resolved 1/2/3/4/more hierarchy levels up. In this case displaying the actual capacitance is difficult. Another issue i see is if a process update is done (for example change oxide thickness) capacitance/per area changes and the change must be reflected in the symbol.
πŸ‘ 1
t
@User: I would expect that the best method is simply to print the value as it is for whatever level of hierarchy is being viewed. Wouldn't that be the case with the W and L values, too, or are they printed as expressions if they are parameterized? Process updates shouldn't be a big concern; it is highly unlikely that device properties are going to change. If the foundry did that, everyone would go berzerk, as it would break all backwards compatibility with existing designs.
s
@User suppose you have a schematic
a.sch
, in this schematic a component
b.sym
is placed and instance attributes define
WWW=10 LLL=5
. Descending into
b.sch
it contains an instance of
c.sym
with attributes
WW=WWW LL=LLL
, finally
c.sch
instantiates a capacitor and assigns
W=WW and L=LL
. The capacitor symbol has texts like
W=@W
and
L=@L
, these expressions replace
@W
and
@L
with values given immediately above in instance attributes, so it will display as
W=WW
and
L=LL
. Showing the actual value of capacitance once one descends from
a.sch
all the way down to
c.sch
requires xschem to recursively evaluate the parent instance attributes all the way to top level. This is a very time consuming operation. If you open
b.sch
as top level schematic there is no numerical evaluation for the parameters at all. A possible solution is to print the capacitance value if there are numerical values in the capacitor instance attributes, otherwise print the symbolic expression.
t
@User: I think that's more or less what I implemented in xcircuit, except that if you descend from the top level it will actually trace the value back from the top level. But if it only finds a symbolic expression that's what it will print. Regardless, what you propose sounds like a sensible implementation.
πŸ‘ 1