mehdi
02/13/2022, 9:33 PMMitch Bailey
02/13/2022, 11:18 PMflow.tcl
that combines the verilog and spice to do device level LVS.
flow.tcl -design <my_design> -lvs -gds <gds_file> -net <top_gate_level_verilog>
This runs magic extract and netgen in the openlane directory structure.
You will need to add non-default spice libraries (if used) and other verilog files to the config.tcl.
For example, in order to run gate level LVS on mgmt_core_wrapper
, add the following:
set ::env(LVS_EXTRA_GATE_LEVEL_VERILOG) "
$script_dir/../../verilog/gl/mgmt_core.v
$script_dir/../../verilog/gl/DFFRAM.v"
set ::env(LVS_EXTRA_STD_CELL_LIBRARY) "
$::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/spice/sky130_sram_2kbyte_1rw1r_32x512_8.spice"
Let me know if things don't work as expected. There may be a few programs you need to tweak.Tuohang Zeng
02/13/2022, 11:31 PMmehdi
02/13/2022, 11:39 PMwrite_cdl
cmd from openroad?Mitch Bailey
02/13/2022, 11:43 PMMitch Bailey
02/13/2022, 11:44 PMmehdi
02/13/2022, 11:55 PMMitch Bailey
02/14/2022, 12:03 AMmehdi
02/14/2022, 12:03 AMMitch Bailey
02/14/2022, 12:22 AMmehdi
02/14/2022, 12:23 AMTuohang Zeng
02/14/2022, 12:25 AMTuohang Zeng
02/14/2022, 12:25 AMMitch Bailey
02/14/2022, 1:49 AMTuohang Zeng
02/14/2022, 3:13 AMMitch Bailey
02/14/2022, 5:08 AMSubcircuit summary:
Circuit 1: tempsenseInst_error |Circuit 2: tempsenseInst_error
-------------------------------------------|-------------------------------------------
sky130_fd_pr__nfet_03v3_nvt (56) |sky130_fd_pr__nfet_03v3_nvt (56)
sky130_fd_sc_hd__decap_4 (106->2) |sky130_fd_sc_hd__decap_4 (106->2)
sky130_fd_sc_hd__or3_1 (1) |sky130_fd_sc_hd__or3_1 (1)
sky130_fd_pr__nfet_01v8 (56) |sky130_fd_pr__nfet_01v8 (56)
sky130_fd_pr__pfet_01v8_hvt (61->60) |sky130_fd_pr__pfet_01v8_hvt (61->60)
sky130_fd_sc_hd__nor3_1 (21) |sky130_fd_sc_hd__nor3_1 (21)
sky130_fd_sc_hd__dfrtp_1 (4) |sky130_fd_sc_hd__dfrtp_1 (4)
sky130_fd_sc_hd__a221oi_4 (1) |sky130_fd_sc_hd__a221oi_4 (1)
sky130_fd_sc_hd__nor2_1 (1) |sky130_fd_sc_hd__nor2_1 (1)
sky130_fd_sc_hd__or2b_1 (1) |sky130_fd_sc_hd__or2b_1 (1)
sky130_fd_sc_hd__mux4_1 (1) |sky130_fd_sc_hd__mux4_1 (1)
sky130_fd_sc_hd__nor3_2 (4) |sky130_fd_sc_hd__nor3_2 (4)
sky130_fd_sc_hd__nand3b_1 (2) |sky130_fd_sc_hd__nand3b_1 (2)
sky130_fd_sc_hd__or3b_2 (1) |sky130_fd_sc_hd__or3b_2 (1)
sky130_fd_sc_hd__o2111a_2 (1) |sky130_fd_sc_hd__o2111a_2 (1)
sky130_fd_sc_hd__dfrtn_1 (43) |sky130_fd_sc_hd__dfrtn_1 (43)
sky130_fd_pr__nfet_01v8_lvt (20->2) |sky130_fd_pr__nfet_01v8_lvt (20->2)
sky130_fd_sc_hd__o211a_1 (2) |sky130_fd_sc_hd__o211a_1 (2)
sky130_fd_sc_hd__conb_1 (1) |sky130_fd_sc_hd__conb_1 (1)
sky130_fd_sc_hd__mux4_2 (1) |sky130_fd_sc_hd__mux4_2 (1)
sky130_fd_sc_hd__nand2_1 (3) |sky130_fd_sc_hd__nand2_1 (3)
sky130_fd_sc_hd__or2_2 (1) |sky130_fd_sc_hd__or2_2 (1)
sky130_fd_sc_hd__o311a_1 (1) |sky130_fd_sc_hd__o311a_1 (1)
sky130_fd_sc_hd__o221ai_1 (1) |sky130_fd_sc_hd__o221ai_1 (1)
Number of devices: 267 |Number of devices: 267
Number of nets: 169 **Mismatch** |Number of nets: 170 **Mismatch**
---------------------------------------------------------------------------------------
NET mismatches: Class fragments follow (with fanout counts):
Circuit 1: tempsenseInst_error |Circuit 2: tempsenseInst_error
---------------------------------------------------------------------------------------
Net: r_VIN |Net: r_VIN
sky130_fd_pr__nfet_03v3_nvt/3 = 14 | sky130_fd_pr__nfet_03v3_nvt/3 = 14
sky130_fd_pr__nfet_03v3_nvt/1 = 14 | sky130_fd_pr__nfet_03v3_nvt/1 = 14
sky130_fd_pr__pfet_01v8_hvt/(1|3) = 9 |
sky130_fd_pr__pfet_01v8_hvt/4 = 9 |
sky130_fd_sc_hd__decap_4/VPB = 1 |
sky130_fd_sc_hd__decap_4/VPWR = 1 |
sky130_fd_sc_hd__nand2_1/VPB = 1 |
sky130_fd_sc_hd__nand2_1/VPWR = 1 |
|
(no matching net) |Net: VIN
| sky130_fd_sc_hd__decap_4/VPB = 1
| sky130_fd_sc_hd__decap_4/VPWR = 1
| sky130_fd_pr__pfet_01v8_hvt/(1|3) = 9
| sky130_fd_pr__pfet_01v8_hvt/4 = 9
| sky130_fd_sc_hd__nand2_1/VPB = 1
| sky130_fd_sc_hd__nand2_1/VPWR = 1
---------------------------------------------------------------------------------------
mehdi
02/14/2022, 5:32 AMmehdi
02/14/2022, 5:32 AMMitch Bailey
02/14/2022, 5:44 AMr_VIN
and VIN
. The layout has both texts at the same location on the same layer, so only one gets extracted. If they're supposed to be the same net, the CDL needs to be changed so that these are connected.mehdi
04/07/2022, 6:45 PM