Matthew Guthaus
11/03/2021, 5:05 PMTim Edwards
11/03/2021, 9:25 PMMitch Bailey
11/03/2021, 10:33 PMsram_1rw1r_32_256_8_sky130
in netgen's setup file flattens the effected cells. Takes a couple hours to run, though.
flatten class precharge_array "-circuit1 precharge_0"
flatten class precharge_array_0 "-circuit1 precharge_1"
flatten class port_data "-circuit1 precharge_array"
flatten class port_data_0 "-circuit1 precharge_array_0"
flatten class dummy_array "-circuit1 sky130_fd_bd_sram__openram_dp_cell_dummy"
flatten class replica_column "-circuit1 sky130_fd_bd_sram__openram_dp_cell_dummy"
flatten class replica_column "-circuit1 sky130_fd_bd_sram__openram_dp_cell_replica"
flatten class replica_column_0 "-circuit1 sky130_fd_bd_sram__openram_dp_cell_dummy"
flatten class replica_column_0 "-circuit1 sky130_fd_bd_sram__openram_dp_cell_replica"
flatten class replica_bitcell_array "-circuit1 dummy_array"
flatten class replica_bitcell_array "-circuit2 dummy_array"
flatten class bitcell_array "-circuit1 sky130_fd_bd_sram__openram_dp_cell"
flatten class bitcell_array "-circuit2 sky130_fd_bd_sram__openram_dp_cell"
For reference, I've documented everything I needed to do to get LVS to pass on the caravel
storage
module which uses sram_1rw1r_32_256_8_sky130
here: https://github.com/d-m-bailey/caravel/blob/d-m-bailey-lvs/docs/source/lvs.rstMitch Bailey
11/03/2021, 10:38 PMMatthew Guthaus
11/03/2021, 10:55 PMMatthew Guthaus
11/03/2021, 10:56 PMMatthew Guthaus
11/03/2021, 11:00 PMTim Edwards
11/03/2021, 11:00 PMMatthew Guthaus
11/03/2021, 11:07 PMTim Edwards
11/03/2021, 11:09 PMTim Edwards
11/03/2021, 11:14 PMMatthew Guthaus
12/29/2021, 11:12 PMMatthew Guthaus
12/29/2021, 11:13 PMMatthew Guthaus
12/29/2021, 11:16 PMMatthew Guthaus
01/06/2022, 7:35 PMMatthew Guthaus
01/13/2022, 12:44 AMMatthew Guthaus
01/13/2022, 9:46 PMMatthew Guthaus
01/13/2022, 10:17 PMMatthew Guthaus
01/13/2022, 10:19 PMTim Edwards
01/13/2022, 10:20 PMTim Edwards
01/13/2022, 10:20 PMMatthew Guthaus
01/13/2022, 10:20 PMTim Edwards
01/13/2022, 10:22 PMMatthew Guthaus
01/13/2022, 10:23 PMTim Edwards
01/13/2022, 10:23 PMMatthew Guthaus
01/13/2022, 10:23 PMMatthew Guthaus
01/13/2022, 10:24 PMMatthew Guthaus
01/13/2022, 10:24 PMMatthew Guthaus
01/13/2022, 10:26 PMMatthew Guthaus
01/13/2022, 10:26 PMTim Edwards
01/13/2022, 10:27 PMTim Edwards
01/13/2022, 10:29 PMMatthew Guthaus
01/13/2022, 10:30 PMMatthew Guthaus
01/13/2022, 10:32 PMMatthew Guthaus
01/13/2022, 10:35 PMTim Edwards
01/13/2022, 10:37 PMMatthew Guthaus
01/13/2022, 10:37 PMTim Edwards
01/13/2022, 10:39 PMMatthew Guthaus
01/13/2022, 10:40 PMMitch Bailey
01/13/2022, 11:17 PMsky130_sram_2kbyte_1rw1r_32x512_8
in the mgmt_core_wrapper
module of caravel (mpw-3) in about 20 minutes.
I believe most chip level LVS should be done with extract unique
, because you don't want a virtual connection at the top level. I don't know how you'd extract subcells with virtual connections and then do the top level without. I think magic has an option to do the opposite, though (extract the top with virtual connections and the subcell ports as unique).
My local version of netgen doesn't add proxy ports (instead it flattens circuits with mismatched ports) but I still need to clearly explain why to @User.Tim Edwards
01/14/2022, 3:25 PMTim Edwards
01/14/2022, 9:28 PMequiv
statements in the .ext file output for every possible label on every net, unless the command extract do aliases
is given. I must have had a loose screw that day, since that breaks backwards compatibility and is normally something I avoid at all costs; it should have been left with extract do aliases
being the default. Regardless, though, the real problem is that with the default extract no aliases
, magic did not record which labels it was not generating equiv
statements for, but then did all its hierarchical processing using all labels, so it could could end up using any name for a net whether or not that name was in the .ext file for that cell. So I added some code (version 8.3.257) to track labels that are not output, and refuse to generate any hierarchical paths using those names. I also confirmed that simply adding extract do aliases
to the extraction script also works.
I have not yet looked at getting some automatic handling of non-electrical layers implemented.Tim Edwards
01/14/2022, 10:38 PM