<#64 N to 1 matching is does not appear to be work...
# openlane-development
g
#64 N to 1 matching is does not appear to be working Issue created by d-m-bailey netgen 1.5.233 The layout contains prefixed and unprefixed cells that should match to the same unprefixed name in gl verilog. eg.
BO_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
Copy code
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.
Copy code
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"
Copy code
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
Copy code
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
Copy code
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/netgen