diff --git a/gf180mcu/magic/gf180mcu.tcl b/gf180mcu/magic/gf180mcu.tcl index bb7b4a09..36e1012f 100644 --- a/gf180mcu/magic/gf180mcu.tcl +++ b/gf180mcu/magic/gf180mcu.tcl @@ -71,9 +71,9 @@ namespace eval gf180mcu { dict set ruleset diffres_spacing 0.40 ;# Diffusion resistor spacing rule dict set ruleset polyres_spacing 0.40 ;# Poly resistor spacing rule dict set ruleset diff_poly_space 0.10 ;# Diffusion to poly spacing rule - dict set ruleset diff_gate_space 0.10 ;# Diffusion to gate poly spacing rule + dict set ruleset diff_gate_space 0.11 ;# Diffusion to gate poly spacing rule dict set ruleset metal_spacing 0.23 ;# Metal1 spacing rule - dict set ruleset mmetal_spacing 0.23 ;# Metal spacing rule (above metal1) + dict set ruleset mmetal_spacing 0.38 ;# Metal spacing rule (above metal1) dict set ruleset sblk_to_cont 0.33 ;# resistor to contact center dict set ruleset sblk_diff_space 0.44 ;# resistor to guard ring } @@ -2780,10 +2780,10 @@ proc gf180mcu::nwell_draw {parameters} { plus_contact_type psc \ sub_type pwell \ end_surround $diff_surround \ - end_spacing 1.2 \ + end_spacing 1.4 \ overlap_compress -0.84 \ - res_to_endcont 0.22 \ - res_spacing 1.2 \ + res_to_endcont 0.38 \ + res_spacing 1.4 \ res_diff_spacing 0.28 \ well_res_overlap 0.24 \ ] @@ -2953,8 +2953,8 @@ proc gf180mcu::rm5_draw {parameters} { res_type rm5 \ end_type m5 \ end_surround 0.0 \ - end_spacing 0.0 \ - res_to_endcont 0.2 \ + end_spacing 0.0\ + res_to_endcont 0.265 \ res_spacing $mmetal_spacing \ ] set drawdict [dict merge $gf180mcu::ruleset $newdict $parameters] @@ -3282,16 +3282,16 @@ proc gf180mcu::nfet_06v0_nvt_defaults {} { } proc gf180mcu::nfet_10v0_asym_defaults {} { - return {w 1.0 l 1.0 m 1 nf 1 diffcov 100 polycov 100 \ + return {w 4 l 0.6 m 1 nf 1 diffcov 100 polycov 100 \ guard 1 glc 1 grc 1 gtc 0 gbc 0 tbcov 100 rlcov 100 \ - topc 1 botc 1 poverlap 0 doverlap 1 lmin 1.0 wmin 1.0 \ + topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.6 wmin 4 \ full_metal 1 } } proc gf180mcu::pfet_10v0_asym_defaults {} { - return {w 1.0 l 1.0 m 1 nf 1 diffcov 100 polycov 100 \ + return {w 4.0 l 0.6 m 1 nf 1 diffcov 100 polycov 100 \ guard 1 glc 1 grc 1 gtc 0 gbc 0 tbcov 100 rlcov 100 \ - topc 1 botc 1 poverlap 0 doverlap 1 lmin 1.0 wmin 1.0 \ + topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.6 wmin 4.0 \ full_metal 1 } } diff --git a/gf180mcu/magic/gf180mcu.tech b/gf180mcu/magic/gf180mcu.tech index 8197334a..3c699bc8 100644 --- a/gf180mcu/magic/gf180mcu.tech +++ b/gf180mcu/magic/gf180mcu.tech @@ -4787,60 +4787,60 @@ variants * # All devices except diodes are modeled as subcircuits # device list: -# nfet_03v3 mosfet -# pfet_03v3 mosfet -# nfet_06v0 mosfet (thick oxide) -# pfet_06v0 mosfet (thick oxide) -# nfet_06v0_nvt mosfet (native Vt) -# nfet_03v3_dss mosfet (unsalicided drain) -# pfet_03v3_dss mosfet (unsalicided drain) -# nfet_06v0_dss mosfet (unsalicided drain, thick oxide) -# pfet_06v0_dss mosfet (unsalicided drain, thick oxide) -# nfet_10v0_asym LDNMOS (extended drain) -# pfet_10v0_asym LDPMOS (extended drain) +## nfet_03v3 mosfet +## pfet_03v3 mosfet +## nfet_06v0 mosfet (thick oxide) +## pfet_06v0 mosfet (thick oxide) +## nfet_06v0_nvt mosfet (native Vt) +## nfet_03v3_dss mosfet (unsalicided drain) +## pfet_03v3_dss mosfet (unsalicided drain) +## nfet_06v0_dss mosfet (unsalicided drain, thick oxide) +## pfet_06v0_dss mosfet (unsalicided drain, thick oxide) +## nfet_10v0_asym LDNMOS (extended drain) +## pfet_10v0_asym LDPMOS (extended drain) # -# diode_nd2ps_03v3 diode (N+/pwell) -# diode_pd2nw_03v3 diode (P+/nwell) -# diode_nd2ps_06v0 diode (N+/pwell, high voltage) -# diode_pd2nw_06v0 diode (P+/nwell, high voltage) -# diode_nw2pw_03v3 diode (nwell/pwell) -# diode_nw2pw_06v0 diode (nwell/pwell, high voltage) -# diode_dnw2pw diode (pwell/dnwell) -# diode_dnw2ps diode (dnwll/substrate) -# sc_diode diode (Schottky) +## diode_nd2ps_03v3 diode (N+/pwell) +## diode_pd2nw_03v3 diode (P+/nwell) +## diode_nd2ps_06v0 diode (N+/pwell, high voltage) +## diode_pd2nw_06v0 diode (P+/nwell, high voltage) +## diode_nw2pw_03v3 diode (nwell/pwell) +## diode_nw2pw_06v0 diode (nwell/pwell, high voltage) +## diode_dnw2pw diode (pwell/dnwell) +## diode_dnw2ps diode (dnwll/substrate) +## sc_diode diode (Schottky) # # pnp_WxL BJT (10x10, 5x5, 0.42x10, 0.42x5 emitter sizes) # npn_WxL BJT (10x10, 5x5, 0.54x16, 0.54x8, 0.54x4, 0.54x2) # -# npolyf_u resistor (N+ poly, unsalicided) -# ppolyf_u resistor (P+ poly, unsalicided) -# ppolyf_u_1k resistor (high res resistor)* -# ppolyf_u_1k_6p0 resistor (high res resistor, high voltage)* -# nplus_u resistor (N+ diffusion, unsalicided) -# pplus_u resistor (P+ diffusion, unsalicided) -# npolyf_s resistor (N+ poly, salicided) -# ppolyf_s resistor (P+ poly, salicided) -# nplus_s resistor (N+ diffusion, salicided) -# pplus_s resistor (N+ diffusion, salicided) -# nwell resistor (N-well resistor) -# rm1 resistor (metal1) -# rm2 resistor (metal2) -# rm3 resistor (metal3) -# rm4 resistor (metal4) -# rm5 resistor (metal5) -# tm6k resistor (top metal, 0.6um thick (standard))** -# tm9k resistor (top metal, 0.9um thick) -# tm11k resistor (top metal, 1.1um thick) -# tm30k resistor (top metal, 3.0um thick) +## npolyf_u resistor (N+ poly, unsalicided) +## ppolyf_u resistor (P+ poly, unsalicided) +## ppolyf_u_1k resistor (high res resistor)* +## ppolyf_u_1k_6p0 resistor (high res resistor, high voltage)* +## nplus_u resistor (N+ diffusion, unsalicided) +## pplus_u resistor (P+ diffusion, unsalicided) +## npolyf_s resistor (N+ poly, salicided) +## ppolyf_s resistor (P+ poly, salicided) +## nplus_s resistor (N+ diffusion, salicided) +## pplus_s resistor (N+ diffusion, salicided) +## nwell resistor (N-well resistor) +## rm1 resistor (metal1) +## rm2 resistor (metal2) +## rm3 resistor (metal3) +## rm4 resistor (metal4) +## rm5 resistor (metal5) +## tm6k resistor (top metal, 0.6um thick (standard))** +## tm9k resistor (top metal, 0.9um thick) +## tm11k resistor (top metal, 1.1um thick) +## tm30k resistor (top metal, 3.0um thick) # -# cap_nmos_03v3 mosfet (source-drain tied) -# cap_pmos_03v3 mosfet (source-drain tied) -# cap_nmos_06v0 mosfet (source-drain tied, high voltage) -# cap_pmos_06v0 mosfet (source-drain tied, high voltage) -# cap_nmos_03v3_b mosfet (n-varactor) -# cap_pmos_03v3_b mosfet (p-varactor) -# cap_nmos_06v0_b mosfet (n-varactor, high voltage) -# cap_pmos_06v0_b mosfet (p-varactor, high voltage) +## cap_nmos_03v3 mosfet (source-drain tied) +## cap_pmos_03v3 mosfet (source-drain tied) +## cap_nmos_06v0 mosfet (source-drain tied, high voltage) +## cap_pmos_06v0 mosfet (source-drain tied, high voltage) +## cap_nmos_03v3_b mosfet (n-varactor) +## cap_pmos_03v3_b mosfet (p-varactor) +## cap_nmos_06v0_b mosfet (n-varactor, high voltage) +## cap_pmos_06v0_b mosfet (p-varactor, high voltage) # # cap_mim_2f0fF capacitor (MiM)*,** # diff --git a/gf180mcu/magic/gf180mcu_make_torture.tcl b/gf180mcu/magic/gf180mcu_make_torture.tcl index dc1d3aa2..091dbf0a 100644 --- a/gf180mcu/magic/gf180mcu_make_torture.tcl +++ b/gf180mcu/magic/gf180mcu_make_torture.tcl @@ -46,7 +46,7 @@ proc mos_array {n devname startx starty} { magic::gencell gf180mcu::${devname} ${devname}_$i w $w l $l m $m nf $nf diffcov $dcov polycov $pcov rlcov $rlcov poverlap $pov doverlap $dov topc $tc botc $bc full_metal $fm glc $gl grc $gr gbc $gb gtc $gt select cell ${devname}_$i set bh [box height] - set bh [+ $bh 124] + set bh [+ $bh 200] box move n $bh incr i } @@ -88,7 +88,7 @@ proc res_array {n devname startx starty} { magic::gencell gf180mcu::${devname} ${devname}_$i w $w l $l m $m nx $nx endcov $ecov roverlap $rov snake $sn full_metal $fm glc $gl grc $gr gbc $gb gtc $gt select cell ${devname}_$i set bh [box height] - set bh [+ $bh 124] + set bh [+ $bh 200] box move n $bh incr i } @@ -130,7 +130,7 @@ proc diode_array {n devname startx starty} { magic::gencell gf180mcu::${devname} ${devname}_$i w $w l $l nx $nx ny $ny doverlap $dov full_metal $fm elc $el erc $er etc $et ebc $eb glc $gl grc $gr gbc $gb gtc $gt select cell ${devname}_$i set bh [box height] - set bh [+ $bh 124] + set bh [+ $bh 200] box move n $bh incr i } @@ -225,48 +225,70 @@ box size 0 0 # -mos_array 6 nmos_3p3 0 0 -mos_array 6 pmos_3p3 0 75000 -mos_array 6 nmos_6p0 0 150000 -mos_array 6 pmos_6p0 0 225000 -mos_array 6 pmos_3p3_lvt 0 300000 -mos_array 6 pmos_3p3_hvt 0 375000 -mos_array 6 nmos_3p3_lvt 0 450000 -mos_array 6 nmos_3p3_hvt 0 525000 -mos_array 6 nmos_3p3_nat 0 600000 -mos_array 6 nmos_6p0_nat 0 675000 - -res_array 6 nplus_u 100000 0 -res_array 6 pplus_u 100000 180000 - -res_array 6 nwell_1p2 200000 0 -res_array 6 ppolyf_s 200000 180000 - -res_array 6 npolyf_u 300000 0 -res_array 6 ppolyf_u 300000 180000 - -res_array 6 nplus_u_3p3 400000 0 -res_array 6 pplus_u_3p3 400000 180000 - -diode_array 6 np_1p2 500000 0 -diode_array 6 pn_1p2 500000 30000 -diode_array 6 np_3p3 500000 60000 -diode_array 6 pn_3p3 500000 90000 -diode_array 6 np_1p2_lvt 500000 120000 -diode_array 6 np_1p2_hvt 500000 150000 -diode_array 6 np_1p2_nat 500000 180000 -diode_array 6 pn_1p2_lvt 500000 210000 -diode_array 6 pn_1p2_hvt 500000 240000 +mos_array 6 nfet_03v3 0 0 +mos_array 6 pfet_03v3 0 75000 +mos_array 6 nfet_06v0 0 150000 +mos_array 6 pfet_06v0 0 225000 +mos_array 6 nfet_06v0_nvt 0 300000 +mos_array 6 nfet_03v3_dss 0 375000 +mos_array 6 pfet_03v3_dss 0 450000 +mos_array 6 nfet_06v0_dss 0 525000 +mos_array 6 pfet_06v0_dss 0 600000 +mos_array 6 nfet_10v0_asym 0 675000 +mos_array 6 pfet_10v0_asym 0 725000 + +res_array 6 npolyf_u 100000 0 +res_array 6 ppolyf_u 100000 180000 + +res_array 6 ppolyf_u_1k 200000 0 +res_array 6 ppolyf_u_1k_6p0 200000 180000 + +res_array 6 nplus_u 300000 0 +res_array 6 pplus_u 300000 180000 + +res_array 6 npolyf_s 400000 0 +res_array 6 ppolyf_s 400000 180000 + +#res_array 6 nplus_s 400000 0 +#res_array 6 pplus_s 400000 180000 + +res_array 6 nwell 800000 0 +res_array 6 rm1 800000 180000 +res_array 6 rm2 800000 360000 +res_array 6 rm3 800000 540000 +res_array 6 rm4 800000 720000 +res_array 6 rm5 800000 900000 +#res_array 6 rmtp 800000 1080000 +#res_array 6 rmtp 800000 1260000 +#res_array 6 rmtp 800000 1440000 +#res_array 6 rmtp 800000 1620000 + +diode_array 6 diode_nd2ps_03v3 500000 0 +diode_array 6 diode_pd2nw_03v3 500000 30000 +diode_array 6 diode_nd2ps_06v0 500000 60000 +diode_array 6 diode_pd2nw_06v0 500000 90000 +diode_array 6 diode_nw2pw_03v3 500000 120000 +diode_array 6 diode_nw2pw_06v0 500000 150000 +diode_array 6 diode_dnw2pw 500000 180000 +diode_array 6 diode_dnw2ps 500000 210000 +diode_array 6 sc_diode 500000 240000 diode_array 6 np_3p3_nat 500000 270000 # Add individual devices from primdev, check GDS pointers -fixed_array 2 vnpn_2x2 600000 0 -fixed_array 2 vnpn_5x0p42 600000 50000 -fixed_array 2 vnpn_5x5 600000 100000 -fixed_array 2 vnpn_10x0p42 600000 150000 - -cap_array 6 mim_sm_bb 600000 200000 -# cap_array 6 apmom_bb 600000 250000 +fixed_array 2 efuse 600000 0 +#fixed_array 2 vnpn_5x0p42 600000 50000 +#fixed_array 2 vnpn_5x5 600000 100000 +#fixed_array 2 vnpn_10x0p42 600000 150000 + +cap_array 6 nmoscap_3p3 600000 200000 +cap_array 6 cap_mim_2p0fF 600000 250000 +cap_array 6 nmoscap_6p0 600000 500000 +#cap_array 6 cap_pmos_06v0 600000 750000 +#cap_array 6 cap_nmos_03v3_b 600000 1000000 +#cap_array 6 cap_pmos_03v3_b 600000 1250000 +#cap_array 6 cap_nmos_06v0_b 600000 1500000 +#cap_array 6 cap_pmos_06v0_b 600000 1750000 +#cap_array 6 cap_mim_2f0fF 600000 2000000 save torture_test_gf013 gds write torture_test_gf013 diff --git a/tatus b/tatus new file mode 100644 index 00000000..14938e1d --- /dev/null +++ b/tatus @@ -0,0 +1,187 @@ +commit dd7771c384ed36b91a25e9f8b314355fc26561be (HEAD -> develop_19_09, tag: 1.0.446, origin/open_pdks-1.0, origin/master, origin/HEAD, master) +Author: Tim Edwards +Date: Thu Sep 14 10:10:23 2023 -0400 + + Added a "halt on error" clause to the startup scripts for sky130 + and gf180mcu. This causes an immediate exit if the technology + file fails to load (might want to refine that to exit with a + non-zero exit code). + +commit 6ffd5cc20e17f138aeacef61387ef85bf04f8612 +Author: Tim Edwards +Date: Thu Sep 14 09:46:35 2023 -0400 + + Updated version to go along with the merge of pull request #400 + from Donn (adds pin direction and use to power pins on the LEF + views of the custom Efabless versions of specific standard + cells). + +commit 72601f6c5eff88303cafd76d9ad5e54eca7ec088 +Author: Donn +Date: Thu Sep 14 16:33:58 2023 +0300 + + Fix Power Pins of `sky130_ef_sc_hd` + + Adds correct direction and power attributes to LEF views of `sky130_ef_sc_hd` cells. + + I also added a Readme with your Slack comment for documentation purposes. + +commit 478671302278e9708a289b8ba826d96e6df92277 (tag: 1.0.445) +Author: Tim Edwards +Date: Wed Sep 13 13:55:18 2023 -0400 + + Extended the generated device script for GF180MCU to allow MOS + devices to be drawn with asymmetric source and drain. This + does not affect the existing routines but will enable future + drawing routines for the LDMOS and DSS devices. + +commit 754e23df047ece3ae31b95821355487a74326397 +Author: Tim Edwards +Date: Wed Sep 13 10:08:39 2023 -0400 + + Updated version to go along with the merge of pull request #399 + by Qurrat. + +commit 2bb8640101bae83e7ef90ebd1f6afebc20649f4f +Author: qurratulainalam +Date: Wed Sep 13 18:34:39 2023 +0500 + + changed values of xstep and ystep + +commit ac3c0df35385a1f28c181f2c9e42cb59fcb1e730 (tag: 1.0.444) +Author: Tim Edwards +Date: Tue Sep 12 16:07:32 2023 -0400 + + Updated version to go along with pull request #398 from Kareem + Farid (changes to excluded cells in openlane setup for gf180mcu). + +commit a27276f817cee3d75f82f81766f32286a15fdb12 +Author: kareefardi +Date: Tue Sep 12 22:01:55 2023 +0300 + + fix cell pad exclude list for gf180mcu + +commit ebba698e38217b7af5817de5ff6e7b1f4be45fa1 (tag: 1.0.443) +Author: Tim Edwards +Date: Mon Sep 11 10:38:34 2023 -0400 + + Changed the analog pads so that the original name "sky130_ef_io__analog_pad" + refers to the bare pad with no ESD, which has been used (with the same name) + on all sky130 tapeouts of the caravan chip. The newer pad with the full ESD + structures is now named "sky130_ef_io__analog_esd_pad". Any actual changes + to the caravan padframe layout will be done in the caravel repository, and + not caused by a change in the PDK. + +commit f4e9d0344cd48cdc0ea4103272ab3f12a709e5f3 (tag: 1.0.442) +Author: Tim Edwards +Date: Wed Sep 6 10:18:14 2023 -0400 + + Updated the version to go along with pull request #396 by Qurrat. + +commit d19773838778e4af8584a63beba8e3b7a14be79d +Author: qurratulainalam +Date: Wed Sep 6 19:08:39 2023 +0500 + + changed the string button's error + +commit 28cdecd30408a6c86b47dc91df898f715bae399a +Author: qurratulainalam +Date: Wed Sep 6 18:15:17 2023 +0500 + + new devices + +commit 5110323ae8f11d4f3a44d2a88275799ef873d0f0 +Author: qurratulainalam +Date: Fri Sep 1 18:42:29 2023 +0500 + + new devices added + +commit 99b76b15a3837f735e0ffa1f3c9dcec95ba80364 (tag: 1.0.441) +Author: Tim Edwards +Date: Tue Sep 5 17:55:57 2023 -0400 + + Added preliminary support in the magic tech file for LDMOS + devices (N and P) and the Schottky diode. Corrected DRC rules + to allow either nwell or dnwell (or both) under devices. Many + DRC rules for the new devices have not yet been implemented. + Extraction should work but has not been tested yet. + +commit 43e733efca70e60743f5d0e4c1c4fad907676388 (tag: 1.0.440) +Author: Tim Edwards +Date: Mon Sep 4 11:12:22 2023 -0400 + + Updated version to go along with the merge of pull request #394 + from Vasil Yordanov and pull request #395 from Karim Fareed. + +commit 80505e3f3f1ec1143c3df5a5d95df0aa8c4fd7b2 +Author: Landflier +Date: Sat Sep 2 10:32:43 2023 +0200 + + Add: bash script in common/ to extract fr_pr device names and create a tcl file with their respective draw, defaults, dialog, check, and convert routines. + +commit 1a90b972db3026898848e34c04bf9934f9dbc56c +Author: kareefardi +Date: Sun Sep 3 17:16:02 2023 +0300 + + bump sky130_klayout version + +commit 1380ad782fa1d2e2cc976faa5af64840d655d48f +Author: kareefardi +Date: Sun Sep 3 15:25:27 2023 +0300 + + escape other commit versions + +commit 1341f54f5ce0c4955326297f235e4ace1eb6d419 (tag: 1.0.439) +Author: Tim Edwards +Date: Sun Aug 27 17:13:24 2023 -0400 + + Corrected the LEF files of the sky130_ef_sc_hd__* cells so that they are + compatible with the LEF views of sky130_fd_sc_hd__*. This *actually* fixes + the problem that was supposed to have been fixed in a recent commit. + +commit 8a7d53a6756e8d4350693c1f2af63c5879ce6d20 (tag: 1.0.438) +Author: Tim Edwards +Date: Thu Aug 24 11:28:19 2023 -0400 + + Updated references for gf180mcu and sky130. This updates the + open_pdks reference for sky130 to pick up the modified makefile + from the previous commit, and picks up some changes made to the + gf180mcu_fd_pr library by Amro Tork. + +commit 10d637bc671d3859099970970ec059caccd83cab +Author: Tim Edwards +Date: Thu Aug 24 11:25:28 2023 -0400 + + Corrected the sky130 Makefile so that LEF views for the Efabless + library extension to sky130_fd_sc_hd (sky130_ef_sc_hd) get the same + flags for "lef write" as the base library. Otherwise there are + incompatibilities in the "maglef" views of the cells which result + in feedback errors in magic when abstract views of cells from the + base library and the library extension overlap. + +commit e3b630d9b7c0e23615367d52c4f78b2d2ede58ac (tag: 1.0.437) +Author: Tim Edwards +Date: Mon Aug 21 15:38:16 2023 -0400 + + Updated references to catch the update to the sky130 HD standard + cell library (diode_2 cell perimeter value fixed in the SPICE + netlist for the cell). + +commit 89d3ef1161fb81dc835fc8e1bd2d8bd7eff7670b (tag: 1.0.436) +Author: Tim Edwards +Date: Sat Aug 19 21:51:34 2023 -0400 + + Corrected the SBLK-to-poly-contact spacing rule in the magic + device generator script from 0.335um to 0.33um. The original value + did not account for the difference between the drawn contact size + in magic and the size of the cut layer. The error resulted in poly + resistors with contacts 0.005um too far from the resistor, causing + a DRC violation. + +commit 2344182ded373376d94dad4f28d2141e294a1b56 (tag: 1.0.435) +Author: Tim Edwards +Date: Tue Aug 15 15:35:44 2023 -0400 + + Updated references in response to Amro Tork's request, after some + updates to the gf180mcu_fd_pr library. A few other libraries for + both gf180mcu and sky13 \ No newline at end of file