{
  "plots": {
    "plotlist": [
      [
        "DC",
        {
          "axes": [
            [
              "Response",
              {
                "xlo": "-0.01",
                "yspan": "1",
                "xlabel": "inp-inn [V]",
                "xhi": "0.01",
                "title": "",
                "aspect": false,
                "xspan": "1",
                "ypos": "0",
                "ygrid": true,
                "ylo": "",
                "traces": [
                  [
                    "out",
                    {
                      "scale": "v('inp','inn')",
                      "analyses": [
                        [
                          "dc"
                        ]
                      ],
                      "expression": "v('out')"
                    }
                  ]
                ],
                "type": "lin",
                "ylabel": "out [V]",
                "xgrid": true,
                "yhi": "",
                "xpos": "0"
              }
            ],
            [
              "Gain",
              {
                "xlo": "",
                "yspan": "1",
                "xlabel": "out [V]",
                "xhi": "",
                "title": "",
                "aspect": false,
                "xspan": "1",
                "ypos": "1",
                "ygrid": true,
                "ylo": "",
                "traces": [
                  [
                    "gain",
                    {
                      "scale": "v('out')",
                      "analyses": [
                        [
                          "dc"
                        ]
                      ],
                      "expression": "m.dYdX(v('out'),v('inp','inn'))"
                    }
                  ]
                ],
                "type": "lin",
                "ylabel": "Differential gain",
                "xgrid": true,
                "yhi": "",
                "xpos": "0"
              }
            ]
          ],
          "title": ""
        }
      ],
      [
        "AC",
        {
          "axes": [
            [
              "Gain",
              {
                "xlo": "",
                "yspan": "1",
                "xlabel": "f [kHz]",
                "xhi": "",
                "title": "",
                "aspect": false,
                "xspan": "1",
                "ypos": "0",
                "ygrid": true,
                "ylo": "",
                "traces": [
                  [
                    "gain",
                    {
                      "scale": "scale()/1e3",
                      "analyses": [
                        [
                          "ac"
                        ]
                      ],
                      "expression": "m.ACmag(m.ACtf(v('out'), v('inp', 'inn')))"
                    }
                  ]
                ],
                "type": "xlog",
                "ylabel": "Gain [dB]",
                "xgrid": true,
                "yhi": "",
                "xpos": "0"
              }
            ],
            [
              "Phase",
              {
                "xlo": "",
                "yspan": "1",
                "xlabel": "f [kHz]",
                "xhi": "",
                "title": "",
                "aspect": false,
                "xspan": "1",
                "ypos": "1",
                "ygrid": true,
                "ylo": "",
                "traces": [
                  [
                    "phase",
                    {
                      "scale": "scale()/1e3",
                      "analyses": [
                        [
                          "ac"
                        ]
                      ],
                      "expression": "m.ACphase(m.ACtf(v('out'), v('inp', 'inn')))"
                    }
                  ]
                ],
                "type": "xlog",
                "ylabel": "Phase [deg]",
                "xgrid": true,
                "yhi": "",
                "xpos": "0"
              }
            ]
          ],
          "title": ""
        }
      ],
      [
        "CMRR",
        {
          "axes": [
            [
              "CMRR",
              {
                "xlo": "",
                "yspan": "1",
                "xlabel": "f [kHz]",
                "xhi": "",
                "title": "",
                "aspect": false,
                "xspan": "1",
                "ypos": "0",
                "ygrid": true,
                "ylo": "",
                "traces": [
                  [
                    "cmrr",
                    {
                      "scale": "ac.scale()/1e3",
                      "analyses": [
                        [
                          "ac"
                        ],
                        [
                          "accom"
                        ]
                      ],
                      "expression": "m.ACmag(ac.v('out')/ac.v('inp','inn'))-m.ACmag(accom.v('out'))"
                    }
                  ]
                ],
                "type": "xlog",
                "ylabel": "CMRR [dB]",
                "xgrid": true,
                "yhi": "",
                "xpos": "0"
              }
            ]
          ],
          "title": ""
        }
      ],
      [
        "PSRR_Vdd",
        {
          "axes": [
            [
              "PSRR",
              {
                "xlo": "",
                "yspan": "1",
                "xlabel": "f [kHz]",
                "xhi": "",
                "title": "",
                "aspect": false,
                "xspan": "1",
                "ypos": "0",
                "ygrid": true,
                "ylo": "",
                "traces": [
                  [
                    "psrr",
                    {
                      "scale": "ac.scale()/1e3",
                      "analyses": [
                        [
                          "ac"
                        ],
                        [
                          "acvdd"
                        ]
                      ],
                      "expression": "m.ACmag(ac.v('out')/ac.v('inp','inn'))-m.ACmag(acvdd.v('out'))"
                    }
                  ]
                ],
                "type": "xlog",
                "ylabel": "PSRR_Vdd [dB]",
                "xgrid": true,
                "yhi": "",
                "xpos": "0"
              }
            ]
          ],
          "title": ""
        }
      ],
      [
        "PSRR_Vss",
        {
          "axes": [
            [
              "PSRR",
              {
                "xlo": "",
                "yspan": "1",
                "xlabel": "f [kHz]",
                "xhi": "",
                "title": "",
                "aspect": false,
                "xspan": "1",
                "ypos": "0",
                "ygrid": true,
                "ylo": "",
                "traces": [
                  [
                    "psrr",
                    {
                      "scale": "ac.scale()/1e3",
                      "analyses": [
                        [
                          "ac"
                        ],
                        [
                          "acvss"
                        ]
                      ],
                      "expression": "m.ACmag(ac.v('out')/ac.v('inp','inn'))-m.ACmag(acvss.v('out'))"
                    }
                  ]
                ],
                "type": "xlog",
                "ylabel": "PSRR_Vss [dB]",
                "xgrid": true,
                "yhi": "",
                "xpos": "0"
              }
            ]
          ],
          "title": ""
        }
      ],
      [
        "Noise",
        {
          "axes": [
            [
              "output",
              {
                "xlo": "",
                "yspan": "1",
                "xlabel": "f [kHz]",
                "xhi": "",
                "title": "",
                "aspect": false,
                "xspan": "1",
                "ypos": "0",
                "ygrid": true,
                "ylo": "",
                "traces": [
                  [
                    "noise",
                    {
                      "scale": "scale()/1e3",
                      "analyses": [
                        [
                          "noise"
                        ]
                      ],
                      "expression": "ns('output')"
                    }
                  ]
                ],
                "type": "log",
                "ylabel": "Output noise [V^2/Hz]",
                "xgrid": true,
                "yhi": "",
                "xpos": "0"
              }
            ],
            [
              "input",
              {
                "xlo": "",
                "yspan": "1",
                "xlabel": "f [kHz]",
                "xhi": "",
                "title": "",
                "aspect": false,
                "xspan": "1",
                "ypos": "1",
                "ygrid": true,
                "ylo": "",
                "traces": [
                  [
                    "noise",
                    {
                      "scale": "scale()/1e3",
                      "analyses": [
                        [
                          "noise"
                        ]
                      ],
                      "expression": "ns('input')"
                    }
                  ]
                ],
                "type": "log",
                "ylabel": "Equivalent input noise [V^2/Hz]",
                "xgrid": true,
                "yhi": "",
                "xpos": "0"
              }
            ]
          ],
          "title": ""
        }
      ],
      [
        "Rise",
        {
          "axes": [
            [
              "Input",
              {
                "xlo": "19.9",
                "yspan": "1",
                "xlabel": "time [us]",
                "xhi": "20.5",
                "title": "",
                "aspect": false,
                "xspan": "1",
                "ypos": "0",
                "ygrid": true,
                "ylo": "",
                "traces": [
                  [
                    "in",
                    {
                      "scale": "scale()/1e-6",
                      "analyses": [
                        [
                          "tran"
                        ]
                      ],
                      "expression": "v('in')"
                    }
                  ]
                ],
                "type": "lin",
                "ylabel": "in [V]",
                "xgrid": true,
                "yhi": "",
                "xpos": "0"
              }
            ],
            [
              "Output",
              {
                "xlo": "19.9",
                "yspan": "1",
                "xlabel": "time [us]",
                "xhi": "20.5",
                "title": "",
                "aspect": false,
                "xspan": "1",
                "ypos": "1",
                "ygrid": true,
                "ylo": "",
                "traces": [
                  [
                    "out",
                    {
                      "scale": "scale()/1e-6",
                      "analyses": [
                        [
                          "tran"
                        ]
                      ],
                      "expression": "v('out')"
                    }
                  ]
                ],
                "type": "lin",
                "ylabel": "out [V]",
                "xgrid": true,
                "yhi": "",
                "xpos": "0"
              }
            ]
          ],
          "title": ""
        }
      ],
      [
        "Fall",
        {
          "axes": [
            [
              "Input",
              {
                "xlo": "9.9",
                "yspan": "1",
                "xlabel": "time [us]",
                "xhi": "10.5",
                "title": "",
                "aspect": false,
                "xspan": "1",
                "ypos": "0",
                "ygrid": true,
                "ylo": "",
                "traces": [
                  [
                    "in",
                    {
                      "scale": "scale()/1e-6",
                      "analyses": [
                        [
                          "tran"
                        ]
                      ],
                      "expression": "v('in')"
                    }
                  ]
                ],
                "type": "lin",
                "ylabel": "in [V]",
                "xgrid": true,
                "yhi": "",
                "xpos": "0"
              }
            ],
            [
              "Output",
              {
                "xlo": "9.9",
                "yspan": "1",
                "xlabel": "time [us]",
                "xhi": "10.5",
                "title": "",
                "aspect": false,
                "xspan": "1",
                "ypos": "1",
                "ygrid": true,
                "ylo": "",
                "traces": [
                  [
                    "out",
                    {
                      "scale": "scale()/1e-6",
                      "analyses": [
                        [
                          "tran"
                        ]
                      ],
                      "expression": "v('out')"
                    }
                  ]
                ],
                "type": "lin",
                "ylabel": "out [V]",
                "xgrid": true,
                "yhi": "",
                "xpos": "0"
              }
            ]
          ],
          "title": ""
        }
      ],
      [
        "Slew_rise",
        {
          "axes": [
            [
              "Input",
              {
                "xlo": "19.9",
                "yspan": "1",
                "xlabel": "time [us]",
                "xhi": "20.5",
                "title": "",
                "aspect": false,
                "xspan": "1",
                "ypos": "0",
                "ygrid": true,
                "ylo": "",
                "traces": [
                  [
                    "in",
                    {
                      "scale": "scale()/1e-6",
                      "analyses": [
                        [
                          "translew"
                        ]
                      ],
                      "expression": "v('in')"
                    }
                  ]
                ],
                "type": "lin",
                "ylabel": "in [V]",
                "xgrid": true,
                "yhi": "",
                "xpos": "0"
              }
            ],
            [
              "Output",
              {
                "xlo": "19.9",
                "yspan": "1",
                "xlabel": "time [us]",
                "xhi": "20.5",
                "title": "",
                "aspect": false,
                "xspan": "1",
                "ypos": "1",
                "ygrid": true,
                "ylo": "",
                "traces": [
                  [
                    "out",
                    {
                      "scale": "scale()/1e-6",
                      "analyses": [
                        [
                          "translew"
                        ]
                      ],
                      "expression": "v('out')"
                    }
                  ]
                ],
                "type": "lin",
                "ylabel": "out [V]",
                "xgrid": true,
                "yhi": "",
                "xpos": "0"
              }
            ]
          ],
          "title": ""
        }
      ],
      [
        "Slew_fall",
        {
          "axes": [
            [
              "Input",
              {
                "xlo": "9.9",
                "yspan": "1",
                "xlabel": "time [us]",
                "xhi": "10.5",
                "title": "",
                "aspect": false,
                "xspan": "1",
                "ypos": "0",
                "ygrid": true,
                "ylo": "",
                "traces": [
                  [
                    "in",
                    {
                      "scale": "scale()/1e-6",
                      "analyses": [
                        [
                          "translew"
                        ]
                      ],
                      "expression": "v('in')"
                    }
                  ]
                ],
                "type": "lin",
                "ylabel": "in [V]",
                "xgrid": true,
                "yhi": "",
                "xpos": "0"
              }
            ],
            [
              "Output",
              {
                "xlo": "9.9",
                "yspan": "1",
                "xlabel": "time [us]",
                "xhi": "10.5",
                "title": "",
                "aspect": false,
                "xspan": "1",
                "ypos": "1",
                "ygrid": true,
                "ylo": "",
                "traces": [
                  [
                    "out",
                    {
                      "scale": "scale()/1e-6",
                      "analyses": [
                        [
                          "translew"
                        ]
                      ],
                      "expression": "v('out')"
                    }
                  ]
                ],
                "type": "lin",
                "ylabel": "out [V]",
                "xgrid": true,
                "yhi": "",
                "xpos": "0"
              }
            ]
          ],
          "title": ""
        }
      ]
    ],
    "styles": [
      [
        ".*",
        ".*",
        ".*",
        ".*",
        "#C00000",
        "solid",
        "1",
        "",
        "6"
      ],
      [
        ".*",
        ".*",
        ".*",
        "^nominal",
        "#00C000",
        "solid",
        "1",
        "",
        "6"
      ]
    ]
  },
  "measures": [
    [
      "isup",
      {
        "norm": "",
        "upper": "1000e-6",
        "analysis": "op",
        "vector": false,
        "components": "",
        "lower": "",
        "depends": [],
        "expression": "isup=-i('vdd1')"
      }
    ],
    [
      "out_op",
      {
        "norm": "",
        "upper": "",
        "analysis": "op",
        "vector": false,
        "components": "",
        "lower": "",
        "depends": [],
        "expression": "v('out')"
      }
    ],
    [
      "vgs_drv",
      {
        "norm": "",
        "upper": "",
        "analysis": "op",
        "vector": true,
        "components": "#mosList",
        "lower": "0",
        "depends": [],
        "expression": "res=[]\n# Loop over all MOS instances in mosList\nfor inst in mosList:\n\t# Generate full name for MOS instance\n\tfullName=ipath(inst, 'x1', 'm0')\n\t# Extract vgs and vth from results\n\tvgs=p(fullName, 'vgs')\n\tvth=p(fullName, 'vth')\n\t# Compute difference and append to results list\n\tdiff=float(vgs-vth)\n\tres.append(diff)\n\t# Uncomment to print a debug message during evaluation\n\t# m.debug(\"%s: vgs=%f vth=%f\" % (fullName, vgs, vth))\n# Return NumPy array\n__result=np.array(res)"
      }
    ],
    [
      "vds_drv",
      {
        "norm": "",
        "upper": "",
        "analysis": "op",
        "vector": true,
        "components": "#mosList",
        "lower": "0",
        "depends": [],
        "expression": "res=[]\n# Loop over all MOS instances in mosList\nfor inst in mosList:\n\t# Generate full name for MOS instance\n\tfullName=ipath(inst, 'x1', 'm0')\n\t# Extract vds and vdsat from results\n\tvds=p(fullName, 'vds')\n\tvdsat=p(fullName, 'vdsat')\n\t# Compute difference and append to results list\n\tdiff=float(vds-vdsat)\n\tres.append(diff)\n# Return NumPy array\n__result=np.array(res)"
      }
    ],
    [
      "swing",
      {
        "norm": "",
        "upper": "",
        "analysis": "dc",
        "vector": false,
        "components": "",
        "lower": "1",
        "depends": [],
        "expression": "m.DCswingAtGain(v('out'), v('inp', 'inn'), 0.5, 'out')"
      }
    ],
    [
      "gain",
      {
        "norm": "",
        "upper": "",
        "analysis": "ac",
        "vector": false,
        "components": "",
        "lower": "60",
        "depends": [],
        "expression": "m.ACmag(m.ACtf(v('out'), v('inp', 'inn')))[0]"
      }
    ],
    [
      "gain_com",
      {
        "norm": "",
        "upper": "",
        "analysis": "accom",
        "vector": false,
        "components": "",
        "lower": "",
        "depends": [],
        "expression": "m.ACmag(m.ACtf(v('out'), 1.0))[0]"
      }
    ],
    [
      "gain_vdd",
      {
        "norm": "",
        "upper": "",
        "analysis": "acvdd",
        "vector": false,
        "components": "",
        "lower": "",
        "depends": [],
        "expression": "m.ACmag(m.ACtf(v('out'), 1.0))[0]"
      }
    ],
    [
      "gain_vss",
      {
        "norm": "",
        "upper": "",
        "analysis": "acvss",
        "vector": false,
        "components": "",
        "lower": "",
        "depends": [],
        "expression": "m.ACmag(m.ACtf(v('out'), 1.0))[0]"
      }
    ],
    [
      "bw",
      {
        "norm": "",
        "upper": "",
        "analysis": "ac",
        "vector": false,
        "components": "",
        "lower": "100",
        "depends": [],
        "expression": "m.ACbandwidth(m.ACtf(v('out'), v('inp', 'inn')), scale())"
      }
    ],
    [
      "ugbw",
      {
        "norm": "",
        "upper": "",
        "analysis": "ac",
        "vector": false,
        "components": "",
        "lower": "10e6",
        "depends": [],
        "expression": "m.ACugbw(m.ACtf(v('out'), v('inp', 'inn')), scale())"
      }
    ],
    [
      "pm",
      {
        "norm": "",
        "upper": "",
        "analysis": "ac",
        "vector": false,
        "components": "",
        "lower": "50",
        "depends": [],
        "expression": "m.ACphaseMargin(m.ACtf(v('out'), v('inp', 'inn')))"
      }
    ],
    [
      "cmrr",
      {
        "norm": "",
        "upper": "",
        "analysis": "blank",
        "vector": false,
        "components": "",
        "lower": "90",
        "depends": [
          [
            "gain"
          ],
          [
            "gain_com"
          ]
        ],
        "expression": "result['gain'][cornerName]-result['gain_com'][cornerName]"
      }
    ],
    [
      "psrr_vdd",
      {
        "norm": "",
        "upper": "",
        "analysis": "blank",
        "vector": false,
        "components": "",
        "lower": "60",
        "depends": [
          [
            "gain"
          ],
          [
            "gain_vdd"
          ]
        ],
        "expression": "result['gain'][cornerName]-result['gain_vdd'][cornerName]"
      }
    ],
    [
      "psrr_vss",
      {
        "norm": "",
        "upper": "",
        "analysis": "blank",
        "vector": false,
        "components": "",
        "lower": "60",
        "depends": [
          [
            "gain"
          ],
          [
            "gain_vss"
          ]
        ],
        "expression": "result['gain'][cornerName]-result['gain_vss'][cornerName]"
      }
    ],
    [
      "overshdn",
      {
        "norm": "",
        "upper": "0.1",
        "analysis": "tran",
        "vector": false,
        "components": "",
        "lower": "",
        "depends": [],
        "expression": "m.Tundershoot(v('out'), scale(), t1=param['tstart'], t2=(param['pw']+param['tstart']+param['tr']))"
      }
    ],
    [
      "overshup",
      {
        "norm": "",
        "upper": "0.1",
        "analysis": "tran",
        "vector": false,
        "components": "",
        "lower": "",
        "depends": [],
        "expression": "m.Tovershoot(v('out'), scale(), t1=(param['pw']+param['tstart']+param['tr']))"
      }
    ],
    [
      "tsetdn",
      {
        "norm": "",
        "upper": "1000e-9",
        "analysis": "tran",
        "vector": false,
        "components": "",
        "lower": "",
        "depends": [],
        "expression": "m.TsettlingTime(v('out'), scale(), t1=param['tstart'], t2=(param['pw']+param['tstart']+param['tr']))"
      }
    ],
    [
      "tsetup",
      {
        "norm": "",
        "upper": "1000e-6",
        "analysis": "tran",
        "vector": false,
        "components": "",
        "lower": "",
        "depends": [],
        "expression": "m.TsettlingTime(v('out'), scale(), t1=(param['pw']+param['tstart'])+param['tr'])"
      }
    ],
    [
      "slewdn",
      {
        "norm": "",
        "upper": "",
        "analysis": "translew",
        "vector": false,
        "components": "",
        "lower": "2e6",
        "depends": [],
        "expression": "m.TslewRate('falling', v('out'), scale(), t1=param['tstart'], t2=(param['pw']+param['tstart']+param['tr']))"
      }
    ],
    [
      "slewup",
      {
        "norm": "",
        "upper": "",
        "analysis": "translew",
        "vector": false,
        "components": "",
        "lower": "2e6",
        "depends": [],
        "expression": "m.TslewRate('rising', v('out'), scale(), t1=(param['pw']+param['tstart']+param['tr']))"
      }
    ],
    [
      "onoise1k",
      {
        "norm": "",
        "upper": "",
        "analysis": "noise",
        "vector": false,
        "components": "",
        "lower": "",
        "depends": [],
        "expression": "m.XatI(ns('output'), m.IatXval(scale(), 1e3)[0])"
      }
    ],
    [
      "inoise1k",
      {
        "norm": "",
        "upper": "",
        "analysis": "noise",
        "vector": false,
        "components": "",
        "lower": "",
        "depends": [],
        "expression": "m.XatI(ns('input'), m.IatXval(scale(), 1e3)[0])"
      }
    ],
    [
      "in1kmn2id",
      {
        "norm": "",
        "upper": "",
        "analysis": "noise",
        "vector": false,
        "components": "",
        "lower": "",
        "depends": [],
        "expression": "m.XatI(ns('input', ipath('xmn2', 'x1', 'm0'), 'id'), m.IatXval(scale(), 1e3)[0])"
      }
    ],
    [
      "in1kmn2rd",
      {
        "norm": "",
        "upper": "",
        "analysis": "noise",
        "vector": false,
        "components": "",
        "lower": "",
        "depends": [],
        "expression": "m.XatI(ns('input', ipath('xmn2', 'x1', 'm0'), 'rd'), m.IatXval(scale(), 1e3)[0])"
      }
    ],
    [
      "in1kmn2",
      {
        "norm": "",
        "upper": "",
        "analysis": "noise",
        "vector": false,
        "components": "",
        "lower": "",
        "depends": [],
        "expression": "m.XatI(ns('input', ipath('xmn2', 'x1', 'm0')), m.IatXval(scale(), 1e3)[0])"
      }
    ],
    [
      "area",
      {
        "norm": "100e-12",
        "upper": "9000e-12",
        "analysis": "",
        "vector": false,
        "components": "",
        "lower": "",
        "depends": [],
        "expression": "(\n  (param['mirr_w']+param['mirr_wo'])*param['mirr_l']\n +param['mirr_wd']*param['mirr_ld']\n +param['out_w']*param['out_l']*(2)\n +param['load_w']*param['load_l']*(1+1)\n +param['diff_w']*param['diff_l']*(1+1)\n +param['r_out']/1e3*12e-12\n +param['c_out']/1e-12*100e-12\n)"
      }
    ]
  ],
  "version": "1.1"
}