From f973dd6a5cbc0d7d28df9b1640471909ec8ba0a2 Mon Sep 17 00:00:00 2001 From: mrg Date: Thu, 11 Jun 2020 11:53:34 -0700 Subject: [PATCH] Save LVS model with no u too for Calibre --- compiler/pgates/ptx.py | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/compiler/pgates/ptx.py b/compiler/pgates/ptx.py index 6fba247e..d6aa4235 100644 --- a/compiler/pgates/ptx.py +++ b/compiler/pgates/ptx.py @@ -127,12 +127,12 @@ class ptx(design.design): area_sd = 2.5 * self.poly_width * self.tx_width perimeter_sd = 2 * self.poly_width + 2 * self.tx_width if OPTS.tech_name == "s8": - # s8 technology is in microns + # s8 technology is in microns, also needs mult parameter (self.tx_width, self.mults) = pgate.bin_width(self.tx_type, self.tx_width) - main_str = "M{{0}} {{1}} {0} m={1} w={2} l={3} ".format(spice[self.tx_type], - self.mults, - self.tx_width, - drc("minwidth_poly")) + main_str = "M{{0}} {{1}} {0} m={1} w={2} l={3}".format(spice[self.tx_type], + self.mults, + self.tx_width, + drc("minwidth_poly")) # Perimeters are in microns # Area is in u since it is microns square area_str = "pd={0:.2f} ps={0:.2f} as={1:.2f}u ad={1:.2f}u".format(perimeter_sd, @@ -149,11 +149,17 @@ class ptx(design.design): # LVS lib is always in SI units if os.path.exists(OPTS.openram_tech + "lvs_lib"): - self.lvs_device = "M{{0}} {{1}} {0} m={1} w={2}u l={3}u ".format(spice[self.tx_type], - self.mults, - self.tx_width, - drc("minwidth_poly")) - + if OPTS.tech_name == "s8": + # s8 requires mult parameter too + self.lvs_device = "M{{0}} {{1}} {0} m={1} w={2} l={3} mult={1}".format(spice[self.tx_type], + self.mults, + self.tx_width, + drc("minwidth_poly")) + else: + self.lvs_device = "M{{0}} {{1}} {0} m={1} w={2}u l={3}u ".format(spice[self.tx_type], + self.mults, + self.tx_width, + drc("minwidth_poly")) def setup_layout_constants(self): """