GitHub
05/17/2023, 11:31 PMBO_sky130_fd_sc_hd__clkbuf_8
and sky130_fd_sc_hd__clkbuf_8
should both match sky130_fd_sc_hd__clkbuf_8
in the spice library.
The setup file contains
equate classes "-circuit2 sky130_fd_sc_hd__clkbuf_8" "-circuit1 BO_sky130_fd_sc_hd__clkbuf_8"
equate classes "-circuit2 sky130_fd_sc_hd__clkbuf_8" "-circuit1 sky130_fd_sc_hd__clkbuf_8"
because "netlist with the N names should always be the second netlist".
However, only the matching cell comparison is preformed and BO_sky130_fd_sc_hd__clkbuf_8 is flattened during prematch, which causes sky130_fd_sc_hd__clkbuf_8 to be flattened also.
1 to 1 matching with prefixes using equate classes
works as expected. Both of the following are ok.
equate classes "-circuit2 precharge_0" "-circuit1 BO_sky130_sram_2kbyte_1rw1r_32x512_8_precharge_0"
equate classes "-circuit2 sky130_fd_bd_sram__openram_write_driver" "-circuit1 BO_sky130_fd_bd_sram__openram_write_driver"
Contents of circuit 1: Circuit: 'BO_sky130_sram_2kbyte_1rw1r_32x512_8_precharge_0'
Circuit BO_sky130_sram_2kbyte_1rw1r_32x512_8_precharge_0 contains 3 device instances.
Class: sky130_fd_pr__pfet_01v8 instances: 3
Circuit contains 4 nets.
Contents of circuit 2: Circuit: 'precharge_0'
Circuit precharge_0 contains 3 device instances.
Class: sky130_fd_pr__pfet_01v8 instances: 3
Circuit contains 4 nets.
Contents of circuit 1: Circuit: 'BO_sky130_fd_bd_sram__openram_write_driver'
Circuit BO_sky130_fd_bd_sram__openram_write_driver contains 16 device instances.
Class: sky130_fd_pr__nfet_01v8 instances: 9
Class: sky130_fd_pr__pfet_01v8 instances: 7
Circuit contains 15 nets.
Contents of circuit 2: Circuit: 'sky130_fd_bd_sram__openram_write_driver'
Circuit sky130_fd_bd_sram__openram_write_driver contains 16 device instances.
Class: sky130_fd_pr__nfet_01v8 instances: 9
Class: sky130_fd_pr__pfet_01v8 instances: 7
Circuit contains 13 nets.
However, N to 1 matching yields
Subcircuit summary:
Circuit 1: sky130_fd_sc_hd__clkbuf_8 |Circuit 2: sky130_fd_sc_hd__clkbuf_8
-------------------------------------------|-------------------------------------------
sky130_fd_pr__pfet_01v8_hvt (10->2) |sky130_fd_pr__pfet_01v8_hvt (10->2)
sky130_fd_pr__nfet_01v8 (10->2) |sky130_fd_pr__nfet_01v8 (10->2)
Number of devices: 4 |Number of devices: 4
Number of nets: 7 |Number of nets: 7
---------------------------------------------------------------------------------------
Netlists match uniquely.
and then
Flattening unmatched subcell BO_sky130_fd_sc_hd__clkbuf_8 in circuit BO_mgmt_core (0)(40 instances)
...
Flattening instances of sky130_fd_sc_hd__clkbuf_8 in cell mgmt_core (1) makes a better match
...
Making another compare attempt.
To duplicate, see efabless/caravel#159
Warning: not a minimal case.
Note: This is not a critical problem. It causes longer LVS runs, but they still pass.
RTimothyEdwards/netgenGitHub
05/17/2023, 11:31 PM