Skip to content

Commit

Permalink
Merge pull request #257 from d-m-bailey/sky130-tech-update
Browse files Browse the repository at this point in the history
Tech file updates
  • Loading branch information
jeffdi authored Nov 13, 2023
2 parents b633b0f + 66da67e commit eed8fb2
Show file tree
Hide file tree
Showing 15 changed files with 115 additions and 99 deletions.
58 changes: 4 additions & 54 deletions checks/be_checks/tech/gf180mcuD/cvc.models
Original file line number Diff line number Diff line change
@@ -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


27 changes: 9 additions & 18 deletions checks/be_checks/tech/gf180mcuD/cvc.power.caravel
Original file line number Diff line number Diff line change
@@ -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
7 changes: 2 additions & 5 deletions checks/be_checks/tech/gf180mcuD/gf180mcuD.tech
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -3011,8 +3011,6 @@ extract

tiedown alldiffnonfet

variants ()

substrate *ppdiff,*mvppdiff,space/w,pwell well $SUB -dnwell,isosub

# Layer resistance
Expand Down Expand Up @@ -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

#-----------------------------------------------------
Expand Down
1 change: 1 addition & 0 deletions checks/be_checks/tech/gf180mcuD/known_abstract_filter.awk
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
6 changes: 4 additions & 2 deletions checks/be_checks/tech/gf180mcuD/lvs_config.base.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
{
"EXTRACT_FLATGLOB": [
"*nmos_*_*",
"*pmos_*_*"
"*nmos_*_*[A-Z]*",
"*mim_*_*[A-Z]*",
"*ppolyf_*_*[A-Z]*",
"*pmos_*_*[A-Z]*"
],
"EXTRACT_ABSTRACT": [
"*__fill_*",
Expand Down
7 changes: 3 additions & 4 deletions checks/be_checks/tech/gf180mcuD/lvs_config.caravel_core.json
Original file line number Diff line number Diff line change
@@ -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"
],
Expand All @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion checks/be_checks/tech/gf180mcuD/lvs_config.chip_io.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"*NMOS_*",
"*moscap_*",
"*nmos_*",
"*pmos_*",
"*comp018green*",
"*POWER_RAIL_COR*",
"*top_route*",
Expand Down Expand Up @@ -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"
Expand Down
71 changes: 71 additions & 0 deletions checks/be_checks/tech/gf180mcuD/lvs_config.sram.json
Original file line number Diff line number Diff line change
@@ -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"
}
13 changes: 0 additions & 13 deletions checks/be_checks/tech/gf180mcuD/remove_well.sed
Original file line number Diff line number Diff line change
@@ -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
2 changes: 2 additions & 0 deletions checks/be_checks/tech/sky130A/cvc.models
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
8 changes: 7 additions & 1 deletion checks/be_checks/tech/sky130A/fix_spice
Original file line number Diff line number Diff line change
Expand Up @@ -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/' $*
1 change: 1 addition & 0 deletions checks/be_checks/tech/sky130A/remove_well.sed
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 2 additions & 0 deletions checks/be_checks/tech/sky130B/cvc.models
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
8 changes: 7 additions & 1 deletion checks/be_checks/tech/sky130B/fix_spice
Original file line number Diff line number Diff line change
Expand Up @@ -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/' $*
1 change: 1 addition & 0 deletions checks/be_checks/tech/sky130B/remove_well.sed
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit eed8fb2

Please sign in to comment.