Tobias Strauch
04/21/2022, 12:35 PMMatt Liberty
04/21/2022, 3:39 PMTobias Strauch
04/21/2022, 3:55 PMAnton Blanchard
04/21/2022, 11:34 PM*_1
cells are excluded (not just xnor) during synthesis (no_synth.cells
). It was never clear to me why, but I'm guessing it's so we use the larger cells in an attempt to help placement and routing. The cells will eventually get shrunk by the resizer if they are too large. We already have cell padding for this, so I wonder how much this is helping in reality. @User do you have any more insight into this?
I see xnor2_2
cells in the Microwatt design after synthesis, so we are definitely not excluding all xnors from synthesis:
sky130_fd_sc_hd__xnor2_2 _055833_ (
.A(\microwatt_0.soc0.uart0_16550.uart0.regs.transmitter.fifo_tx.bottom[3] ),
.B(_009495_),
.Y(_009496_)
);
Later on in the flow, we exclude a smaller set of cells (no_synth.cells
). These probably had pin access issues ages ago but should be re-evaluated with a recent version of OpenROAD. I attempted that in https://github.com/RTimothyEdwards/open_pdks/pull/211 but it caused routing issues at the time, and I haven't been able to go back to root cause it.Tobias Strauch
04/22/2022, 10:44 AMMatt Liberty
04/23/2022, 2:40 AMTobias Strauch
04/23/2022, 7:52 AMVijayan Krishnan
04/25/2022, 5:34 AMNO_SYNTH_CELL_LIST
will provide default cell list excluded. You can manually customize as per your needTobias Strauch
04/25/2022, 6:26 AMVijayan Krishnan
04/25/2022, 6:29 AMTobias Strauch
04/25/2022, 6:35 AMVijayan Krishnan
04/25/2022, 6:49 AMsky130_fd_sc_hd__a2111oi_0
sky130_fd_sc_hd__a21boi_0
sky130_fd_sc_hd__and2_0
sky130_fd_sc_hd__buf_16
sky130_fd_sc_hd__clkdlybuf4s15_1
sky130_fd_sc_hd__clkdlybuf4s18_1
sky130_fd_sc_hd__fa_4
sky130_fd_sc_hd__lpflow_bleeder_1
sky130_fd_sc_hd__lpflow_clkbufkapwr_1
sky130_fd_sc_hd__lpflow_clkbufkapwr_16
sky130_fd_sc_hd__lpflow_clkbufkapwr_2
sky130_fd_sc_hd__lpflow_clkbufkapwr_4
sky130_fd_sc_hd__lpflow_clkbufkapwr_8
sky130_fd_sc_hd__lpflow_clkinvkapwr_1
sky130_fd_sc_hd__lpflow_clkinvkapwr_16
sky130_fd_sc_hd__lpflow_clkinvkapwr_2
sky130_fd_sc_hd__lpflow_clkinvkapwr_4
sky130_fd_sc_hd__lpflow_clkinvkapwr_8
sky130_fd_sc_hd__lpflow_decapkapwr_12
sky130_fd_sc_hd__lpflow_decapkapwr_3
sky130_fd_sc_hd__lpflow_decapkapwr_4
sky130_fd_sc_hd__lpflow_decapkapwr_6
sky130_fd_sc_hd__lpflow_decapkapwr_8
sky130_fd_sc_hd__lpflow_inputiso0n_1
sky130_fd_sc_hd__lpflow_inputiso0p_1
sky130_fd_sc_hd__lpflow_inputiso1n_1
sky130_fd_sc_hd__lpflow_inputiso1p_1
sky130_fd_sc_hd__lpflow_inputisolatch_1
sky130_fd_sc_hd__lpflow_isobufsrc_1
sky130_fd_sc_hd__lpflow_isobufsrc_16
sky130_fd_sc_hd__lpflow_isobufsrc_2
sky130_fd_sc_hd__lpflow_isobufsrc_4
sky130_fd_sc_hd__lpflow_isobufsrc_8
sky130_fd_sc_hd__lpflow_isobufsrckapwr_16
sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1
sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2
sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4
sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4
sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1
sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2
sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4
sky130_fd_sc_hd__mux4_4
sky130_fd_sc_hd__o21ai_0
sky130_fd_sc_hd__o311ai_0
sky130_fd_sc_hd__or2_0
sky130_fd_sc_hd__probe_p_8
sky130_fd_sc_hd__probec_p_8
sky130_fd_sc_hd__xor3_1
sky130_fd_sc_hd__xor3_2
sky130_fd_sc_hd__xor3_4
sky130_fd_sc_hd__xnor3_1
sky130_fd_sc_hd__xnor3_2
sky130_fd_sc_hd__xnor3_4
I dont find these cells in my netlist.Anton Blanchard
04/25/2022, 7:02 AMThe list contains all _1 cells available but some _1 cells are used in the final netlist list. So my questions are a) why excluding them in the first place when they show up in the final netlist anyway and b) where to exclude them, so that they don't show up in the final netlist.I explained this above. I think we exclude all the _1 cells at synthesis stage to help with routing. We don't exclude them from the resizer, so that's why you see them in the final netlist
Tobias Strauch
04/25/2022, 7:46 AMAnton Blanchard
04/25/2022, 7:53 AMTobias Strauch
04/25/2022, 8:10 AMAnton Blanchard
04/25/2022, 8:14 AM