Mitch Bailey
07/12/2021, 2:43 AMstorage
macro, there are 2 dual port sram instances of sram_1rw1r_32_256_8_sky130
. In mpw-1, the csb1
, clk1
, and addr1[7:0]
inputs to the second instance were floating and I believe it was decided that it wouldn't be fixed in the first run. As of commit 1a73bd5
, the inputs still appear to be floating in the gate level verilog. @User @User Can you verify this?
Here are the relevant lines from verilog/gl/storage.v
sram_1rw1r_32_256_8_sky130 SRAM_1 (.csb0(mgmt_ena[1]),
.csb1(_00_),
...
.clk1(_09_),
...
.addr1({_08_,
_07_,
_06_,
_05_,
_04_,
_03_,
_02_,
_01_}),
Matthew Guthaus
07/12/2021, 3:10 AMMatthew Guthaus
07/12/2021, 3:11 AMManar Abdelatty
07/12/2021, 4:44 AMcsb1
clk1
and addr1[7:0]
are tied to logic zero/one. If you check the wires _00_
_01_
..., you will find that they are connected to a conb_1 cellMitch Bailey
07/12/2021, 5:26 AMMatthew Guthaus
07/12/2021, 1:09 PMMatthew Guthaus
07/12/2021, 1:11 PMMatthew Guthaus
07/12/2021, 1:12 PMMitch Bailey
07/12/2021, 3:00 PMMatthew Guthaus
07/12/2021, 3:19 PMMatthew Guthaus
07/12/2021, 3:19 PMMatthew Guthaus
07/12/2021, 3:21 PMMitch Bailey
07/13/2021, 1:32 AMstorage
layout to the gate level storage
verilog, both from the caravel/develop branch. For the sram macro source, I'm using the sram_1rw1r_32_256_8_sky130.sp
spice file from the sky130_sram_macros
repo.
caravel/develop commit 1a73bd5
sky130_sram_macros/main commit 9df5b8b
From the spice file
.SUBCKT replica_column bl0_0 br0_0 bl1_0 br1_0 wl0_0 wl1_0 wl0_1 wl1_1 ... wl0_130 wl1_130 wl0_131 wl1_131
From the extracted layout
.subckt replica_column bl0 br0 bl1 br1 wl0_1 wl1_1 ... wl0_130 wl1_130
You can notice the difference between the bl
and br
nets and also the missing wl0_0, wl0_1, wl131_0, wl131_1
nets. The subcircuit replica_column_0
is the same.
The unmatched wl* lines are not connected to any devices in the source netlist, so probably not a problem.
In the source netlist, I changed bl0_0 br0_0 bl1_0 br1_0
to bl0 br0 bl1 br1
respectively.
Additionally, the layout's control_logic_r
block has been flattened, so I flatten the netlist subckt similarly with netgen commands.Matthew Guthaus
07/13/2021, 1:43 AMMatthew Guthaus
07/13/2021, 1:44 AMMitch Bailey
07/13/2021, 2:02 AMreplica_column
subckts.
I'll revert the bl/br names and remove the forced flattening to see if the only problem is with extraction connections.
I'm manually ignoring the parasitic devices in the bitcells in both the source and the layout.Matthew Guthaus
07/13/2021, 2:44 AMMatthew Guthaus
07/13/2021, 2:45 AMMatthew Guthaus
07/13/2021, 2:48 AMMatthew Guthaus
07/13/2021, 2:48 AMMatthew Guthaus
07/13/2021, 2:50 AMMitch Bailey
07/13/2021, 3:20 AMwl0_0, wl1_0, wl0_131_0, wl1_131
are disconnected in replica_column. The bitlines merely have a different name. You are correct in that neither of these cause LVS to fail.
Rerunning LVS, I need to do the following to get a match.
1. Remove the parasitic devices from the bitcells of the source and extracted netlist.
2. manually short p_en_bar0 (1 nets) and vdd_uq* (31 connections). (not to each other). (possibly a problem with magic extraction routines. @Tim Edwards I sent you a setup to duplicate the results.)
3. swap the bus signal order in the top sram spice file. This has nothing to do with the extracted layout, but rather with the order that the bus signals are mapped from verilog to spice submodules. The only way I can think of to fix this in all cases, would be to require expanded busses in verilog instantiations of spice subcircuits. However, we might be able to add a verilog stub to the calling verilog file that defines the spice bus index order.
4. Need to explicitly flatten some of the subcells of control_logic_r
because automatic flattening did not work. Here are the results.
Subcircuit summary:
Circuit 1: control_logic_r |Circuit 2: control_logic_r
-------------------------------------------|-------------------------------------------
sky130_fd_pr__pfet_01v8 (87) |sky130_fd_pr__pfet_01v8 (5) **Mismatch**
sky130_fd_pr__nfet_01v8 (87) |sky130_fd_pr__nfet_01v8 (5) **Mismatch**
(no matching element) |dff_buf_0 (1)
(no matching element) |pinv_6 (1)
(no matching element) |pinv_0 (1)
(no matching element) |pand2_0 (2)
(no matching element) |pdriver_2 (1)
(no matching element) |pand3_0 (1)
(no matching element) |pinv_20 (45)
(no matching element) |pnand2_1 (1)
(no matching element) |pdriver_5 (1)
Number of devices: 174 **Mismatch** |Number of devices: 64 **Mismatch**
Number of nets: 102 **Mismatch** |Number of nets: 65 **Mismatch**
---------------------------------------------------------------------------------------
Flattening instances of pinv_0 in cell control_logic_r makes a better match
Flattening instances of pinv_6 in cell control_logic_r makes a better match
Flattening instances of pinv_20 in cell control_logic_r makes a better match
Flattening instances of pnand2_1 in cell control_logic_r makes a better match
Making another compare attempt.
Subcircuit summary:
Circuit 1: control_logic_r |Circuit 2: control_logic_r
-------------------------------------------|-------------------------------------------
sky130_fd_pr__pfet_01v8 (87) |sky130_fd_pr__pfet_01v8 (54) **Mismatch**
sky130_fd_pr__nfet_01v8 (87) |sky130_fd_pr__nfet_01v8 (54) **Mismatch**
(no matching element) |dff_buf_0 (1)
(no matching element) |pand2_0 (2)
(no matching element) |pdriver_2 (1)
(no matching element) |pand3_0 (1)
(no matching element) |pdriver_5 (1)
Number of devices: 174 **Mismatch** |Number of devices: 114 **Mismatch**
Number of nets: 102 **Mismatch** |Number of nets: 66 **Mismatch**
---------------------------------------------------------------------------------------
NET mismatches: Class fragments follow (with fanout counts):
Circuit 1: control_logic_r |Circuit 2: control_logic_r
You can see that some of the cells were flattened, but not enough to match. At the top level we get
Subcircuit summary:
Circuit 1: storage |Circuit 2: storage
-------------------------------------------|-------------------------------------------
...
pand3_0 (2) |pand3_0 (4) **Mismatch**
pdriver_5 (2) |pdriver_5 (4) **Mismatch**
pand2_0 (4) |pand2_0 (8) **Mismatch**
pdriver_2 (2) |pdriver_2 (4) **Mismatch**
sky130_fd_pr__pfet_01v8 (1262) |sky130_fd_pr__pfet_01v8 (1196) **Mismatch*
sky130_fd_pr__nfet_01v8 (1262) |sky130_fd_pr__nfet_01v8 (1196) **Mismatch*
By adding the following to netgen's setup file, I get a clean result.
flatten class dff_buf_array_0 "-circuit2 dff_buf_0"
flatten class pand2_0 "-circuit2 pdriver_0"
flatten class pand3_0 "-circuit2 pdriver_4"
flatten class control_logic_r "-circuit2 dff_buf_array_0"
flatten class control_logic_r "-circuit2 pdriver_6"
flatten class control_logic_r "-circuit2 pinv_0"
flatten class control_logic_r "-circuit2 pand2_0"
flatten class control_logic_r "-circuit2 pdriver_2"
flatten class control_logic_r "-circuit2 pand3_0"
flatten class control_logic_r "-circuit2 delay_chain"
flatten class control_logic_r "-circuit2 pnand2_1"
flatten class control_logic_r "-circuit2 pdriver_5"
In summary, @Matthew Guthaus I think the design is ok even with the net name and hierarchy discrepancies. @Tim Edwards we may need to investigate changes to magic/netgen if we want enable device level LVS for designers using sram macros.Matthew Guthaus
07/13/2021, 3:29 AMMatthew Guthaus
07/13/2021, 3:30 AMMitch Bailey
07/13/2021, 3:38 AMreplica_column
wl0_0
is connected to?Matthew Guthaus
07/13/2021, 4:10 AMMatthew Guthaus
07/13/2021, 4:11 AMMatthew Guthaus
07/13/2021, 4:12 AMMitch Bailey
07/13/2021, 5:38 AMXrbc_1 bl0_0 br0_0 bl1_0 br1_0 wl0_1 wl1_1 vdd gnd sky130_fd_bd_sram__openram_dp_cell_replica
...
Xrbc_130 bl0_0 br0_0 bl1_0 br1_0 wl0_130 wl1_130 vdd gnd sky130_fd_bd_sram__openram_dp_cell_dummy
What I was trying to point out is that the wl0_0, wl1_0, wl0_131, wl1_131
nets are ports in replica_column
, but have no connections to any instances inside. Again, this matches the layout, but the layout doesn't extract these nets because there are no connections.Matthew Guthaus
07/13/2021, 12:43 PMMitch Bailey
07/13/2021, 3:49 PMMatthew Guthaus
07/13/2021, 3:50 PMMitch Bailey
07/15/2021, 3:58 PMrun_ext.sh
and run_lvs.sh
scripts in the repo, but wasn't able to get a clean LVS result. Wondering if it's a difference in the technology or program versions.
I'm using the sky130_sram_1kbyte_1rw1r_32x256_8
macro from sky130_sram_macros
commit 9df5b8b
. If it's not too much trouble, could you help me with the following?
What version of magic and netgen are you using?
Also can I get the .magicrc
file and /home/mrg/openram//technology:/home/mrg/data/sky130_fd_bd_sram/tools/openram/technology
files?
The clean sky130_sram_1kbyte_1rw1r_32x256_8.lvs.report
file would also be helpful.Matthew Guthaus
07/15/2021, 4:37 PMMatthew Guthaus
07/15/2021, 4:41 PMMatthew Guthaus
07/15/2021, 4:42 PMMatthew Guthaus
07/15/2021, 4:45 PMMatthew Guthaus
07/15/2021, 4:46 PMMitch Bailey
07/15/2021, 5:28 PMMitch Bailey
07/21/2021, 3:22 AMmagic 8.3.175, netgen 1.5.165
and came close to a clean LVS run.
The module I checked was sky130_sram_1kbyte_1rw1r_32x256_8
but I had to manually ignore the parasitic devices in the dp_cell
subcircuits of both the *lvs.sp
file and the extracted netlist. This is the result,
Netlists match with 36 symmetries.
Circuits match correctly.
but none of the top level ports were extracted so I also got
(no pins) |addr0[7] **Mismatch**
(no matching pin) |din0[0]
...
(no matching pin) |vccd1
(no matching pin) |vssd1
---------------------------------------------------------------------------------------
Cell pin lists for sky130_sram_1kbyte_1rw1r_32x256_8 and sky130_sram_1kbyte_1rw1r_32x256_8 altered to match.
The top level cell failed pin matching.
Only addr0[7]
is showing as a mismatch. Is this the same result you get?
In order to extract the ports, I made the following change in the lvs_ext.sh script per @Tim Edwards suggestion.
bash-4.2$ diff -c run_ext.sh run_ext_cif.sh
*** run_ext.sh Tue Jul 20 21:56:03 2021
--- run_ext_cif.sh Tue Jul 20 21:55:48 2021
***************
*** 11,16 ****
--- 11,17 ----
gds flatten true
gds ordering true
gds readonly true
+ cif istyle sky130(vendor)
gds read sky130_sram_1kbyte_1rw1r_32x256_8.gds
puts "Finished reading gds sky130_sram_1kbyte_1rw1r_32x256_8.gds"
load sky130_sram_1kbyte_1rw1r_32x256_8
However, in what appears to be a problem in the extraction routine, 31 *dp_cell*
vdd connections are extracted as unconnected.
I'll work with @Tim Edwards on this and get back to you.
Tim, I'll log an issue with a setup files to magic's github.Matthew Guthaus
07/21/2021, 3:35 AMMatthew Guthaus
07/21/2021, 3:37 AMMatthew Guthaus
07/21/2021, 3:38 AMMatthew Guthaus
07/21/2021, 3:39 AMMatthew Guthaus
07/21/2021, 4:17 AMMitch Bailey
07/21/2021, 4:56 AMsky130_sram_macros
repo. If they have the read spice
statements in them, then I used them.
Is it possible to send me your sky130_sram_1kbyte_1rw1r_32x256_8.spice
and sky130_sram_1kbyte_1rw1r_32x256_8.lvs.report
files. That would help me track down where the difference is coming from.
The top of my sky130_sram_1kbyte_1rw1r_32x256_8
subcircuit looks like this (no ports),
.subckt sky130_sram_1kbyte_1rw1r_32x256_8
Xwmask_dff_0 vccd1 data_dff_0/clk wmask_dff_0/dout_0 wmask_dff_0/dout_1 wmask_dff_0/dout_2
+ wmask_dff_0/dout_3 vssd1 wmask0[0] wmask0[1] wmask0[2] wmask0[3] wmask_dff
Maybe the tech files referenced in the .magicrc
file are different. The cksum of my tech file is 1173017678 141540 /openLANE_flow/pdks/sky130A/libs.tech/magic/sky130A.tech
I believe this is generated from the open_pdks
repo
commit 804f48b18519aa67b1f822bdc352ecbad1c056cb
Author: Tim Edwards <tim@opencircuitdesign.com>
Date: Mon Jul 5 13:07:07 2021 -0400
Mitch Bailey
07/21/2021, 5:45 AMopen_pdks
are you using?Tim Edwards
07/21/2021, 1:10 PMMatthew Guthaus
07/21/2021, 1:11 PMMatthew Guthaus
07/21/2021, 4:54 PMMatthew Guthaus
07/21/2021, 4:55 PMMatthew Guthaus
07/21/2021, 5:01 PMMatthew Guthaus
07/21/2021, 5:04 PMMatthew Guthaus
07/21/2021, 8:01 PMMitch Bailey
07/21/2021, 8:19 PMMatthew Guthaus
07/21/2021, 8:20 PMMitch Bailey
07/21/2021, 8:22 PMMatthew Guthaus
07/21/2021, 8:26 PMMatthew Guthaus
07/21/2021, 8:30 PMMatthew Guthaus
07/21/2021, 8:31 PMMitch Bailey
07/21/2021, 9:41 PMMatthew Guthaus
07/21/2021, 9:42 PMMitch Bailey
07/22/2021, 3:53 PMopen_pdks
version is tied to the skywater-pdk
version.
Are you using commit db2e06709dc3d876aa6b74a5f3893fa5f1bc2a6e
of skywater-pdk
?Matthew Guthaus
07/22/2021, 4:13 PMMatthew Guthaus
07/22/2021, 4:15 PMMitch Bailey
07/22/2021, 4:30 PMTim Edwards
07/22/2021, 5:17 PMopen_pdks
version should be independent of the skywater-pdk
version. About a month or two ago I started adding commit numbers from the various repositories to a file sky130A/.config/nodeinfo.json
which makes it convenient to query the version of any of the libraries that went into an install of open_pdks
.Mitch Bailey
07/23/2021, 2:20 AMMakefile
and running `make pdk`:
SKYWATER_COMMIT ?= 00bdbcf4a3aa922cc1f4a0d0cd8b80dbd73149d3
OPEN_PDKS_COMMIT ?= 7e29496eecf3ee8e1766f1b7f9441f97204d4735
I abort with the following error messages
... Several similar errors
# Custom: Patch the ngspice models to add the HV diffusion resistor subcircuits
patch -p2 -f -d /mnt/mpw/OpenLane/pdks/open_pdks/sky130/sky130A/libs.tech/ngspice \
< custom/patches/sky130_fd_pr_5.patch \
2>&1 | tee -a sky130A_make.log || true
patching file sky130_fd_pr__model__r+c.model.spice
Hunk #1 FAILED at 131.
1 out of 1 hunk FAILED -- saving rejects to file sky130_fd_pr__model__r+c.model.spice.rej
# Fix up the PNP model file before running the next modification
head -15 /mnt/mpw/OpenLane/pdks/open_pdks/sky130/sky130A/libs.ref/sky130_fd_pr/spice/sky130_fd_pr__pnp_05v5_W3p40L3p40.model.spice > /mnt/mpw/OpenLane/pdks/open_pdks/sky130/sky130A/libs.ref/sky130_fd_pr/spice/temp
head: cannot open '/mnt/mpw/OpenLane/pdks/open_pdks/sky130/sky130A/libs.ref/sky130_fd_pr/spice/sky130_fd_pr__pnp_05v5_W3p40L3p40.model.spice' for reading: No such file or directory
make[1]: Leaving directory `/mnt/mpw/OpenLane/pdks/open_pdks/sky130'
make[1]: *** [primitive-a] Error 1
make: *** [all-a] Error 2
make: *** [build-pdk] エラー 2
I was thinking that the patches in open_pdks
didn't apply to the files from the version of skywater-pdk
that I was using.Mitch Bailey
07/23/2021, 9:42 AMMitch Bailey
07/23/2021, 12:00 PMmake pdk
failure be that the git submodules may be always pointing to the latest versions?Matthew Guthaus
07/23/2021, 1:18 PMTim Edwards
07/23/2021, 1:19 PMMatthew Guthaus
07/23/2021, 1:20 PMMitch Bailey
07/24/2021, 8:05 AMmake pdk
with openlane v0.20
or v0.15
for the following commits:
SKYWATER_COMMIT ?= 00bdbcf4a3aa922cc1f4a0d0cd8b80dbd73149d3
OPEN_PDKS_COMMIT ?= 7e29496eecf3ee8e1766f1b7f9441f97204d4735
I got the same errors that I reported yesterday.
I was able to make pdk
for the default commits in openlane v0.15
, but lvs_ext.sh
in sky130_sram_macros
still extracts the spice without the top level ports. I can add cif istyle sky130(vendor)
to the extraction to get ports, but it messes up the connectivity. (I get the unconnected vdd nets, etc. that I previously reported.)
@Matthew Guthaus Not really sure what to do next. Do you have someone who could check that the sram macros pass lvs in openlane v0.20 with the current pdk?
Unless I can extract a correct spice level netlist, I can't run cvc (erc checks).Matthew Guthaus
07/24/2021, 3:24 PMMitch Bailey
07/24/2021, 3:51 PMMatthew Guthaus
07/24/2021, 4:55 PMMatthew Guthaus
07/24/2021, 4:56 PMMatthew Guthaus
07/24/2021, 4:58 PMMitch Bailey
07/26/2021, 1:06 AMMagic 8.3 revision 160 - Compiled on Wed Apr 28 23:15:07 UTC 2021.
Netgen 1.5.157 compiled on Fri Apr 16 23:46:21 UTC 2021
Could you double check that these are the versions of
/home/mrg/data/sky130_fd_bd_sram/env/conda/envs/sky130_fd_bd_sram/bin/magic
and
/home/mrg/data/sky130_fd_bd_sram/env/conda/envs/sky130_fd_bd_sram/bin/netgen
Matthew Guthaus
07/26/2021, 3:28 AMMitch Bailey
07/26/2021, 4:49 AMMitch Bailey
07/27/2021, 12:00 PMMagic 8.3 revision 160 - Compiled on Wed Apr 28 23:15:07 UTC 2021.
Netgen 1.5.157 compiled on Fri Apr 16 23:46:21 UTC 2021
Had to add readspice sky130_sram_1kbyte_1rw1r_32x256_8.lvs.sp
to the run_ext.sh
script. You mentioned that this was necessary in one of you responses.
@Tim Edwards the extract/lvs scripts for the sram macros currently do not include the cif istyle sky130(vendor)
statement. Without the cif istyle
specification or the readspice
specification, top level ports are not extracted. This is the default when using the run_ext.sh
scripts in the sky130_sram_macros
repo. With readspice
, top level ports are extracted even without specifying cif istyle
. I assumed that readspice just adjusted the port order, but it appears it also effects what signals are considered ports.
Now that I have a base to work from, I'll check the latest version of magic/netgen.
I'll also report on how to handle sram modules in the full chip LVS.Tim Edwards
07/27/2021, 3:22 PMsky130(vendor)
the default, since after using it for a while, there appears to be no drawback in doing so. Existing scripts that set the style will continue to work, and scripts that fail to set the style should work properly after an update of open_pdks.Mitch Bailey
07/27/2021, 6:44 PMcif istyle
to the extraction setup, I get 29 disconnected vdd nets in bitcell_array
.
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq3646
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq3262
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq3326
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq2558
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq2238
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq1854
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq3518
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq3582
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq3198
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq2814
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq2878
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq2494
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq3838
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq2110
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq3134
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq2750
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq2430
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq2046
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq2686
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq2302
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq1982
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq4094
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq3710
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq3390
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq3966
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq4030
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq3454
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq2366
/Xbank_0/Xreplica_bitcell_array_0/Xbitcell_array_0/vdd_uq3006
Manually editing the netlist to replace these nets with vdd, I again get a match.
It looks like adding cif istyle
causes a problem with sram extraction.
I will check again with the latest? programs.
magic 8.3.190
netgen 1.5.196
Matthew Guthaus
07/27/2021, 6:46 PMMitch Bailey
07/27/2021, 7:17 PMrun_ext.sh
script.
1. as is
2. with cif istyle
3. with readspice
4. with cif istyle
and readspice
My current feeling is that we would want LVS to pass without requiring readspice
because we would not want to require the users to add that to their extract setup whenever they used/changed an sram instance. However, it appears that cif istyle
causes an extraction problem in older versions of magic.
If I get something that works, I'll try again with the latest technology file(s).Matthew Guthaus
07/27/2021, 7:36 PMMatthew Guthaus
07/27/2021, 7:37 PMMatthew Guthaus
07/27/2021, 7:38 PMMitch Bailey
07/27/2021, 10:37 PMrun_ext.sh
scripts in sky130_sram_macros
do not specify readspice
. Are you saying that those scripts won't work as they are?Mitch Bailey
07/27/2021, 11:17 PMsky130_sram_1kbyte_1rw1r_32x256_8
extracts spice that is invalid. The net count between instances and subckts doesn't match sometimes.
For example, running run_ext.sh
as is gives
.subckt sky130_fd_bd_sram__openram_dp_cell_dummy w_144_n79# a_38_n79# gnd wl0 wl1
+ vdd bl0 bl1 br0 br1 a_400_n79# <- 11 nets
...
Xsky130_fd_bd_sram__openram_dp_cell_dummy_60 gnd wl_0_0 wl_1_0 vdd_uq59 bl_0_3 bl_1_3
+ br_0_3 br_1_3 sky130_fd_bd_sram__openram_dp_cell_dummy_60/a_400_n79# sky130_fd_bd_sram__openram_dp_cell_dummy_60/w_144_n79#
+ sky130_fd_bd_sram__openram_dp_cell_dummy <- 10 nets
Adding just readspice
or cif istyle
gives
.subckt nmos_m1_w0_740_sli_dactive a_90_0# G S w_n26_n26# <- 4 nets
...
Xnmos_m1_w0_740_sli_dactive_0 A gnd contact_16_2/gnd nmos_m1_w0_740_sli_dactive <- 3 nets
Adding both readspice
and cif istyle
gives
.subckt pinv_16 vdd A Z gnd <- 4 nets
...
Xpinv_16_0 A Z gnd pinv_16 <- 3 nets
The examples shown are the first errors flagged. The errors may or may not exist in the other configurations.
This may be related to changes in magic 8.3.190
so I'll try again with 8.3.189
.Matthew Guthaus
07/28/2021, 1:57 AMMatthew Guthaus
07/28/2021, 1:59 AMTim Edwards
07/28/2021, 2:32 AMMitch Bailey
07/28/2021, 2:37 AMsky130_sram_macros
, if the readspice
statement is added.
My final goal is to run LVS on the entire chip (or at least the user_project_wrapper
).
What I want to do next is run LVS, using the standard flow, on the storage
macro, which includes 2 sram instances. The standard flow includes/requires the cif istyle
statement which unfortunately results in unconnected nets when using older versions of magic. I haven't found a version of magic that will work, so I'm starting at the latest and working backwards.
Also the standard flow does not include the readspice
statement, so if possible, I'd like to find some way to avoid that.
I'll check if port makeall
can be used in place of readspice
, but I don't think port makeall
is included in the standard flow, either.Matthew Guthaus
07/28/2021, 3:15 AMMatthew Guthaus
07/28/2021, 3:16 AMMatthew Guthaus
07/28/2021, 3:19 AMMitch Bailey
07/28/2021, 4:04 AMmain
of `sky130_sram_macros`; I'll try branch mpw-two
.Tim Edwards
08/04/2021, 6:14 PMMitch Bailey
08/04/2021, 9:54 PMMitch Bailey
08/07/2021, 3:17 PMTim Edwards
08/07/2021, 4:42 PMMitch Bailey
08/07/2021, 8:04 PM