Robin Tsang
03/14/2024, 2:53 AMTim Edwards
03/14/2024, 1:02 PM** sch_path: /home/tim/gits/sky130_ef_ip__rdac3v_8bit/cace/voltage_output.sch
**.subckt voltage_output
VVDAC7 b7 VSUB DC 0.0
VVDAC1 b1 VSUB DC 0.0
VVDAC2 b2 VSUB DC 0.0
VVDAC3 b3 VSUB DC 0.0
VVDAC4 b4 VSUB DC 0.0
VVDAC5 b5 VSUB DC 0.0
VVDAC6 b6 VSUB DC 0.0
VVDAC0 b0 VSUB DC 0.0
VVlow Vlow VSUB DC 0
VVhigh Vhigh VSUB DC 3.3
Vena ena VSUB DC 1.8
Vvss vss VSUB DC 0
Rout out VSUB 100000000.0 m=1
Cout out VSUB 1e-13 m=1
Vdvss dvss VSUB DC 0
Vvdd vdd VSUB DC 3.3
Vdvdd dvdd VSUB DC 1.8
RSUB VSUB GND 0.01 m=1
XDUT dvdd vss dvss vdd b0 Vhigh b1 b2 b3 out b4 b5 ena b6 b7 Vlow sky130_ef_ip__rdac3v_8bit
**** begin user architecture code
.control
op
set wr_singlescale
wrdata ngspice/INL_1.data V(out)
quit
.endc
* CACE gensim simulation file INL_1
* Generated by CACE gensim, Efabless Corporation (c) 2023
* Simple output voltage measurement for a DAC (DC operating point)
.include ./netlist/schematic/sky130_ef_ip__rdac3v_8bit.spice
.include /usr/local/share/pdk/sky130A/libs.ref/sky130_fd_sc_hvl/spice/sky130_fd_sc_hvl.spice
.lib /usr/local/share/pdk/sky130A/libs.tech/combined/sky130.lib.spice tt
.option SEED=12345
.option TEMP=27
* Flag unsafe operating conditions (exceeds models' specified limits)
.option warn=1
**** end user architecture code
**.ends
.GLOBAL GND
.end
Robin Tsang
03/14/2024, 4:28 PMRobin Tsang
03/14/2024, 4:30 PMgit clone <https://github.com/RTimothyEdwards/sky130_ef_ip__rdac3v_8bit>
Cloning into 'sky130_ef_ip__rdac3v_8bit'...
remote: Enumerating objects: 109, done.
remote: Counting objects: 100% (109/109), done.
remote: Compressing objects: 100% (71/71), done.
remote: Total 109 (delta 49), reused 93 (delta 33), pack-reused 0
Receiving objects: 100% (109/109), 321.73 KiB | 1.67 MiB/s, done.
Resolving deltas: 100% (49/49), done.
rtsang@ajacci9:~/chipalooza$ cd sky130_ef_ip__rdac3v_8bit/
rtsang@ajacci9:~/chipalooza/sky130_ef_ip__rdac3v_8bit$ cace-gui
Creating simulation path ngspice
Checking for out-of-date schematic-captured netlists.
Forcing regeneration of schematic-captured netlist.
Generating simulation netlist from schematic. . .
Calling xschem to generate netlist
Error: undriven node: #net12
Warning: shorted output node: Vhigh
Warning: shorted output node: out_unbuf
Warning: shorted output node: #net9
Warning: shorted output node: #net31
Warning: shorted output node: #net32
Warning: shorted output node: #net33
Warning: shorted output node: #net34
Warning: shorted output node: #net35
Warning: shorted output node: #net36
Warning: shorted output node: #net53
Warning: shorted output node: #net54
Warning: shorted output node: #net55
Warning: shorted output node: #net56
Warning: shorted output node: #net57
Warning: shorted output node: #net58
Warning: shorted output node: #net59
Warning: shorted output node: #net60
Warning: shorted output node: out
Warning: shorted output node: #net10
Warning: shorted output node: #net11
Warning: shorted output node: #net12
Warning: shorted output node: #net13
Warning: shorted output node: #net14
Warning: shorted output node: #net15
Warning: shorted output node: #net16
Warning: shorted output node: #net17
Warning: shorted output node: #net8
Warning: shorted output node: #net9
Error: overlapped instance found: R9(sky130_fd_pr/res_high_po_0p35.sym) -> R8
Warning: shorted output node: #net10
Warning: shorted output node: #net11
Warning: shorted output node: #net12
Warning: shorted output node: #net13
Warning: shorted output node: #net14
Warning: shorted output node: #net15
Warning: shorted output node: out
Warning: shorted output node: #net8
Warning: shorted output node: #net9
Error: overlapped instance found: R9(sky130_fd_pr/res_high_po_0p35.sym) -> R8
Checking for out-of-date testbench netlist dccurrent_vdd.spice.
Generating testbench netlist dccurrent_vdd.spice from schematic. . .
Calling xschem to generate netlist
Error: undriven node: #net12
Warning: shorted output node: Vhigh
Warning: shorted output node: out_unbuf
Warning: shorted output node: #net9
Warning: shorted output node: #net31
Warning: shorted output node: #net32
Warning: shorted output node: #net33
Warning: shorted output node: #net34
Warning: shorted output node: #net35
Warning: shorted output node: #net36
Warning: shorted output node: #net53
Warning: shorted output node: #net54
Warning: shorted output node: #net55
Warning: shorted output node: #net56
Warning: shorted output node: #net57
Warning: shorted output node: #net58
Warning: shorted output node: #net59
Warning: shorted output node: #net60
Warning: shorted output node: out
Warning: shorted output node: #net10
Warning: shorted output node: #net11
Warning: shorted output node: #net12
Warning: shorted output node: #net13
Warning: shorted output node: #net14
Warning: shorted output node: #net15
Warning: shorted output node: #net16
Warning: shorted output node: #net17
Warning: shorted output node: #net8
Warning: shorted output node: #net9
Error: overlapped instance found: R9(sky130_fd_pr/res_high_po_0p35.sym) -> R8
Warning: shorted output node: #net10
Warning: shorted output node: #net11
Warning: shorted output node: #net12
Warning: shorted output node: #net13
Warning: shorted output node: #net14
Warning: shorted output node: #net15
Warning: shorted output node: out
Warning: shorted output node: #net8
Warning: shorted output node: #net9
Error: overlapped instance found: R9(sky130_fd_pr/res_high_po_0p35.sym) -> R8
Evaluating electrical parameter Idd_enabled
Launching Simulations
Total files to simulate: 1
Files to simulate method Idd_enabled: 1
Copying ngspice configuration file from PDK.
Running: ngspice ngspice/Idd_enabled_1.spice
Current working directory is: /home/rtsang/chipalooza/sky130_ef_ip__rdac3v_8bit
Warning: Unusual leading characters like '?' or others out of '= [] ? () & % $"!:,\f'
in netlist or included files, will be replaced with '*'.
Check line no 3: ?
Warning: redefinition of .subckt sky130_ef_ip__rdac3v_8bit, ignored
Warning: redefinition of .subckt dac_half, ignored
Warning: redefinition of .subckt passtrans, ignored
Warning: redefinition of .subckt level_shifter, ignored
Warning: redefinition of .subckt follower_amp, ignored
Warning: redefinition of .subckt dac_column_dummy, ignored
Warning: redefinition of .subckt dac_column, ignored
******
** ngspice-42 : Circuit level simulation program
Robin Tsang
03/14/2024, 4:37 PMWarning: Unusual leading characters like '?' or others out of '= [] ? () & % $"!:,\f'
Any ideas? Is there any setup requirement for .spiceinit or xschemrc other than setting the PDK_ROOT and PDK env variables? Though I may have messed something up when setting up CACE earlier using make, but I tied it on another computer that hasn't see CACE and same result. Thanks.Tim Edwards
03/14/2024, 5:35 PMngspice/Idd_enabled_1.spice
?Tim Edwards
03/14/2024, 5:56 PMcace/dccurrent_vdd.spice
which is the template for generating ngspice/Idd_enabled_X.spice
.Robin Tsang
03/14/2024, 6:04 PM** sch_path: /home/rtsang/chipalooza/sky130_ef_ip__rdac3v_8bit/cace/dccurrent_vdd.sch
**.subckt dccurrent_vdd
?
?
?
?
?
?
?
?
VVlow Vlow VSUB DC {Vlow}
VVhigh Vhigh VSUB DC {Vhigh}
?
Vvss vss VSUB DC {Vvss}
Rout out VSUB {Rout} m=1
Cout out VSUB {Cout} m=1
Vdvss dvss VSUB DC {Vdvss}
Vvdd vdd VSUB DC {Vvdd}
Vdvdd dvdd VSUB DC {Vdvdd}
RSUB VSUB GND 0.01 m=1
XDUT dvdd vss dvss vdd b0 Vhigh b1 b2 b3 out b4 b5 ena b6 b7 Vlow sky130_ef_ip__rdac3v_8bit
**** begin user architecture code
.control
op
set wr_singlescale
wrdata {simpath}/{filename}_{N}.data -I(Vvdd)
quit
.endc
Contents of `ngspice/Idd_enabled_1.spice`:
** sch_path: /home/rtsang/chipalooza/sky130_ef_ip__rdac3v_8bit/cace/dccurrent_vdd.sch
**.subckt dccurrent_vdd
?
?
?
?
?
?
?
?
VVlow Vlow VSUB DC 0
VVhigh Vhigh VSUB DC 3.3
?
Vvss vss VSUB DC 0
Rout out VSUB 100000000.0 m=1
Cout out VSUB 1e-13 m=1
Vdvss dvss VSUB DC 0
Vvdd vdd VSUB DC 3.3
Vdvdd dvdd VSUB DC 1.8
RSUB VSUB GND 0.01 m=1
XDUT dvdd vss dvss vdd b0 Vhigh b1 b2 b3 out b4 b5 ena b6 b7 Vlow sky130_ef_ip__rdac3v_8bit
**** begin user architecture code
.control
op
set wr_singlescale
wrdata ngspice/Idd_enabled_1.data -I(Vvdd)
quit
.endc
Tim Edwards
03/14/2024, 6:06 PMTim Edwards
03/14/2024, 6:07 PMTim Edwards
03/14/2024, 6:10 PM[ ... ]
notation in the schematic and instead of copying it verbatim to the output, it is trying to evaluate it with Tcl. Either the behavior is xschem-version-dependent, or else there is an xschem setting being applied that I don't know about.Robin Tsang
03/14/2024, 6:18 PMsky130_ef_ip__rdac3v_8bit
base directory (cace is run right after cloning the DAC example, no edits or changes), and I also don't have an xschemrc in ~/.xschem/ either.Robin Tsang
03/14/2024, 6:23 PMRobin Tsang
03/14/2024, 6:27 PMTim Edwards
03/14/2024, 6:33 PMcd
to cace
and run xschem manually on dccurrent_vdd.sch
(using the xschemrc file from the PDK), and write a netlist, does that netlist look the same?Tim Edwards
03/14/2024, 6:34 PMRobin Tsang
03/14/2024, 7:14 PMxschem dccurrent_vdd.sch
in the directory sky130_ef_ip__rdac3v_8bit/cace
brings up xschem that shows a bunch of missing symbols (all the xschem devices that come with xschem like voltage sources), but the one symbol working is sky130_ef_ip_rdac3v_8bit
.
If I put an xschemrc
in sky130_ef_ip__rdac3v_8bit/cace
and re-run xschem dccurrent_vdd.sch
in said directory, all the symbols work (see pictures).Robin Tsang
03/14/2024, 7:19 PMTim Edwards
03/14/2024, 7:20 PMxschem --version
and it reports "3.4.5". . .Tim Edwards
03/14/2024, 7:21 PMTim Edwards
03/14/2024, 7:26 PMDC [{b[0]} * {Vdvdd}]
. Xschem should be writing that out verbatim, but your netlist output ends up as ?
. . . The whole thing is ?
and not just the expression. It should have shown up in the netlist as VVDAC0 b0 VSUB DC [{b[0]} * {Vdvdd}]
.Robin Tsang
03/14/2024, 7:33 PM** sch_path: /home/rtsang/chipalooza/sky130_ef_ip__rdac3v_8bit/cace/dccurrent_vdd.sch
**.subckt dccurrent_vdd
VVDAC7 b7 VSUB DC [{b[7]} * {Vdvdd}]
VVDAC1 b1 VSUB DC [{b[1]} * {Vdvdd}]
VVDAC2 b2 VSUB DC [{b[2]} * {Vdvdd}]
VVDAC3 b3 VSUB DC [{b[3]} * {Vdvdd}]
VVDAC4 b4 VSUB DC [{b[4]} * {Vdvdd}]
VVDAC5 b5 VSUB DC [{b[5]} * {Vdvdd}]
VVDAC6 b6 VSUB DC [{b[6]} * {Vdvdd}]
VVDAC0 b0 VSUB DC [{b[0]} * {Vdvdd}]
VVlow Vlow VSUB DC {Vlow}
VVhigh Vhigh VSUB DC {Vhigh}
Vena ena VSUB DC [{ena} * {Vdvdd}]
Vvss vss VSUB DC {Vvss}
Rout out VSUB {Rout} m=1
Cout out VSUB {Cout} m=1
Vdvss dvss VSUB DC {Vdvss}
Vvdd vdd VSUB DC {Vvdd}
Vdvdd dvdd VSUB DC {Vdvdd}
RSUB VSUB GND 0.01 m=1
XDUT dvdd vss dvss vdd b0 Vhigh b1 b2 b3 out b4 b5 ena b6 b7 Vlow sky130_ef_ip__rdac3v>
**** begin user architecture code
.control
op
set wr_singlescale
wrdata {simpath}/{filename}_{N}.data -I(Vvdd)
quit
.endc
Contents of ngspice/Idd_enabled_1.spice:
** sch_path: /home/rtsang/chipalooza/sky130_ef_ip__rdac3v_8bit/cace/dccurrent_vdd.sch
**.subckt dccurrent_vdd
VVDAC7 b7 VSUB DC 0.0
VVDAC1 b1 VSUB DC 0.0
VVDAC2 b2 VSUB DC 0.0
VVDAC3 b3 VSUB DC 0.0
VVDAC4 b4 VSUB DC 0.0
VVDAC5 b5 VSUB DC 0.0
VVDAC6 b6 VSUB DC 0.0
VVDAC0 b0 VSUB DC 0.0
VVlow Vlow VSUB DC 0
VVhigh Vhigh VSUB DC 3.3
Vena ena VSUB DC 1.8
Vvss vss VSUB DC 0
Rout out VSUB 100000000.0 m=1
Cout out VSUB 1e-13 m=1
Vdvss dvss VSUB DC 0
Vvdd vdd VSUB DC 3.3
Vdvdd dvdd VSUB DC 1.8
RSUB VSUB GND 0.01 m=1
XDUT dvdd vss dvss vdd b0 Vhigh b1 b2 b3 out b4 b5 ena b6 b7 Vlow sky130_ef_ip__rdac3v>
**** begin user architecture code
.control
op
set wr_singlescale
wrdata ngspice/Idd_enabled_1.data -I(Vvdd)
quit
.endc
The simulation still fails with 9661uA but that's mostly a different issue. Thanks!Robin Tsang
03/14/2024, 7:38 PM** sch_path: /home/rtsang/chipalooza/sky130_ef_ip__rdac3v_8bit/cace/voltage_output.sch
**.subckt voltage_output
VVDAC7 b7 VSUB DC 1.8
VVDAC1 b1 VSUB DC 0.0
VVDAC2 b2 VSUB DC 1.8
VVDAC3 b3 VSUB DC 1.8
VVDAC4 b4 VSUB DC 1.8
VVDAC5 b5 VSUB DC 1.8
VVDAC6 b6 VSUB DC 1.8
VVDAC0 b0 VSUB DC 0.0
VVlow Vlow VSUB DC 0
VVhigh Vhigh VSUB DC 3.3
Vena ena VSUB DC 1.8
Vvss vss VSUB DC 0
Rout out VSUB 100000000.0 m=1
Cout out VSUB 1e-13 m=1
Vdvss dvss VSUB DC 0
Vvdd vdd VSUB DC 3.3
Vdvdd dvdd VSUB DC 1.8
RSUB VSUB GND 0.01 m=1
XDUT dvdd vss dvss vdd b0 Vhigh b1 b2 b3 out b4 b5 ena b6 b7 Vlow sky130_ef_ip__rdac3v_8bit
**** begin user architecture code
.control
op
set wr_singlescale
wrdata ngspice/INL_2.data V(out)
quit
.endc
Tim Edwards
03/14/2024, 7:41 PMRobin Tsang
03/14/2024, 8:08 PMxschemrc
and all the .spice files from the sky130_ef_ip_rdac3v_8bit/cace
directory, then deleted the .spice files from the sky130_ef_ip_rdac3v_8bit/ngspice
, re-ran cace-gui, and it generated the INL_1.spice file with property b[7:0] bits/voltage sources.Tim Edwards
03/14/2024, 8:10 PMRobin Tsang
03/14/2024, 9:12 PMTim Edwards
03/15/2024, 2:16 PM