diff --git a/checks/be_checks/tech/gf180mcuD/cvc.models b/checks/be_checks/tech/gf180mcuD/cvc.models index 597295b..48415d5 100644 --- a/checks/be_checks/tech/gf180mcuD/cvc.models +++ b/checks/be_checks/tech/gf180mcuD/cvc.models @@ -1,77 +1,27 @@ -MN nfet_01v8 Vth=0.2 Vgs=1.8 Vds=1.8 -MP pfet_01v8_hvt Vth=-0.2 Vgs=1.8 Vds=1.8 - -R short model=switch_on - D np_6p0 D pn_6p0 D diode_nd2ps_06v0 D diode_pd2nw_06v0 -D sky130_fd_pr__diode_pw2nd_05v5 -D sky130_fd_pr__diode_pw2nd_11v0 -D sky130_fd_pr__diode_pw2nd_05v5_nvt -D sky130_fd_pr__diode_pd2nw_05v5 -D sky130_fd_pr__diode_pd2nw_05v5_lvt -D sky130_fd_pr__diode_pd2nw_11v0 -D sky130_fd_pr__model__parasitic__diode_ps2dn -D sky130_fd_pr__model__parasitic__diode_ps2nw -D sky130_fd_pr__model__parasitic__diode_pw2dn D condiode - R ppolyf_u_1k_6p0 R=r_length/r_width*50 - -#R sky130_fd_pr__res_generic_m1 R=l/w*0.125 -#R sky130_fd_pr__res_generic_m2 R=l/w*0.125 -#R sky130_fd_pr__res_generic_m3 R=l/w*0.047 -#R sky130_fd_pr__res_generic_m4 R=l/w*0.047 -#R sky130_fd_pr__res_generic_nd R=l/w*0.029 -R sky130_fd_pr__res_generic_l1 model=switch_on -R sky130_fd_pr__res_generic_m1 model=switch_on -R sky130_fd_pr__res_generic_m2 model=switch_on -R sky130_fd_pr__res_generic_m3 model=switch_on -R sky130_fd_pr__res_generic_m4 model=switch_on -R sky130_fd_pr__res_generic_m5 model=switch_on -R sky130_fd_pr__res_generic_nd R=l/w*120 -R sky130_fd_pr__res_generic_nd__hv R=l/w*114 -R sky130_fd_pr__res_generic_pd__hv R=l/w*191 -R sky130_fd_pr__res_generic_po R=l/w*48 -R sky130_fd_pr__res_xhigh_po R=l/w*2000 -R sky130_fd_pr__res_high_po R=l/w*2000 -R sky130_fd_pr__reram_reram_cell R=10 +R ppolyf_u R=r_length/r_width*50 MN nfet_06v0 Vth=0.4 +MN nfet_06v0_dss Vth=0.4 MP pfet_06v0 Vth=-0.4 +MP pfet_06v0_dss Vth=-0.4 MN nmos_6p0 Vth=0.4 MP pmos_6p0 Vth=-0.4 MN nmos_3p3 Vth=0.3 MP pmos_3p3 Vth=-0.3 -MN sky130_fd_pr__nfet_01v8 Vth=0.2 Vgs=1.8 Vds=1.8 -MN sky130_fd_pr__nfet_01v8_lvt Vth=0.1 Vgs=1.8 Vds=1.8 -MN sky130_fd_pr__special_nfet_latch Vth=0.2 Vgs=1.8 Vds=1.8 -MN sky130_fd_pr__nfet_03v3_nvt Vth=0.2 Vgs=3.3 Vds=3.3 -MN sky130_fd_pr__esd_nfet_g5v0d10v5 Vth=0.2 -MN sky130_fd_pr__nfet_05v0_nvt Vth=0.2 -MN sky130_fd_pr__nfet_g5v0d10v5 Vth=0.2 -MN sky130_fd_bs_flash__special_sonosfet_star Vth=0.2 - -MP sky130_fd_pr__pfet_01v8 Vth=-0.2 Vgs=1.8 Vds=1.8 -MP sky130_fd_pr__pfet_01v8_lvt Vth=-0.1 Vgs=1.8 Vds=1.8 -MP sky130_fd_pr__pfet_01v8_hvt Vth=-0.3 Vgs=1.8 Vds=1.8 -MP sky130_fd_pr__special_pfet_pass Vth=-0.2 Vgs=1.8 Vds=1.8 -MP sky130_fd_pr__pfet_g5v0d10v5 Vth=-0.2 - C mim_2p0fF -C sky130_fd_pr__cap_mim_m3_1 -C sky130_fd_pr__cap_mim_m3_2 -C sky130_fd_pr__cap_var -C sky130_fd_pr__cap_var_lvt C cap_mim_2f0_m4m5_noshield +C cap_nmos_06v0 -Q sky130_fd_pr__pnp_05v5 diff --git a/checks/be_checks/tech/gf180mcuD/cvc.power.caravel b/checks/be_checks/tech/gf180mcuD/cvc.power.caravel index f80e6dc..f55dd56 100644 --- a/checks/be_checks/tech/gf180mcuD/cvc.power.caravel +++ b/checks/be_checks/tech/gf180mcuD/cvc.power.caravel @@ -1,18 +1,9 @@ -vccd power 1.8 -vccd1 power 1.8 -vccd2 power 1.8 -vdda power 3.3 -vdda1 power 3.3 -vdda1_2 power 3.3 -vdda2 power 3.3 -vddio power 3.3 -vddio_2 power 3.3 -vssa power 0.0 -vssa1 power 0.0 -vssa1_2 power 0.0 -vssa2 power 0.0 -vssd power 0.0 -vssd1 power 0.0 -vssd2 power 0.0 -vssio power 0.0 -vssio_2 power 0.0 +VDD power 5.0 +VSS power 0.0 +clock input min@0.0 max@5.0 +flash_clk input min@0.0 max@5.0 +flash_csb input min@0.0 max@5.0 +flash_io* input min@0.0 max@5.0 +gpio input min@0.0 max@5.0 +resetb input min@0.0 max@5.0 +mprj_io[*] input min@0.0 max@5.0 diff --git a/checks/be_checks/tech/gf180mcuD/gf180mcuD.tech b/checks/be_checks/tech/gf180mcuD/gf180mcuD.tech index cf8a97a..5cc4b5a 100644 --- a/checks/be_checks/tech/gf180mcuD/gf180mcuD.tech +++ b/checks/be_checks/tech/gf180mcuD/gf180mcuD.tech @@ -15,7 +15,7 @@ tech end version - version 1.0.453-0-g559a117 + version 1.0.455-1-ge0f692f description "Global Foundries 180mcu: open PDK rules and DRC" requires magic-8.3.411 end @@ -3011,8 +3011,6 @@ extract tiedown alldiffnonfet -variants () - substrate *ppdiff,*mvppdiff,space/w,pwell well $SUB -dnwell,isosub # Layer resistance @@ -3931,8 +3929,7 @@ variants (nowell) variants * - device csubcircuit cap_mim_2f0fF *mimcap *m4 l=c_length w=c_width - + device csubcircuit cap_mim_2f0_m4m5_noshield *mimcap *m4 l=c_length w=c_width end #----------------------------------------------------- diff --git a/checks/be_checks/tech/gf180mcuD/known_abstract_filter.awk b/checks/be_checks/tech/gf180mcuD/known_abstract_filter.awk index 8d49182..9da1950 100644 --- a/checks/be_checks/tech/gf180mcuD/known_abstract_filter.awk +++ b/checks/be_checks/tech/gf180mcuD/known_abstract_filter.awk @@ -4,4 +4,5 @@ /nfet_06v0/ {next} # ignore primitive devices /cap_nmos_06v0/ {next} # ignore primitive devices /ppolyf_u/ {next} # ignore primitive devices +/cap_mim/ {next} # ignore primitive devices { print } diff --git a/checks/be_checks/tech/gf180mcuD/lvs_config.base.json b/checks/be_checks/tech/gf180mcuD/lvs_config.base.json index 51de9f8..ec39fc2 100644 --- a/checks/be_checks/tech/gf180mcuD/lvs_config.base.json +++ b/checks/be_checks/tech/gf180mcuD/lvs_config.base.json @@ -1,7 +1,9 @@ { "EXTRACT_FLATGLOB": [ - "*nmos_*_*", - "*pmos_*_*" + "*nmos_*_*[A-Z]*", + "*mim_*_*[A-Z]*", + "*ppolyf_*_*[A-Z]*", + "*pmos_*_*[A-Z]*" ], "EXTRACT_ABSTRACT": [ "*__fill_*", diff --git a/checks/be_checks/tech/gf180mcuD/lvs_config.caravel_core.json b/checks/be_checks/tech/gf180mcuD/lvs_config.caravel_core.json index 7924d18..016bb9f 100644 --- a/checks/be_checks/tech/gf180mcuD/lvs_config.caravel_core.json +++ b/checks/be_checks/tech/gf180mcuD/lvs_config.caravel_core.json @@ -1,8 +1,8 @@ { "STD_CELL_LIBRARY": "gf180mcu_fd_sc_mcu7t5v0", + "SRAM_MACRO": "gf180mcu_fd_ip_sram__sram512x8m8wm1", "INCLUDE_CONFIGS": [ - "$LVS_ROOT/tech/$PDK/lvs_config.sram512x8m8wm1.json", - + "$LVS_ROOT/tech/$PDK/lvs_config.sram.json", "$LVS_ROOT/tech/$PDK/lvs_config.base.json", "$UPRJ_ROOT/lvs/user_project_wrapper/lvs_config.json" ], @@ -24,14 +24,13 @@ "" ], "LVS_SPICE_FILES": [ - "$CARAVEL_ROOT/xschem/simple_por.spice" + "$CARAVEL_ROOT/macros/simple_por/netlist/simple_por.spice" ], "LVS_VERILOG_FILES": [ "$MCW_ROOT/verilog/gl/gf180_ram_512x8_wrapper.v", "$CARAVEL_ROOT/verilog/gl/housekeeping.v", "$CARAVEL_ROOT/verilog/gl/mprj_io_buffer.v", "$CARAVEL_ROOT/verilog/gl/spare_logic_block.v", - "$UPRJ_ROOT/verilog/gl/gpio_defaults_block_*.v", "$UPRJ_ROOT/verilog/gl/user_id_programming.v", "$UPRJ_ROOT/verilog/gl/caravel_core.v" diff --git a/checks/be_checks/tech/gf180mcuD/lvs_config.chip_io.json b/checks/be_checks/tech/gf180mcuD/lvs_config.chip_io.json index 63787cb..8366d7d 100644 --- a/checks/be_checks/tech/gf180mcuD/lvs_config.chip_io.json +++ b/checks/be_checks/tech/gf180mcuD/lvs_config.chip_io.json @@ -10,6 +10,7 @@ "*NMOS_*", "*moscap_*", "*nmos_*", + "*pmos_*", "*comp018green*", "*POWER_RAIL_COR*", "*top_route*", @@ -37,7 +38,6 @@ "$PDK_ROOT/$PDK/libs.ref/gf180mcu_fd_io/spice/*.spice" ], "LVS_VERILOG_FILES": [ - "$CARAVEL_ROOT/verilog/gl/chip_io.v" ], "LAYOUT_FILE": "$UPRJ_ROOT/gds/caravel.gds" diff --git a/checks/be_checks/tech/gf180mcuD/lvs_config.sram.json b/checks/be_checks/tech/gf180mcuD/lvs_config.sram.json new file mode 100644 index 0000000..8682ef3 --- /dev/null +++ b/checks/be_checks/tech/gf180mcuD/lvs_config.sram.json @@ -0,0 +1,71 @@ +{ + "TOP_SOURCE": "$SRAM_MACRO", + "TOP_LAYOUT": "$TOP_SOURCE", + "EXTRACT_FLATGLOB": [ + "*$$*", + "*018SRAM_*", + "*Cell_array*", + "*GF018_*x8M8WM1_*", + "*G_ring_*", + "*M?_?ACTIVE*_*", + "*M?_M*_*", + "*M?_NWEL*_*", + "*M?_POLY*_*", + "*M?_PSUB*_*", + "*alatch*", + "*col_*", + "*control_*", + "*dcap_*", + "*din_*", + "*dummy*", + "*gen_*", + "*lcol4_*", + "*m2_saout*", + "*m2m3_*", + "*mux821_*", + "*new_dummyrow*", + "*nmos_*", + "*outbuf_oe*", + "*pmos_*", + "*pmoscap*", + "*power_*", + "*power_route*", + "*predec?_*", + "*prexdec_top*", + "*rarray*", + "*rcol4_*", + "*sa_*", + "*sacntl_*", + "*saout_*", + "*strapx2b_bndry*", + "*via1_*", + "*wen_*", + "*wen_wm1_*", + "*x8M8W*_PWR_*", + "*xdec16_*", + "*xdec32_*", + "*xdec64_*", + "*xdec8_*", + "*xdec_*", + "*ypass_gate*" + ], + "EXTRACT_ABSTRACT": [ + "" + ], + "LVS_FLATTEN": [ + "" + ], + "LVS_NOFLATTEN": [ + "" + ], + "LVS_IGNORE": [ + "" + ], + "LVS_SPICE_FILES": [ + "$PDK_ROOT/$PDK/libs.ref/gf180mcu_fd_ip_sram/spice/$TOP_SOURCE.spice" + ], + "LVS_VERILOG_FILES": [ + "" + ], + "LAYOUT_FILE": "$PDK_ROOT/$PDK/libs.ref/gf180mcu_fd_ip_sram/gds/$TOP_LAYOUT.gds" +} diff --git a/checks/be_checks/tech/gf180mcuD/remove_well.sed b/checks/be_checks/tech/gf180mcuD/remove_well.sed index 2a1763f..56a6866 100644 --- a/checks/be_checks/tech/gf180mcuD/remove_well.sed +++ b/checks/be_checks/tech/gf180mcuD/remove_well.sed @@ -1,19 +1,6 @@ -s/[^ ]* \(sky130_fd_pr__.fet\)/\1/ -s/[^ ]* \(sky130_fd_pr__special_.fet\)/\1/ -s/[^ ]* \(sky130_fd_pr__esd_.fet\)/\1/ -s/[^ ]* \(sky130_fd_pr__res_high_po\)/\1/ -s/[^ ]* \(sky130_fd_pr__res_xhigh_po\)/\1/ -s/[^ ]* \(sky130_fd_pr__res_generic_nd\)/\1/ -s/[^ ]* \(sky130_fd_pr__res_generic_pd\)/\1/ -s/[^ ]* \(sky130_fd_pr__cap_var_lvt\)/\1/ -s/[^ ]* \(sky130_fd_bs_flash__special_sonosfet_star\)/\1/ -s/[^ ]* \(ppolyf_u_1k_6p0\)/\1/ s/[^ ]* \(ppolyf_u\)/\1/ s/[^ ]* \(.fet_06v0\)/\1/ -/^D.* sky130_fd_pr__diode_pd2nw_/d -/^D.* sky130_fd_pr__diode_pw2nd_/d /^D.* diode_pd2nw_06v0/d /^D.* diode_nd2ps_06v0/d /^D.* np_6p0/d /^D.* pn_6p0/d -/^X.* sky130_fd_pr__pnp_05v5/d diff --git a/checks/be_checks/tech/sky130A/cvc.models b/checks/be_checks/tech/sky130A/cvc.models index 162afe2..6ec2500 100644 --- a/checks/be_checks/tech/sky130A/cvc.models +++ b/checks/be_checks/tech/sky130A/cvc.models @@ -28,6 +28,7 @@ R sky130_fd_pr__res_generic_m3 model=switch_on R sky130_fd_pr__res_generic_m4 model=switch_on R sky130_fd_pr__res_generic_m5 model=switch_on R sky130_fd_pr__res_generic_nd R=l/w*120 +R sky130_fd_pr__res_generic_pd R=l/w*197 R sky130_fd_pr__res_generic_nd__hv R=l/w*114 R sky130_fd_pr__res_generic_pd__hv R=l/w*191 R sky130_fd_pr__res_generic_po R=l/w*48 @@ -43,6 +44,7 @@ R sky130_fd_pr__res_high_po_0p69 R=l/0.69*300 R sky130_fd_pr__res_high_po_1p41 R=l/1.42*300 R sky130_fd_pr__res_high_po_2p86 R=l/2.86*300 R sky130_fd_pr__res_high_po_5p73 R=l/5.72*300 +R sky130_fd_pr__res_iso_pw R=l/w*4400 MN sky130_fd_pr__nfet_01v8 Vth=0.2 Vgs=1.8 Vds=1.8 MN sky130_fd_pr__nfet_01v8_lvt Vth=0.1 Vgs=1.8 Vds=1.8 diff --git a/checks/be_checks/tech/sky130A/fix_spice b/checks/be_checks/tech/sky130A/fix_spice index 1ef6d18..61a7c06 100755 --- a/checks/be_checks/tech/sky130A/fix_spice +++ b/checks/be_checks/tech/sky130A/fix_spice @@ -3,6 +3,12 @@ sed -i.org -e 's/sky130_fd_pr__pnp_05v5_W3p40L3p40/sky130_fd_pr__pnp_05v5 W=3.40 L=3.40/' \ -e 's/sky130_fd_pr__pnp_05v5_W0p68L0p68/sky130_fd_pr__pnp_05v5 area=3.25/' \ -e 's/sky130_fd_pr__res_high_po_0p35/sky130_fd_pr__res_high_po W=0.35/' \ + -e 's/sky130_fd_pr__res_high_po_0p69/sky130_fd_pr__res_high_po W=0.69/' \ + -e 's/sky130_fd_pr__res_high_po_1p41/sky130_fd_pr__res_high_po W=1.41/' \ + -e 's/sky130_fd_pr__res_high_po_2p85/sky130_fd_pr__res_high_po W=2.85/' \ + -e 's/sky130_fd_pr__res_high_po_5p73/sky130_fd_pr__res_high_po W=5p73/' \ -e 's/sky130_fd_pr__res_xhigh_po_0p35/sky130_fd_pr__res_xhigh_po W=0.35/' \ -e 's/sky130_fd_pr__res_xhigh_po_0p69/sky130_fd_pr__res_xhigh_po W=0.69/' \ - -e 's/sky130_fd_pr__res_xhigh_po_2p85/sky130_fd_pr__res_xhigh_po W=2.85/' $* + -e 's/sky130_fd_pr__res_xhigh_po_1p41/sky130_fd_pr__res_xhigh_po W=1.41/' \ + -e 's/sky130_fd_pr__res_xhigh_po_2p85/sky130_fd_pr__res_xhigh_po W=2.85/' \ + -e 's/sky130_fd_pr__res_xhigh_po_5p73/sky130_fd_pr__res_xhigh_po W=5.73/' $* diff --git a/checks/be_checks/tech/sky130A/remove_well.sed b/checks/be_checks/tech/sky130A/remove_well.sed index 2a1763f..5706283 100644 --- a/checks/be_checks/tech/sky130A/remove_well.sed +++ b/checks/be_checks/tech/sky130A/remove_well.sed @@ -16,4 +16,5 @@ s/[^ ]* \(.fet_06v0\)/\1/ /^D.* diode_nd2ps_06v0/d /^D.* np_6p0/d /^D.* pn_6p0/d +/^R.* sky130_fd_pr__res_iso_pw/d /^X.* sky130_fd_pr__pnp_05v5/d diff --git a/checks/be_checks/tech/sky130B/cvc.models b/checks/be_checks/tech/sky130B/cvc.models index c629e34..794f554 100644 --- a/checks/be_checks/tech/sky130B/cvc.models +++ b/checks/be_checks/tech/sky130B/cvc.models @@ -28,6 +28,7 @@ R sky130_fd_pr__res_generic_m3 model=switch_on R sky130_fd_pr__res_generic_m4 model=switch_on R sky130_fd_pr__res_generic_m5 model=switch_on R sky130_fd_pr__res_generic_nd R=l/w*120 +R sky130_fd_pr__res_generic_pd R=l/w*197 R sky130_fd_pr__res_generic_nd__hv R=l/w*114 R sky130_fd_pr__res_generic_pd__hv R=l/w*191 R sky130_fd_pr__res_generic_po R=l/w*48 @@ -43,6 +44,7 @@ R sky130_fd_pr__res_high_po_0p69 R=l/0.69*300 R sky130_fd_pr__res_high_po_1p41 R=l/1.42*300 R sky130_fd_pr__res_high_po_2p86 R=l/2.86*300 R sky130_fd_pr__res_high_po_5p73 R=l/5.72*300 +R sky130_fd_pr__res_iso_pw R=l/w*4400 R sky130_fd_pr__reram_reram_cell R=10 MN sky130_fd_pr__nfet_01v8 Vth=0.2 Vgs=1.8 Vds=1.8 diff --git a/checks/be_checks/tech/sky130B/fix_spice b/checks/be_checks/tech/sky130B/fix_spice index 1ef6d18..61a7c06 100755 --- a/checks/be_checks/tech/sky130B/fix_spice +++ b/checks/be_checks/tech/sky130B/fix_spice @@ -3,6 +3,12 @@ sed -i.org -e 's/sky130_fd_pr__pnp_05v5_W3p40L3p40/sky130_fd_pr__pnp_05v5 W=3.40 L=3.40/' \ -e 's/sky130_fd_pr__pnp_05v5_W0p68L0p68/sky130_fd_pr__pnp_05v5 area=3.25/' \ -e 's/sky130_fd_pr__res_high_po_0p35/sky130_fd_pr__res_high_po W=0.35/' \ + -e 's/sky130_fd_pr__res_high_po_0p69/sky130_fd_pr__res_high_po W=0.69/' \ + -e 's/sky130_fd_pr__res_high_po_1p41/sky130_fd_pr__res_high_po W=1.41/' \ + -e 's/sky130_fd_pr__res_high_po_2p85/sky130_fd_pr__res_high_po W=2.85/' \ + -e 's/sky130_fd_pr__res_high_po_5p73/sky130_fd_pr__res_high_po W=5p73/' \ -e 's/sky130_fd_pr__res_xhigh_po_0p35/sky130_fd_pr__res_xhigh_po W=0.35/' \ -e 's/sky130_fd_pr__res_xhigh_po_0p69/sky130_fd_pr__res_xhigh_po W=0.69/' \ - -e 's/sky130_fd_pr__res_xhigh_po_2p85/sky130_fd_pr__res_xhigh_po W=2.85/' $* + -e 's/sky130_fd_pr__res_xhigh_po_1p41/sky130_fd_pr__res_xhigh_po W=1.41/' \ + -e 's/sky130_fd_pr__res_xhigh_po_2p85/sky130_fd_pr__res_xhigh_po W=2.85/' \ + -e 's/sky130_fd_pr__res_xhigh_po_5p73/sky130_fd_pr__res_xhigh_po W=5.73/' $* diff --git a/checks/be_checks/tech/sky130B/remove_well.sed b/checks/be_checks/tech/sky130B/remove_well.sed index 2a1763f..5706283 100644 --- a/checks/be_checks/tech/sky130B/remove_well.sed +++ b/checks/be_checks/tech/sky130B/remove_well.sed @@ -16,4 +16,5 @@ s/[^ ]* \(.fet_06v0\)/\1/ /^D.* diode_nd2ps_06v0/d /^D.* np_6p0/d /^D.* pn_6p0/d +/^R.* sky130_fd_pr__res_iso_pw/d /^X.* sky130_fd_pr__pnp_05v5/d