Guild icon
wafer.space Community
ℹ️ - Information / general / featherlane-PEX
Between 2026-06-30 11:59 p.m. and 2026-08-01 12:00 a.m.
Avatar
the big one is up to "Extracting VSS" now.
Avatar
yeah so that's definitely not the linear solver I want to use with that behavior.... I think ?
1:25 a.m.
Avatar
Avatar
namibj
Click to see attachment 🖼️
@Tholin results
1:42 a.m.
If you have amendments to this file, now's the time, to get results before sleepy time.
Avatar
on second thought, I'm gonna take the scarce hours of cold to sleep sooner than later, not gonna be that long anyways, and afterwards the big circuit should maybe be done.
1:54 a.m.
(done extracting, that is)
Avatar
@Tholin errrrr, this got 87 mA?
5:20 p.m.
I wonder if its because the latches have initialized into a metastable state
5:21 p.m.
87 mA doesn’t feel like a short
5:22 p.m.
I wish I could simulate a few clock cycles
5:22 p.m.
The best thing I can suggest for a DC analysis is pulling clk_n high
Avatar
Avatar
Tholin
I wonder if its because the latches have initialized into a metastable state
it should be solving until they stabilize; I'm running with the other solver from earlier again to check though.
5:24 p.m.
Feel free to compare the voltages between the two .prn files to see if they may be meaningfully different.
Avatar
Avatar
Tholin
I wish I could simulate a few clock cycles
Feel free to edit this into a smol testbench for that; think about MINTIMESTEPSBP and the tolerance tunables please to dial in a minimum of actually to-be-taken timesteps that would still be expected to give meaningful results. A full nonlin solve there didn't take thaaaat long: ***** Solution Summary ***** Number Successful Steps Taken: 1 Number Failed Steps Attempted: 0 Number Jacobians Evaluated: 362 Number Linear Solves: 362 Number Failed Linear Solves: 0 Number Linear Solver Iterations: 70583 Number Residual Evaluations: 373 Number Nonlinear Convergence Failures: 0 Total Residual Load Time: 78.2002 seconds Total Jacobian Load Time: 61.0558 seconds Total Linear Solution Time: 1952.14 seconds ***** Total Simulation Solvers Run Time: 2152.39 seconds ***** Total Elapsed Run Time: 2247.1 seconds *****
Avatar
I’m not sure if there are any syntax differences with xyce
5:34 p.m.
But, in theory, all you need to do is update the beginning of the input stimulus section to *** 5. INPUT STIMULUS *** V_clk clk VSS PULSE( 0 3.3 0 0.1ns 0.1ns 50ns 200ns ) V_clk_n clk_n VSS PULSE( 0 3.3 100ns 0.1ns 0.1ns 50ns 200ns ) V_rst_n rst_n VSS PULSE( 0 3.3 375ns 0.1ns 0.1ns 5us 6us ) V_rst_override_n rst_override_n VSS PULSE( 0 3.3 375ns 0.1ns 0.1ns 5us 6us ) And then run that for a few clock cycles and observe the outputs. This is set up for a 5us long run.
5:35 p.m.
I tried this in ngspice and it just never even started
Avatar
Avatar
Tholin
I’m not sure if there are any syntax differences with xyce
feel free to check; notably btw. I've thought you might want to use .option timeint ERROPTION=1 to explicitly not use the classic SPICE "local truncation error", but instead just adjust step size based on how many newton (or whatever nonlinear solver was selected) iterations it took to turn the predictor's (the trapezoidal/backwards-euler/2nd-order-gear time integration forward-model) estimate of the solution variable's values (e.g. node voltages and a bunch of (internal) port currents) into a new solution that is newly compliant with all the non-linear device interaction models up to the configured tolerances (absolute, relative, and what the scale reference is for "relative"; sadly AFAIK there's no straight-forward way to distinguish between current and voltage quantities for that config option, which would be IMO fairly relevant for abstol as e.g. tolerance better than like a single millivolt is probably not required for this type of circuit if one wants to check against DOA and isn't trying to do fancy calibration stuff; also not to forget update-norm and unweighted l2-norm of the residual which are also tunables for deeming the nonlinear solve "sufficciently converged").
Avatar
Avatar
Tholin
But, in theory, all you need to do is update the beginning of the input stimulus section to *** 5. INPUT STIMULUS *** V_clk clk VSS PULSE( 0 3.3 0 0.1ns 0.1ns 50ns 200ns ) V_clk_n clk_n VSS PULSE( 0 3.3 100ns 0.1ns 0.1ns 50ns 200ns ) V_rst_n rst_n VSS PULSE( 0 3.3 375ns 0.1ns 0.1ns 5us 6us ) V_rst_override_n rst_override_n VSS PULSE( 0 3.3 375ns 0.1ns 0.1ns 5us 6us ) And then run that for a few clock cycles and observe the outputs. This is set up for a 5us long run.
I can mint you a rawfile that you can use with the xschem-integrated viewer. I'd suggest you take a single standard cell from your library, let me run it through the PEX extractor script, and let me hand you a starter-pack Xyce testbench for it (half machine-generated per your wishes as to the excitation pattern for it, but then substantially manually checked by me for not being broken and actually tested), if you want. Also, if you can generate me a .gds flattened as much as this and with no stray labels littered around, you are then allowed to have labels on internal nets of interest or I'd guess there would be some way from the LVS machinery to slap semantically meaningful labels on nets and/or devices. I'll see to get a .nodeset-based initial conditions dump next run which should make it much faster to jump in and test things.
Avatar
Hold on, I’m trying again with ngspice
8:04 p.m.
I flattened the layout in magic before extracting it, maybe that helps
Avatar
It did it!
8:24 p.m.
And oh man am I happy I tested this because there is a breaking bug in the RTL that I see now
Avatar
I also see the 87mA static current consumption. Not sure what’s up with that.
Avatar
I ran a simulation on a LibreLane generated layout. Less standard cells in it, but still had a ~9mA static current consumption.
9:26 p.m.
Possible that its an issue with my SCL? Or the 3.3V FETs have that much of a leakage current?
9:27 p.m.
Because it roughly scales up to the 87mA consumption by standard cell count
Avatar
Cursed spice deck just containing 3000 buff_16s with the input tied low seems to suggest leakage
9:52 p.m.
Whoa! what the hell? It freaks the hell out if I instantiate 4000 fillcap cells!
9:52 p.m.
I guess its the inrush?
9:52 p.m.
It crashed, btw
9:53 p.m.
It was supposed to run for much longer
9:54 p.m.
I also noticed that well tap cells extract into.... nothing. Like, empty spice file. So, what exactly is energizing the wells during these simulations, then?
Avatar
I don’t think I have the time to figure out why the static current consumption on my SCL is so high
10:16 p.m.
I’m just going to have to tape out and pray
Avatar
. The P() and W() wildcards are supported for analysis modes (TRAN and DC) that support power calculations.
YAY
Avatar
Not sure how to approach this. If it is one specific cell that is at fault, it might be somewhat difficult to find.
Avatar
Avatar
Tholin
I don’t think I have the time to figure out why the static current consumption on my SCL is so high
I'm back on the settings that did the fast results.
Avatar
I’m going to leave my computer running overnight to see if I can get a analysis done on a extract with parasitics
Avatar
Avatar
Tholin
Not sure how to approach this. If it is one specific cell that is at fault, it might be somewhat difficult to find.
Going by earlier processing speed, we should have info in about 30~40 minutes which extracted device(s) are to blame for the power dissipation.
10:48 p.m.
I'm not doing transient here btw.
Avatar
Avatar
Tholin
I’m going to leave my computer running overnight to see if I can get a analysis done on a extract with parasitics
Can you share the testbench spice?
Avatar
Avatar
Tholin
I ran a simulation on a LibreLane generated layout. Less standard cells in it, but still had a ~9mA static current consumption.
And/or that for this mentioned smaller/"more minimized" SCL-bug-reproducer?
Avatar
I just extracted with extract all;ext2sim labels on;ext2sim;extresist tolerance 10;extresist;ext2spice lvs;ext2spice cthresh 0;ext2spice extresist on;ext2spice;
10:53 p.m.
This seems to pull 7.5mA static
10:56 p.m.
Inputs low
Avatar
I decided to be funny and re-run the flow of secret_message with all logic cells disabled in my SCL except NAND and NOT
11:20 p.m.
And that made it WORSE
11:20 p.m.
7.5mA static to 12mA static
11:20 p.m.
Corresponding roughly to the increase in the number of transistors
11:20 p.m.
This feels like leakage
Avatar
Avatar
Tholin
This feels like leakage
I mean, I guess?
11:22 p.m.
And if that's the case, this sounds like runaway self-heating waiting to happen.
Avatar
As I said, I’m going to have to just tape out and hope
Avatar
re-running with the other possibly-easier-to-digest print formats active for the power print line
11:23 p.m.
(using the initial conditions file created)
Avatar
I did an extraction with resistors and it now idles at 1.9mA instead of 12mA
Avatar
Avatar
Tholin
I did an extraction with resistors and it now idles at 1.9mA instead of 12mA
"with resistors"? as opposed to including capacitors, or what?
1:04 a.m.
one of the "powers" should be fairly easy to wrangle into a comfy table
Avatar
Oh, I’ve been doing only transistors so far
Avatar
oh, I've been doing full PEX
1:07 a.m.
***** Device Count Summary ... C level 1 (Capacitor) 280984 D level 1,2 (Diode) 9694 M level 14 (BSIM4) 44848 R level 1 (Resistor) 267528 V level 1 (Independent Voltage Source) 22 --------------------------------------------- Total Devices 603076 ***** Setting up matrix structure... ***** Number of Unknowns = 292543 ***** Initializing... Analyzed Singleton Problem: --------------------------- Singletons Detected! Num Singletons: 44 --------------------------- ConstructedSingleton Problem: --------------------------- RatioOfDimensions: 0.99985 RatioOfNonzeros: 0.765899 --------------------------- ZOLTAN Load balancing method = 10 (HYPERGRAPH) ***** Solution Summary ***** Number Successful Steps Taken: 1 Number Failed Steps Attempted: 0 Number Jacobians Evaluated: 558 Number Linear Solves: 558 Number Failed Linear Solves: 0 Number Linear Solver Iterations: 69386 Number Residual Evaluations: 571 Number Nonlinear Convergence Failures: 0 Total Residual Load Time: 103.587 seconds Total Jacobian Load Time: 104.901 seconds Total Linear Solution Time: 2080.07 seconds ***** Total Simulation Solvers Run Time: 2370.69 seconds ***** Total Elapsed Run Time: 2547.76 seconds ***** ***** End of Xyce(TM) Simulation *****
1:08 a.m.
(turns out, loading from .nodeset's doesn't make it faster; it takes almost twice as long instead... maybe only +50% time)
Exported 67 message(s)
Timezone: UTC+0