From 1c0eeda6c6fc026be32de8627359b43fac081bca Mon Sep 17 00:00:00 2001 From: Grzegorz Latosinski Date: Wed, 18 Nov 2020 16:13:56 +0100 Subject: [PATCH] Added releasing memory after plotting the FET graphs Signed-off-by: Grzegorz Latosinski --- .../fet_simulator/fet_simulator.py | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/scripts/python-skywater-pdk/skywater_pdk/fet_simulator/fet_simulator.py b/scripts/python-skywater-pdk/skywater_pdk/fet_simulator/fet_simulator.py index efaffa0..0a68df5 100644 --- a/scripts/python-skywater-pdk/skywater_pdk/fet_simulator/fet_simulator.py +++ b/scripts/python-skywater-pdk/skywater_pdk/fet_simulator/fet_simulator.py @@ -50,18 +50,26 @@ def run_sim(c, iparam, fet_W): iparam % 'gm', iparam % 'id', iparam % 'gds', iparam % 'cgg' ) - # run the dc simulation - an = sim.dc(Vgg=slice(0, 1.8, 0.01)) + try: + # run the dc simulation + an = sim.dc(Vgg=slice(0, 1.8, 0.01)) - # calculate needed values..need as_ndarray() since most of these have None - # as the unit and that causes an error - gm_id = (an.internal_parameters[iparam % 'gm'].as_ndarray() / - an.internal_parameters[iparam % 'id'].as_ndarray()) - ft = (an.internal_parameters[iparam % 'gm'].as_ndarray() / - an.internal_parameters[iparam % 'cgg'].as_ndarray()) - id_W = (an.internal_parameters[iparam % 'id'].as_ndarray() / fet_W) - gm_gds = (an.internal_parameters[iparam % 'gm'].as_ndarray() / - an.internal_parameters[iparam % 'gds'].as_ndarray()) + # calculate needed values..need as_ndarray() since most of these have + # None as the unit and that causes an error + gm_id = (an.internal_parameters[iparam % 'gm'].as_ndarray() / + an.internal_parameters[iparam % 'id'].as_ndarray()) + ft = (an.internal_parameters[iparam % 'gm'].as_ndarray() / + an.internal_parameters[iparam % 'cgg'].as_ndarray()) + id_W = (an.internal_parameters[iparam % 'id'].as_ndarray() / fet_W) + gm_gds = (an.internal_parameters[iparam % 'gm'].as_ndarray() / + an.internal_parameters[iparam % 'gds'].as_ndarray()) + except Exception: + sim.ngspice.destroy('all') + sim.ngspice.reset() + raise + + sim.ngspice.destroy('all') + sim.ngspice.reset() return gm_id, ft, id_W, gm_gds, an.nodes['v-sweep']