Significant improvements to primitives sky130_fd_pr version 0.12.0. This commit contains major improvements to all files by regenerating from original data, improving consistency and automated cross checking of data. These improvements should drastically reduce customer confusion when using the library and further reduce future possibility for human errors to creep into designs. Notable improvements include; * A large number of files have been regenerated from original source data (compared to previous hand created versions). * Catalog and other library aggregations are now automatically generated from library contents (compared to previous hand created versions). * Significant improvements to documentation for all cells and models, including producing graphical representations, verified metadata and descriptions. * Names have been cross referenced between file types (such as simulation, layout, schematic and timing) and now verified to match. * Names have been improved to fix a standard format across all supported libraries and PDK contents. * Significant improvements to the contents of text files through improving consistent style that has been automatically checked. * Simplified spice files for usage with open tools. * Too many numerous other changes to list here. Signed-off-by: Kevin Kelley <kevin.kelley@skywatertechnology.com> Signed-off-by: Tim 'mithro' Ansell <tansell@google.com>
diff --git a/cells/cap_mim_m3/sky130_fd_pr__cap_mim_m3_1.model.spice b/cells/cap_mim_m3/sky130_fd_pr__cap_mim_m3_1.model.spice index 0eeb95b..bff2319 100644 --- a/cells/cap_mim_m3/sky130_fd_pr__cap_mim_m3_1.model.spice +++ b/cells/cap_mim_m3/sky130_fd_pr__cap_mim_m3_1.model.spice
@@ -20,12 +20,10 @@ .param num_contacts = '(wc*lc/via3_spacing)' .param r1 = 'rm3*(lc)/(wc)' .param r2 = 'rcvia3/num_contacts' -.param vc1 = -25.0e-6 -.param vc2 = 90.0e-6 .param carea = 'camimc*(wc)*(lc)' .param cperim = 'cpmimc*((wc)+(lc))*2' .param czero = 'carea + cperim' dev/gauss='0.01*2.8*(carea + cperim)/sqrt(wc*lc*mf)' -c1 c0 a 'czero*(1+vc1*(v(c0)-v(c1))+vc2*(v(c0)-v(c1))*(v(c0)-v(c1)))' tc1 = 0 tc2 = 0.0 +c1 c0 a 'czero' tc1 = 0 tc2 = 0.0 rs1 a b1 'r1' tc1 = {tc1rm3} tc2 = {tc2rm3} rs2 b1 c1 'r2' tc1 = {tc1rvia3} tc2 = {tc2rvia3} .ends sky130_fd_pr__cap_mim_m3_1
diff --git a/cells/cap_mim_m3/sky130_fd_pr__cap_mim_m3_2.model.spice b/cells/cap_mim_m3/sky130_fd_pr__cap_mim_m3_2.model.spice index 635c780..195a865 100644 --- a/cells/cap_mim_m3/sky130_fd_pr__cap_mim_m3_2.model.spice +++ b/cells/cap_mim_m3/sky130_fd_pr__cap_mim_m3_2.model.spice
@@ -20,12 +20,10 @@ .param num_contacts = '(wc*lc/via4_spacing)' .param r1 = 'rm4*(lc)/(wc)' .param r2 = 'rcvia4/num_contacts' -.param vc1 = -25.0e-6 -.param vc2 = 90.0e-6 .param carea = 'camimc*(wc)*(lc)' .param cperim = 'cpmimc*((wc)+(lc))*2' .param czero = 'carea + cperim' dev/gauss='0.01*2.8*(carea + cperim)/sqrt(wc*lc*mf)' -c1 c0 a 'czero*(1+vc1*(v(c0)-v(c1))+vc2*(v(c0)-v(c1))*(v(c0)-v(c1)))' tc1 = 0 tc2 = 0.0 +c1 c0 a 'czero' tc1 = 0 tc2 = 0.0 rs1 a b1 'r1' tc1 = {tc1rm4} tc2 = {tc2rm4} rs2 b1 c1 'r2' tc1 = {tc1rvia4} tc2 = {tc2rvia4} .ends sky130_fd_pr__cap_mim_m3_2
diff --git a/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_0p35.model.spice b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_0p35.model.spice new file mode 100644 index 0000000..3a0a593 --- /dev/null +++ b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_0p35.model.spice
@@ -0,0 +1,24 @@ +* Copyright 2020 The SkyWater PDK Authors +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. + +* SKY130 Spice File. +* statistics { +* mismatch { +* } +* } +.subckt sky130_fd_pr__res_xhigh_po_0p35 r0 r1 b ++ +.param w = 0.35 l = 5 mult = 1.0 +Xsky130_fd_pr__res_xhigh_po_0p35 r0 r1 b sky130_fd_pr__res_xhigh_po__base w = {w} l = {l} mult = {mult} +.ends sky130_fd_pr__res_xhigh_po_0p35
diff --git a/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_0p69.model.spice b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_0p69.model.spice new file mode 100644 index 0000000..c7956dd --- /dev/null +++ b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_0p69.model.spice
@@ -0,0 +1,24 @@ +* Copyright 2020 The SkyWater PDK Authors +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. + +* SKY130 Spice File. +* statistics { +* mismatch { +* } +* } +.subckt sky130_fd_pr__res_xhigh_po_0p69 r0 r1 b ++ +.param w = 0.69 l = 5 mult = 1.0 +Xsky130_fd_pr__res_xhigh_po_0p69 r0 r1 b sky130_fd_pr__res_xhigh_po__base w = {w} l = {l} mult = {mult} +.ends sky130_fd_pr__res_xhigh_po_0p69
diff --git a/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_1p41.model.spice b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_1p41.model.spice new file mode 100644 index 0000000..fd6311f --- /dev/null +++ b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_1p41.model.spice
@@ -0,0 +1,24 @@ +* Copyright 2020 The SkyWater PDK Authors +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. + +* SKY130 Spice File. +* statistics { +* mismatch { +* } +* } +.subckt sky130_fd_pr__res_xhigh_po_1p41 r0 r1 b ++ +.param w = 1.41 l = 5 mult = 1.0 +Xsky130_fd_pr__res_xhigh_po_1p41 r0 r1 b sky130_fd_pr__res_xhigh_po__base w = {w} l = {l} mult = {mult} +.ends sky130_fd_pr__res_xhigh_po_1p41
diff --git a/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_2p85.model.spice b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_2p85.model.spice new file mode 100644 index 0000000..69abb02 --- /dev/null +++ b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_2p85.model.spice
@@ -0,0 +1,24 @@ +* Copyright 2020 The SkyWater PDK Authors +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. + +* SKY130 Spice File. +* statistics { +* mismatch { +* } +* } +.subckt sky130_fd_pr__res_xhigh_po_2p85 r0 r1 b ++ +.param w = 2.85 l = 5 mult = 1.0 +Xsky130_fd_pr__res_xhigh_po_2p85 r0 r1 b sky130_fd_pr__res_xhigh_po__base w = {w} l = {l} mult = {mult} +.ends sky130_fd_pr__res_xhigh_po_2p85
diff --git a/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_5p73.model.spice b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_5p73.model.spice new file mode 100644 index 0000000..f7586fc --- /dev/null +++ b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_5p73.model.spice
@@ -0,0 +1,24 @@ +* Copyright 2020 The SkyWater PDK Authors +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. + +* SKY130 Spice File. +* statistics { +* mismatch { +* } +* } +.subckt sky130_fd_pr__res_xhigh_po_5p73 r0 r1 b ++ +.param w = 5.73 l = 5 mult = 1.0 +Xsky130_fd_pr__res_xhigh_po_5p73 r0 r1 b sky130_fd_pr__res_xhigh_po__base w = {w} l = {l} mult = {mult} +.ends sky130_fd_pr__res_xhigh_po_5p73
diff --git a/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po__base.model.spice b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po__base.model.spice new file mode 100644 index 0000000..c1f470e --- /dev/null +++ b/cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po__base.model.spice
@@ -0,0 +1,52 @@ +* Copyright 2020 The SkyWater PDK Authors +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. + +* SKY130 Spice File. +* statistics { +* mismatch { +* } +* } +.subckt sky130_fd_pr__res_xhigh_po__base r1 r2 b ++ ++ w=1 l=1 mult=1 ++ +.param rsheet = 2000.0 ++ vc1_body = -1.00e-3 ++ vc2_body = -1.00e-4 ++ vc1_raw_end = -2.02e-2 ++ vc2_raw_end = 1.55e-1 ++ vc3_raw_end = 4.61e-2 ++ body_pelgrom = 0.0347 ++ r0_var = {17.23/w+2.318} ++ r1_var = {11.76/w} ++ rcon = {-46.62/(w*w)+331.73/w+20.576} ++ rend_mm = {0.0472/sqrt(w)} ++ tc1_voltco = -7.1e-3 ++ rend_var = {sky130_fd_pr__res_high_po__var_mult*sqrt(2)*r0_var} ++ rtot_var = {sky130_fd_pr__res_high_po__var_mult*sqrt(2*pow(r0_var,2)+pow((r1_var*l),2))} ++ res_match = {(body_pelgrom/sqrt(w*l*mult))*sky130_fd_pr__res_high_po__slope_spectre} ++ rbody_var = {rtot_var-rend_var} ++ rend = {(rcon+rend_var)*(1+rend_mm/sqrt(mult)*sky130_fd_pr__res_high_po__con_slope_spectre)} ++ vc1_end = {vc1_raw_end/pwr(l,0.5)*(1+tc1_voltco*(temp-30))} ++ vc2_end = {vc2_raw_end/pwr(l,0.5)*(1+tc1_voltco*(temp-30))} ++ vc3_end = {vc3_raw_end/pwr(l,0.5)*(1+tc1_voltco*(temp-30))} ++ rbody = {(l*rsheet+rbody_var)*(1+res_match)/w} +rbody ra r2 resbody r = {rbody*(1+abs(v(r1,r2))*vc1_body+abs(v(r1,r2))*abs(v(r1,r2))/(l*l)*vc2_body)} +rend r1 ra r = {rend*(1+vc1_raw_end*(1-exp(-abs(v(r2,r1))))+ ++ vc2_raw_end*(1 - exp(-abs(v(r2,r1)))) * (1 - exp(-abs(v(r2,r1)))) + ++ vc3_raw_end*(1 - exp(-abs(v(r2,r1)))) * (1 - exp(-abs(v(r2,r1)))) * (1 - exp(-abs(v(r2,r1)))) ) } +c1 r2 b c = {((l+2*2.08)*w*crpf_precision*1e-12+2*(l+2*2.08+w)*crpfsw_precision_1_1*1e-6)/2} +c2 r1 b c = {((l+2*2.08)*w*crpf_precision*1e-12+2*(l+2*2.08+w)*crpfsw_precision_1_1*1e-6)/2} +.model resbody r tc1 = -1.47e-3 tc2 = 2.7e-6 tnom = 30.0 +.ends sky130_fd_pr__res_xhigh_po__base
diff --git a/models/sky130_fd_pr__model__linear.model.spice b/models/sky130_fd_pr__model__linear.model.spice index eaa3d2a..3dbd8e8 100644 --- a/models/sky130_fd_pr__model__linear.model.spice +++ b/models/sky130_fd_pr__model__linear.model.spice
@@ -21,6 +21,12 @@ * vary sky130_fd_pr__res_high_po__con_slope_spectre dist=gauss std=1.0 * } * } +.include "../cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_0p35.model.spice" +.include "../cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_0p69.model.spice" +.include "../cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_1p41.model.spice" +.include "../cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_2p85.model.spice" +.include "../cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po_5p73.model.spice" +.include "../cells/res_xhigh_po/sky130_fd_pr__res_xhigh_po__base.model.spice" .include "../cells/res_high_po/sky130_fd_pr__res_high_po_0p35.model.spice" .include "../cells/res_high_po/sky130_fd_pr__res_high_po_0p69.model.spice" .include "../cells/res_high_po/sky130_fd_pr__res_high_po_1p41.model.spice"