I have the same issue as Carl here: <https://skywa...
# xyce
t
I have the same issue as Carl here: https://skywater-pdk.slack.com/archives/C01TLV579C5/p1643427056467499 Xyce as a problem with the original hspice: Xpch_inv enable_bar i_enable_hv vdd_hv vdd_hv sky130_fd_pr__pfet_g5v0d10v5 w = 50 l = 1 nf = 4 ad = ' int((nf + 1)/2) * W/nf * 0.29 ' as = ' int((nf + 2)/2) * W/nf * 0.29 ' pd = ' 2 * int((nf + 1)/2) * (W/nf + 0.29) ' ps = ' 2 * int((nf + 2)/2) * (W/nf + 0.29) ' nrd = ' 0.29 / W ' nrs = ' 0.29 / W ' sa = 0 sb = 0 sd = 0 And the version that came out of Xdm: Xpch_inv enable_bar i_enable_hv vdd_hv vdd_hv sky130_fd_pr__pfet_g5v0d10v5 + PARAMS: W=50 L=1 NF=4 AD=' int((nf + 1)/2) * W/nf * 0.29 ' AS=' int((nf + 2)/2) * W/nf * 0.29 ' + PD=' 2 * int((nf + 1)/2) * (W/nf + 0.29) ' PS=' 2 * int((nf + 2)/2) * (W/nf + 0.29) ' + NRD=' 0.29 / W ' NRS=' 0.29 / W ' SA=0 SB=0 SD=0 '-hspice-ext all' did not help. Is xyce not able to use device parameters in expressions the way hspice can?
e
@User Thanks for the information. I would have predicted that Xyce could handle this, but possibly there is a bug I need to track down. I’m a bit swamped at the moment, but I’ll look at this as soon as I can.
@User I wanted to follow up on this. You are correct, Xyce doesn’t currently handle handling inline parameters in the subcircuit line. I have entered an issue in our bug tracker about this. In the meantime, there is a workaround.
t
I actually have some spice parsing and re-writing tools, and I've been able to modify the netlist before using Xyce.
e
Great! I am guessing you are doing the thing I was about to recommend. Basically, if you add a .param statement inside the subcircuit it can handle this.
So if you have: Xpch_inv enable_bar i_enable_hv vdd_hv vdd_hv sky130_fd_pr__pfet_g5v0d10v5 + PARAMS: W=50 L=1 NF=4 AD=' int((nf + 1)/2) * W/nf * 0.29 ' AS=' int((nf + 2)/2) * W/nf * 0.29 '
change it to:
Xpch_inv enable_bar i_enable_hv vdd_hv vdd_hv sky130_fd_pr__pfet_g5v0d10v5 + PARAMS: W=50 L=1 NF=4 AD=' int((nf + 1)/2) * W/nf * 0.29 ' AS=' int((nf + 2)/2) * W/nf * 0.29 ' .param AD=' int((nf + 1)/2) * W/nf * 0.29 ' .param AS=' int((nf + 2)/2) * W/nf * 0.29 '
The .param statements inside the subcircuit will take care of it.
t
Yeah, that makes sense
Is there a better place for reporting bugs and requesting features? Now that I've been using Xyce I've run into a few things that are annoying
e
But, this shouldn’t be necessary, so I’ve entered an issue about it, like I mentioned. It should actually be easy to fix. All the expressions inside the subcircuit are able to find everything on the PARAMS: line. I just have to make it so that expressions on the PARAMS: line can refer to each other.
There are a few places. You could enter an issue at our public github page: https://github.com/Xyce/Xyce/issues
t
ok, I'll add them there
👍 1
e
Or you could ask about it in our google group: https://groups.google.com/g/xyce-users
The github issue tracker would be fine. Thanks!
t
@User: I thought to look today, and I didn't see any issue posted on the github issue tracker, so I went ahead and created one. On a side note: would you like me to formally log an issue about the lack of level 3 diode model support?
e
@User thanks; I have entered the level=3 diode issue into our internal issue tracker but I don’t mind (unlike one of my colleagues, lol ) having a redundant one in the external github tracker.