push new mismatch settings for comparator

This commit is contained in:
PhillipRambo 2026-05-01 10:33:45 +02:00
parent 5e68192879
commit 6975153cec
8 changed files with 3370 additions and 188 deletions

View File

@ -1,4 +1,4 @@
* Extracted by KLayout with SG13G2 LVS runset on : 13/02/2026 11:51
* Extracted by KLayout with SG13G2 LVS runset on : 23/02/2026 16:48
.SUBCKT lvs_tester gnd G D
M$1 gnd G D \$1 sg13_lv_nmos L=0.45u W=1u AS=0.34p AD=0.34p PS=2.68u PD=2.68u

View File

@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
"execution_count": 34,
"execution_count": 1,
"id": "9f325daf-eb3b-4cf7-8ffe-b9b94e7f66ea",
"metadata": {},
"outputs": [],
@ -18,7 +18,7 @@
},
{
"cell_type": "code",
"execution_count": 35,
"execution_count": 2,
"id": "b5b31aca-47bf-4461-8e50-16c20f03b337",
"metadata": {},
"outputs": [],
@ -29,7 +29,7 @@
},
{
"cell_type": "code",
"execution_count": 36,
"execution_count": 3,
"id": "743dc381-0d35-4aa9-847c-c42c80c17786",
"metadata": {},
"outputs": [],
@ -40,7 +40,7 @@
},
{
"cell_type": "code",
"execution_count": 37,
"execution_count": 4,
"id": "b27d5fca-3436-4df7-895f-f6a4bbd7a80d",
"metadata": {
"jupyter": {
@ -243,7 +243,7 @@
},
{
"cell_type": "code",
"execution_count": 38,
"execution_count": 5,
"id": "fc95a0ff-ba36-46ce-9fa1-64d6d2d7770f",
"metadata": {},
"outputs": [],
@ -263,14 +263,14 @@
},
{
"cell_type": "code",
"execution_count": 39,
"execution_count": 6,
"id": "b7cc630f-b385-47a6-a6f9-ac0d10effffe",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "c0d716a395d84be68ee1dbc73a913175",
"model_id": "ffe7b403abd44a54aed0fd72398a9e7d",
"version_major": 2,
"version_minor": 0
},
@ -309,14 +309,14 @@
},
{
"cell_type": "code",
"execution_count": 40,
"execution_count": 7,
"id": "3727c42d-a4bf-4eb0-bc11-6e859ae41324",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "cba5a4c794944ea1900cd54144dad957",
"model_id": "7d74cd77c32c4375988584ce9ecbe123",
"version_major": 2,
"version_minor": 0
},
@ -337,6 +337,14 @@
"\n",
"plot_data_vs_data(gm_values/id_values, gm_values/gds_values, vgs_values, length_2d_pmos, 'gm/id', 'gm/gds')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8cb46727-5495-4ba9-bc48-b6b672250b45",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {

View File

@ -189,12 +189,6 @@ value="
.endc
"}
C {devices/code_shown.sym} -980 -595 0 0 {name=MODEL only_toplevel=true
format="tcleval( @value )"
value="
.lib $::SG13G2_MODELS/cornerCAP.lib cap_typ
.lib $::SG13G2_MODELS/cornerRES.lib res_typ
.lib cornerMOSlv.lib mos_tt_stat"}
C {sg13g2_pr/sg13_lv_nmos.sym} -700 -765 2 0 {name=M8
l=10u
w=150n
@ -335,3 +329,9 @@ w=100.78e-6
l=100.78e-6
}
C {sg13g2_pr/sub.sym} 760 -310 0 0 {name=l7 lab=sub!}
C {devices/code_shown.sym} -950 -585 0 0 {name=MODEL1 only_toplevel=true
format="tcleval( @value )"
value="
.lib $::SG13G2_MODELS/cornerCAP.lib cap_typ
.lib $::SG13G2_MODELS/cornerRES.lib res_typ
.lib cornerMOSlv.lib mos_tt_stat"}

View File

@ -102,10 +102,11 @@ footprint=1206
device="ceramic capacitor"}
C {gnd.sym} 460 -140 0 0 {name=l6 lab=GND}
C {gnd.sym} 460 -300 2 0 {name=l7 lab=GND}
C {devices/code_shown.sym} -675 -780 0 0 {name=NGSPICE1 only_toplevel=false
C {devices/code_shown.sym} -855 -770 0 0 {name=NGSPICE1 only_toplevel=false
value="
.lib cornerCAP.lib cap_typ
.lib cornerMOSlv.lib mos_tt_stat
.param mm_ok=1
.param mc_ok=1
.control
let run = 1
@ -133,8 +134,7 @@ value="
"}
C {dynamic_comparator.sym} 270 -220 0 0 {name=x1}
C {devices/code_shown.sym} -5 -580 0 0 {name=MODEL only_toplevel=false
C {devices/code_shown.sym} -180 -755 0 0 {name=MODEL only_toplevel=true
format="tcleval( @value )"
value="
.lib cornerMOSlv.lib mos_tt_stat
"}
.lib cornerMOSlv.lib mos_tt_mismatch"}

View File

@ -1,122 +0,0 @@
* Place this .save file with a .include line in your testbench
.save @n.x1.xm13.nsg13_lv_pmos[ids]
.save @n.x1.xm13.nsg13_lv_pmos[gm]
.save @n.x1.xm13.nsg13_lv_pmos[gds]
.save @n.x1.xm13.nsg13_lv_pmos[vth]
.save @n.x1.xm13.nsg13_lv_pmos[vgs]
.save @n.x1.xm13.nsg13_lv_pmos[vdss]
.save @n.x1.xm13.nsg13_lv_pmos[vds]
.save @n.x1.xm13.nsg13_lv_pmos[cgg]
.save @n.x1.xm13.nsg13_lv_pmos[cgsol]
.save @n.x1.xm13.nsg13_lv_pmos[cgdol]
.save @n.x1.xm3.nsg13_lv_pmos[ids]
.save @n.x1.xm3.nsg13_lv_pmos[gm]
.save @n.x1.xm3.nsg13_lv_pmos[gds]
.save @n.x1.xm3.nsg13_lv_pmos[vth]
.save @n.x1.xm3.nsg13_lv_pmos[vgs]
.save @n.x1.xm3.nsg13_lv_pmos[vdss]
.save @n.x1.xm3.nsg13_lv_pmos[vds]
.save @n.x1.xm3.nsg13_lv_pmos[cgg]
.save @n.x1.xm3.nsg13_lv_pmos[cgsol]
.save @n.x1.xm3.nsg13_lv_pmos[cgdol]
.save @n.x1.xm2.nsg13_lv_pmos[ids]
.save @n.x1.xm2.nsg13_lv_pmos[gm]
.save @n.x1.xm2.nsg13_lv_pmos[gds]
.save @n.x1.xm2.nsg13_lv_pmos[vth]
.save @n.x1.xm2.nsg13_lv_pmos[vgs]
.save @n.x1.xm2.nsg13_lv_pmos[vdss]
.save @n.x1.xm2.nsg13_lv_pmos[vds]
.save @n.x1.xm2.nsg13_lv_pmos[cgg]
.save @n.x1.xm2.nsg13_lv_pmos[cgsol]
.save @n.x1.xm2.nsg13_lv_pmos[cgdol]
.save @n.x1.xm1.nsg13_lv_pmos[ids]
.save @n.x1.xm1.nsg13_lv_pmos[gm]
.save @n.x1.xm1.nsg13_lv_pmos[gds]
.save @n.x1.xm1.nsg13_lv_pmos[vth]
.save @n.x1.xm1.nsg13_lv_pmos[vgs]
.save @n.x1.xm1.nsg13_lv_pmos[vdss]
.save @n.x1.xm1.nsg13_lv_pmos[vds]
.save @n.x1.xm1.nsg13_lv_pmos[cgg]
.save @n.x1.xm1.nsg13_lv_pmos[cgsol]
.save @n.x1.xm1.nsg13_lv_pmos[cgdol]
.save @n.x1.xm4.nsg13_lv_pmos[ids]
.save @n.x1.xm4.nsg13_lv_pmos[gm]
.save @n.x1.xm4.nsg13_lv_pmos[gds]
.save @n.x1.xm4.nsg13_lv_pmos[vth]
.save @n.x1.xm4.nsg13_lv_pmos[vgs]
.save @n.x1.xm4.nsg13_lv_pmos[vdss]
.save @n.x1.xm4.nsg13_lv_pmos[vds]
.save @n.x1.xm4.nsg13_lv_pmos[cgg]
.save @n.x1.xm4.nsg13_lv_pmos[cgsol]
.save @n.x1.xm4.nsg13_lv_pmos[cgdol]
.save @n.x1.xm5.nsg13_lv_pmos[ids]
.save @n.x1.xm5.nsg13_lv_pmos[gm]
.save @n.x1.xm5.nsg13_lv_pmos[gds]
.save @n.x1.xm5.nsg13_lv_pmos[vth]
.save @n.x1.xm5.nsg13_lv_pmos[vgs]
.save @n.x1.xm5.nsg13_lv_pmos[vdss]
.save @n.x1.xm5.nsg13_lv_pmos[vds]
.save @n.x1.xm5.nsg13_lv_pmos[cgg]
.save @n.x1.xm5.nsg13_lv_pmos[cgsol]
.save @n.x1.xm5.nsg13_lv_pmos[cgdol]
.save @n.x1.xm11.nsg13_lv_nmos[ids]
.save @n.x1.xm11.nsg13_lv_nmos[gm]
.save @n.x1.xm11.nsg13_lv_nmos[gds]
.save @n.x1.xm11.nsg13_lv_nmos[vth]
.save @n.x1.xm11.nsg13_lv_nmos[vgs]
.save @n.x1.xm11.nsg13_lv_nmos[vdss]
.save @n.x1.xm11.nsg13_lv_nmos[vds]
.save @n.x1.xm11.nsg13_lv_nmos[cgg]
.save @n.x1.xm11.nsg13_lv_nmos[cgsol]
.save @n.x1.xm11.nsg13_lv_nmos[cgdol]
.save @n.x1.xm12.nsg13_lv_nmos[ids]
.save @n.x1.xm12.nsg13_lv_nmos[gm]
.save @n.x1.xm12.nsg13_lv_nmos[gds]
.save @n.x1.xm12.nsg13_lv_nmos[vth]
.save @n.x1.xm12.nsg13_lv_nmos[vgs]
.save @n.x1.xm12.nsg13_lv_nmos[vdss]
.save @n.x1.xm12.nsg13_lv_nmos[vds]
.save @n.x1.xm12.nsg13_lv_nmos[cgg]
.save @n.x1.xm12.nsg13_lv_nmos[cgsol]
.save @n.x1.xm12.nsg13_lv_nmos[cgdol]
.save @n.x1.xm6.nsg13_lv_nmos[ids]
.save @n.x1.xm6.nsg13_lv_nmos[gm]
.save @n.x1.xm6.nsg13_lv_nmos[gds]
.save @n.x1.xm6.nsg13_lv_nmos[vth]
.save @n.x1.xm6.nsg13_lv_nmos[vgs]
.save @n.x1.xm6.nsg13_lv_nmos[vdss]
.save @n.x1.xm6.nsg13_lv_nmos[vds]
.save @n.x1.xm6.nsg13_lv_nmos[cgg]
.save @n.x1.xm6.nsg13_lv_nmos[cgsol]
.save @n.x1.xm6.nsg13_lv_nmos[cgdol]
.save @n.x1.xm10.nsg13_lv_nmos[ids]
.save @n.x1.xm10.nsg13_lv_nmos[gm]
.save @n.x1.xm10.nsg13_lv_nmos[gds]
.save @n.x1.xm10.nsg13_lv_nmos[vth]
.save @n.x1.xm10.nsg13_lv_nmos[vgs]
.save @n.x1.xm10.nsg13_lv_nmos[vdss]
.save @n.x1.xm10.nsg13_lv_nmos[vds]
.save @n.x1.xm10.nsg13_lv_nmos[cgg]
.save @n.x1.xm10.nsg13_lv_nmos[cgsol]
.save @n.x1.xm10.nsg13_lv_nmos[cgdol]
.save @n.x1.xm7.nsg13_lv_nmos[ids]
.save @n.x1.xm7.nsg13_lv_nmos[gm]
.save @n.x1.xm7.nsg13_lv_nmos[gds]
.save @n.x1.xm7.nsg13_lv_nmos[vth]
.save @n.x1.xm7.nsg13_lv_nmos[vgs]
.save @n.x1.xm7.nsg13_lv_nmos[vdss]
.save @n.x1.xm7.nsg13_lv_nmos[vds]
.save @n.x1.xm7.nsg13_lv_nmos[cgg]
.save @n.x1.xm7.nsg13_lv_nmos[cgsol]
.save @n.x1.xm7.nsg13_lv_nmos[cgdol]
.save @n.x1.xm8.nsg13_lv_nmos[ids]
.save @n.x1.xm8.nsg13_lv_nmos[gm]
.save @n.x1.xm8.nsg13_lv_nmos[gds]
.save @n.x1.xm8.nsg13_lv_nmos[vth]
.save @n.x1.xm8.nsg13_lv_nmos[vgs]
.save @n.x1.xm8.nsg13_lv_nmos[vdss]
.save @n.x1.xm8.nsg13_lv_nmos[vds]
.save @n.x1.xm8.nsg13_lv_nmos[cgg]
.save @n.x1.xm8.nsg13_lv_nmos[cgsol]
.save @n.x1.xm8.nsg13_lv_nmos[cgdol]

View File

@ -1,12 +0,0 @@
* Place this .save file with a .include line in your testbench
.save @n.xm1.nsg13_lv_nmos[ids]
.save @n.xm1.nsg13_lv_nmos[gm]
.save @n.xm1.nsg13_lv_nmos[gds]
.save @n.xm1.nsg13_lv_nmos[vth]
.save @n.xm1.nsg13_lv_nmos[vgs]
.save @n.xm1.nsg13_lv_nmos[vdss]
.save @n.xm1.nsg13_lv_nmos[vds]
.save @n.xm1.nsg13_lv_nmos[cgg]
.save @n.xm1.nsg13_lv_nmos[cgsol]
.save @n.xm1.nsg13_lv_nmos[cgdol]

View File

@ -1,32 +0,0 @@
* Place this .save file with a .include line in your testbench
.save @n.xm1.nsg13_lv_nmos[ids]
.save @n.xm1.nsg13_lv_nmos[gm]
.save @n.xm1.nsg13_lv_nmos[gds]
.save @n.xm1.nsg13_lv_nmos[vth]
.save @n.xm1.nsg13_lv_nmos[vgs]
.save @n.xm1.nsg13_lv_nmos[vdss]
.save @n.xm1.nsg13_lv_nmos[vds]
.save @n.xm1.nsg13_lv_nmos[cgg]
.save @n.xm1.nsg13_lv_nmos[cgsol]
.save @n.xm1.nsg13_lv_nmos[cgdol]
.save @n.xm2.nsg13_lv_pmos[ids]
.save @n.xm2.nsg13_lv_pmos[gm]
.save @n.xm2.nsg13_lv_pmos[gds]
.save @n.xm2.nsg13_lv_pmos[vth]
.save @n.xm2.nsg13_lv_pmos[vgs]
.save @n.xm2.nsg13_lv_pmos[vdss]
.save @n.xm2.nsg13_lv_pmos[vds]
.save @n.xm2.nsg13_lv_pmos[cgg]
.save @n.xm2.nsg13_lv_pmos[cgsol]
.save @n.xm2.nsg13_lv_pmos[cgdol]
.save @n.xm3.nsg13_lv_nmos[ids]
.save @n.xm3.nsg13_lv_nmos[gm]
.save @n.xm3.nsg13_lv_nmos[gds]
.save @n.xm3.nsg13_lv_nmos[vth]
.save @n.xm3.nsg13_lv_nmos[vgs]
.save @n.xm3.nsg13_lv_nmos[vdss]
.save @n.xm3.nsg13_lv_nmos[vds]
.save @n.xm3.nsg13_lv_nmos[cgg]
.save @n.xm3.nsg13_lv_nmos[cgsol]
.save @n.xm3.nsg13_lv_nmos[cgdol]