Merge branch 'master' into router

This commit is contained in:
mguthaus 2017-06-05 13:12:51 -07:00
commit 16063cc9a0
34 changed files with 417 additions and 463 deletions

View File

@ -1,54 +0,0 @@
Use signal names from the technology file. Right now they are hard
coded everywhere. For example: DATA, ADDR, etc.
Cell name (ms_flop) is hard coded in characterizer, pin names are hard
coded too. This should come from the config file which dynamically
loads the module names.
Autodetect ideal number of threads for hspice.
vdd and gnd are hard coded in some places. The names should come from
the tech file.
Some modules use upper/lower via layer instead of min width DRC rule
from tech file.
Fix the size of the labels in freepdk45. They are ok in scn3me_subm though.
Add the clock buffer internal to control logic. Simulation uses
1-4-8-16 inverters right now. Replace simulation with simple clock
buffer after fixing.
Check out the multibank organization in sram.py and bank.py to see if
it can be reduced or made more readable.
Move/modify similar functions in hierarchical_predecode2x4 and
hierarchical_predecode3x8 to hierarchical_predecode class
Fix stimuli.py to be more readable.
Change the delay measurement to be from the negative clock edge to
remove the dependency on the clock period.
Remove duplicate clock inverter in MS flop.
Make lib file have delay relative to negedge for DATA. Must update
timing code too.
Convert characterizer into a Python package
cal_delay_over_path functions in hierarchy_spice
can wire as output(it only take capcitance now).
maybe consider make rc_net a class
dont use dictionary in analytical model make it like vector class
add wire delay model for bank connection
#may 15
-explain why nand_2 fail lef
-add bank seg for delay
-build better sense amp

View File

@ -231,26 +231,22 @@ class bank(design.design):
#self.wordline_driver.logic_effort_sizing(self.num_cols)
self.add_mod(self.wordline_driver)
self.inv = pinv(name="pinv",
nmos_width=drc["minwidth_tx"],
self.inv = pinv(nmos_width=drc["minwidth_tx"],
beta=parameter["pinv_beta"],
height=self.bitcell_height)
self.add_mod(self.inv)
# 4x Inverter
self.inv4x = pinv(name="pinv4x",
nmos_width=4*drc["minwidth_tx"],
self.inv4x = pinv(nmos_width=4*drc["minwidth_tx"],
beta=parameter["pinv_beta"],
height=self.bitcell_height)
self.add_mod(self.inv4x)
self.NAND2 = nand_2(name="pnand2_x1",
nmos_width=2*drc["minwidth_tx"],
self.NAND2 = nand_2(nmos_width=2*drc["minwidth_tx"],
height=self.bitcell_height)
self.add_mod(self.NAND2)
self.NOR2 = nor_2(name="pnor2_x1",
nmos_width=drc["minwidth_tx"],
self.NOR2 = nor_2(nmos_width=drc["minwidth_tx"],
height=self.bitcell_height)
self.add_mod(self.NOR2)

View File

@ -448,7 +448,7 @@ def run_sim():
if OPTS.spice_version == "hspice":
# TODO: Should make multithreading parameter a configuration option
cmd = "{0} -mt 8 -i {1} -o {2}timing".format(OPTS.spice_exe,
cmd = "{0} -mt 2 -i {1} -o {2}timing".format(OPTS.spice_exe,
temp_stim,
OPTS.openram_temp)
valid_retcode=0

View File

@ -42,26 +42,21 @@ class control_logic(design.design):
self.mod_ms_flop = getattr(c, OPTS.config.ms_flop)
self.ms_flop = self.mod_ms_flop("ms_flop")
self.add_mod(self.ms_flop)
self.inv = pinv(name="pinv",
nmos_width=drc["minwidth_tx"],
self.inv = pinv(nmos_width=drc["minwidth_tx"],
beta=parameter["pinv_beta"])
self.add_mod(self.inv)
self.nand2 = nand_2(name="nand2",
nmos_width=2 * drc["minwidth_tx"])
self.nand2 = nand_2(nmos_width=2 * drc["minwidth_tx"])
self.add_mod(self.nand2)
self.NAND3 = nand_3(name="NAND3",
nmos_width=3 * drc["minwidth_tx"])
self.NAND3 = nand_3(nmos_width=3 * drc["minwidth_tx"])
self.add_mod(self.NAND3)
# Special gates: 4x Inverter
self.inv4 = pinv(name="pinv4",
nmos_width=4 * drc["minwidth_tx"],
self.inv4 = pinv(nmos_width=4 * drc["minwidth_tx"],
beta=parameter["pinv_beta"])
self.add_mod(self.inv4)
self.nor2 = nor_2(name="nor2",
nmos_width=drc["minwidth_tx"])
self.nor2 = nor_2(nmos_width=drc["minwidth_tx"])
self.add_mod(self.nor2)
self.msf_control = ms_flop_array(name="msf_control",
@ -70,8 +65,8 @@ class control_logic(design.design):
word_size=3)
self.add_mod(self.msf_control)
self.replica_bitline = replica_bitline("replica_bitline",
int(math.ceil(self.num_rows / 10.0)))
self.replica_bitline = replica_bitline(name="replica_bitline",
rows=int(math.ceil(self.num_rows / 10.0)))
self.add_mod(self.replica_bitline)
def add_pin_labels(self):

View File

@ -2,15 +2,19 @@ import hierarchy_layout
import hierarchy_spice
import globals
import calibre
import debug
import os
OPTS = globals.get_opts()
class design(hierarchy_spice.spice, hierarchy_layout.layout):
"""
Design Class for all modules to inherit the base features.
Class consisting of a set of modules and instances of these modules
"""
name_map = []
def __init__(self, name):
self.gds_file = OPTS.openram_tech + "gds_lib/" + name + ".gds"
@ -19,6 +23,21 @@ class design(hierarchy_spice.spice, hierarchy_layout.layout):
self.name = name
hierarchy_layout.layout.__init__(self, name)
hierarchy_spice.spice.__init__(self, name)
# Check if the name already exists, if so, give an error
# because each reference must be a unique name.
ok_list = ['ms_flop.ms_flop', 'bitcell.bitcell', 'contact.contact',
'ptx.ptx', 'sram.sram',
'hierarchical_predecode2x4.hierarchical_predecode2x4',
'hierarchical_predecode3x8.hierarchical_predecode3x8']
if name not in design.name_map:
design.name_map.append(name)
elif str(self.__class__) in ok_list:
pass
else:
debug.error("Duplicate layout reference name {0} of class {1}. GDS2 requires names be unique.".format(name,self.__class__),-1)
def DRC_LVS(self):
"""Checks both DRC and LVS for a module"""
@ -27,8 +46,8 @@ class design(hierarchy_spice.spice, hierarchy_layout.layout):
tempgds = OPTS.openram_temp + "/temp.gds"
self.sp_write(tempspice)
self.gds_write(tempgds)
assert calibre.run_drc(self.name, tempgds) == 0
assert calibre.run_lvs(self.name, tempgds, tempspice) == 0
debug.check(calibre.run_drc(self.name, tempgds) == 0,"DRC failed for {0}".format(self.name))
debug.check(calibre.run_lvs(self.name, tempgds, tempspice) == 0,"LVS failed for {0}".format(self.name))
os.remove(tempspice)
os.remove(tempgds)
@ -37,7 +56,7 @@ class design(hierarchy_spice.spice, hierarchy_layout.layout):
if OPTS.check_lvsdrc:
tempgds = OPTS.openram_temp + "/temp.gds"
self.gds_write(tempgds)
assert calibre.run_drc(self.name, tempgds) == 0
debug.check(calibre.run_drc(self.name, tempgds) == 0,"DRC failed for {0}".format(self.name))
os.remove(tempgds)
def LVS(self):
@ -47,7 +66,7 @@ class design(hierarchy_spice.spice, hierarchy_layout.layout):
tempgds = OPTS.openram_temp + "/temp.gds"
self.sp_write(tempspice)
self.gds_write(tempgds)
assert calibre.run_lvs(self.name, tempgds, tempspice) == 0
debug.check(calibre.run_lvs(self.name, tempgds, tempspice) == 0,"LVS failed for {0}".format(self.name))
os.remove(tempspice)
os.remove(tempgds)

View File

@ -1,4 +1,4 @@
word_size = 1
word_size = 2
num_words = 16
num_banks = 1

View File

@ -111,6 +111,7 @@ def init_openram(config_file):
set_calibre()
def read_config(config_file):
global OPTS
@ -151,6 +152,12 @@ def set_calibre():
def end_openram():
""" Clean up openram for a proper exit """
cleanup_paths()
# Reset the static duplicate name checker for unit tests.
# This is needed for running unit tests.
import design
design.design.name_map=[]
def cleanup_paths():
# we should clean up this temp directory after execution...
@ -253,7 +260,9 @@ def set_spice():
debug.error("{0} not found. Unable to perform characterization.".format(OPTS.spice_version),1)
else:
debug.error("Neither hspice/ngspice not found. Unable to perform characterization.",1)
if OPTS.analytical_delay:
debug.warning("Using analytical delay models instead of characterization.")
# imports correct technology directories for testing

View File

@ -19,7 +19,7 @@ class hierarchical_decoder(design.design):
"""
def __init__(self, nand2_nmos_width, nand3_nmos_width, rows):
design.design.__init__(self, "hierarchical_decoder")
design.design.__init__(self, "hierarchical_decoder_{0}rows".format(rows))
c = reload(__import__(OPTS.config.bitcell))
self.mod_bitcell = getattr(c, OPTS.config.bitcell)
@ -59,26 +59,21 @@ class hierarchical_decoder(design.design):
# used to shift contact when connecting to NAND3 C pin down
self.contact_shift = (self.m1m2_via.first_layer_width - self.m1m2_via.contact_width) / 2
self.inv = pinv(name="pinverter",
nmos_width=drc["minwidth_tx"],
self.inv = pinv(nmos_width=drc["minwidth_tx"],
beta=2,
height=self.bitcell_height)
self.add_mod(self.inv)
self.nand2 = nand_2(name="pnand2",
nmos_width=self.nand2_nmos_width,
self.nand2 = nand_2(nmos_width=self.nand2_nmos_width,
height=self.bitcell_height)
self.add_mod(self.nand2)
self.nand3 = nand_3(name="pnand3",
nmos_width=self.nand3_nmos_width,
self.nand3 = nand_3(nmos_width=self.nand3_nmos_width,
height=self.bitcell_height)
self.add_mod(self.nand3)
# CREATION OF PRE-DECODER
self.pre2_4 = pre2x4(self.nand2_nmos_width,
"pre2x4")
self.pre2_4 = pre2x4(self.nand2_nmos_width, "pre2x4")
self.add_mod(self.pre2_4)
self.pre3_8 = pre3x8(self.nand3_nmos_width,
"pre3x8")
self.pre3_8 = pre3x8(self.nand3_nmos_width, "pre3x8")
self.add_mod(self.pre3_8)
def setup_layout_offsets(self):

View File

@ -34,8 +34,7 @@ class hierarchical_predecode(design.design):
def create_modules(self):
layer_stack = ("metal1", "via1", "metal2")
self.m1m2_via = contact(layer_stack=layer_stack)
self.inv = pinv(name="a_inv_1",
nmos_width=drc["minwidth_tx"],
self.inv = pinv(nmos_width=drc["minwidth_tx"],
beta=2,
height=self.bitcell_height)
self.add_mod(self.inv)

View File

@ -19,8 +19,7 @@ class hierarchical_predecode2x4(hierarchical_predecode):
self.route()
def create_nand(self):
self.nand = nand_2(name="a_nand_2",
nmos_width=self.nmos_width,
self.nand = nand_2(nmos_width=self.nmos_width,
height=self.bitcell_height)
def set_rail_height(self):

View File

@ -20,8 +20,7 @@ class hierarchical_predecode3x8(hierarchical_predecode):
self.route()
def create_nand(self):
self.nand = nand_3(name="a_nand_3",
nmos_width=self.nmos_width,
self.nand = nand_3(nmos_width=self.nmos_width,
height=self.bitcell_height)
def set_rail_height(self):

View File

@ -17,7 +17,7 @@ class layout:
layout/netlist and perform LVS/DRC.
"""
def __init__(self, name):
def __init__(self, name):
self.name = name
self.width = None
self.height = None
@ -68,7 +68,7 @@ class layout:
attr_val = getattr(self,attr_key)
# skip the list of things as these will be offset separately
if (attr_key in ['objs','insts','mods','pins','conns']): continue
if (attr_key in ['objs','insts','mods','pins','conns','name_map']): continue
# if is a list
if isinstance(attr_val, list):

View File

@ -53,8 +53,7 @@ class logic_effort_dc(design.design):
def create_module(self):
"""add the inverters"""
self.inv = pinv(name="delay_chain_inv",
nmos_width=drc["minwidth_tx"],
self.inv = pinv(nmos_width=drc["minwidth_tx"],
route_output=False)
self.add_mod(self.inv)

View File

@ -19,8 +19,12 @@ class nand_2(design.design):
c = reload(__import__(OPTS.config.bitcell))
bitcell = getattr(c, OPTS.config.bitcell)
def __init__(self, name, nmos_width=1, height=bitcell.chars["height"]):
""" Constructor """
unique_id = 1
def __init__(self, nmos_width=1, height=bitcell.chars["height"]):
"""Constructor : Creates a cell for a simple 2 input nand"""
name = "nand2_{0}".format(nand_2.unique_id)
nand_2.unique_id += 1
design.design.__init__(self, name)
debug.info(2, "create nand_2 strcuture {0} with size of {1}".format(
name, nmos_width))

View File

@ -19,10 +19,12 @@ class nand_3(design.design):
c = reload(__import__(OPTS.config.bitcell))
bitcell = getattr(c, OPTS.config.bitcell)
def __init__(self, name, nmos_width=1, height=bitcell.chars["height"]):
"""Constructor : Creates a pcell for a simple 3_input nand"""
unique_id = 1
def __init__(self, nmos_width=1, height=bitcell.chars["height"]):
"""Constructor : Creates a cell for a simple 3 input nand"""
name = "nand3_{0}".format(nand_3.unique_id)
nand_3.unique_id += 1
design.design.__init__(self, name)
debug.info(2, "create nand_3 strcuture {0} with size of {1}".format(name, nmos_width))

View File

@ -18,8 +18,12 @@ class nor_2(design.design):
c = reload(__import__(OPTS.config.bitcell))
bitcell = getattr(c, OPTS.config.bitcell)
def __init__(self, name, nmos_width=1, height=bitcell.chars["height"]):
"""init function"""
unique_id = 1
def __init__(self, nmos_width=1, height=bitcell.chars["height"]):
"""Constructor : Creates a cell for a simple 2 input nor"""
name = "nor2_{0}".format(nor_2.unique_id)
nor_2.unique_id += 1
design.design.__init__(self, name)
debug.info(2, "create nand_2 strcuture {0} with size of {1}".format(name, nmos_width))

View File

@ -16,7 +16,12 @@ class pinv(design.design):
c = reload(__import__(OPTS.config.bitcell))
bitcell = getattr(c, OPTS.config.bitcell)
def __init__(self, name, nmos_width=1, beta=3, height=bitcell.chars["height"], route_output=True):
unique_id = 1
def __init__(self, nmos_width=1, beta=3, height=bitcell.chars["height"], route_output=True):
"""Constructor : Creates a cell for a simple inverter"""
name = "pinv{0}".format(pinv.unique_id)
pinv.unique_id += 1
design.design.__init__(self, name)
debug.info(2, "create pinv strcuture {0} with size of {1}".format(name, nmos_width))
@ -48,9 +53,9 @@ class pinv(design.design):
# These aren't for instantiating, but we use them to get the dimensions
self.nwell_contact = contact.contact(layer_stack=("active", "contact", "metal1"),
dimensions=(1, self.pmos.num_of_tacts))
dimensions=(1, self.pmos.num_of_tacts))
self.pwell_contact = contact.contact(layer_stack=("active", "contact", "metal1"),
dimensions=(1, self.nmos.num_of_tacts))
dimensions=(1, self.nmos.num_of_tacts))
self.extend_wells()
self.extend_active()

View File

@ -21,7 +21,8 @@ class ptx(design.design):
self.add_pins()
self.create_layout()
self.create_spice()
self.DRC()
# for run-time, we won't check every transitor DRC independently
#self.DRC()
def add_pins(self):
self.add_pin_list(["D", "G", "S", "B"])

View File

@ -96,8 +96,7 @@ class replica_bitline(design.design):
[1, 1, 1])
self.add_mod(self.delay_chain)
self.inv = pinv(name="RBL_inv",
nmos_width=drc["minwidth_tx"])
self.inv = pinv(nmos_width=drc["minwidth_tx"])
self.add_mod(self.inv)
# These aren't for instantiating, but we use them to get the dimensions
@ -105,8 +104,7 @@ class replica_bitline(design.design):
self.m1m2_via = contact(layer_stack=("metal1", "via1", "metal2"))
self.m2m3_via = contact(layer_stack=("metal2", "via2", "metal3"))
self.nor = nor_2(name="replica_bitline_nor2",
nmos_width=drc["minwidth_tx"])
self.nor = nor_2(nmos_width=drc["minwidth_tx"])
self.add_mod(self.nor)
self.access_tx = ptx(width=drc["minwidth_tx"],

View File

@ -26,6 +26,10 @@ class sram(design.design):
mod_class = getattr(class_file , config_mod_name)
setattr (self, "mod_"+mod_name, mod_class)
# reset the static duplicate name checker for unit tests
# in case we create more than one SRAM
import design
design.design.name_map=[]
self.ms_flop_chars = self.mod_ms_flop.chars
self.bitcell_chars = self.mod_bitcell.chars
@ -157,7 +161,7 @@ class sram(design.design):
num_words=self.num_words_per_bank,
words_per_row=self.words_per_row,
num_banks=self.num_banks,
name="test_bank1")
name="bank")
self.add_mod(self.bank)
# Conditionally create the

View File

@ -30,7 +30,7 @@ class nand_2_test(unittest.TestCase):
import tech
debug.info(2, "Checking 2-input nand gate")
tx = nand_2.nand_2(name="a_nand_1", nmos_width=2 * tech.drc["minwidth_tx"])
tx = nand_2.nand_2(nmos_width=2 * tech.drc["minwidth_tx"])
OPTS.check_lvsdrc = True
self.local_check(tx)
globals.end_openram()

View File

@ -27,7 +27,7 @@ class nand_3_test(unittest.TestCase):
import tech
debug.info(2, "Checking 3-input nand gate")
tx = nand_3.nand_3(name="nand_3", nmos_width=3 * tech.drc["minwidth_tx"])
tx = nand_3.nand_3(nmos_width=3 * tech.drc["minwidth_tx"])
OPTS.check_lvsdrc = True
self.local_check(tx)

View File

@ -29,7 +29,7 @@ class nor_2_test(unittest.TestCase):
import tech
debug.info(2, "Checking 2-input nor gate")
tx = nor_2.nor_2(name="a_nor_1", nmos_width=2 * tech.drc["minwidth_tx"])
tx = nor_2.nor_2(nmos_width=2 * tech.drc["minwidth_tx"])
OPTS.check_lvsdrc = True
self.local_check(tx)
globals.end_openram()

View File

@ -26,19 +26,19 @@ class pinv_test(unittest.TestCase):
debug.info(2, "Checking min size inverter")
OPTS.check_lvsdrc = False
tx = pinv.pinv(name="a_inv_1", nmos_width=tech.drc["minwidth_tx"], beta=tech.parameter["pinv_beta"])
tx = pinv.pinv(nmos_width=tech.drc["minwidth_tx"], beta=tech.parameter["pinv_beta"])
OPTS.check_lvsdrc = True
self.local_check(tx)
debug.info(2, "Checking 2x min size inverter")
OPTS.check_lvsdrc = False
tx = pinv.pinv(name="a_inv_2", nmos_width=2 * tech.drc["minwidth_tx"], beta=tech.parameter["pinv_beta"])
tx = pinv.pinv(nmos_width=2 * tech.drc["minwidth_tx"], beta=tech.parameter["pinv_beta"])
OPTS.check_lvsdrc = True
self.local_check(tx)
debug.info(2, "Checking 5x min size inverter")
OPTS.check_lvsdrc = False
tx = pinv.pinv(name="a_inv_5", nmos_width=5 * tech.drc["minwidth_tx"], beta=tech.parameter["pinv_beta"])
tx = pinv.pinv(nmos_width=5 * tech.drc["minwidth_tx"], beta=tech.parameter["pinv_beta"])
OPTS.check_lvsdrc = True
self.local_check(tx)

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python2.7
"""
Run a regresion test on a thierarchy_decoder.
Run a regresion test on a hierarchical_decoder.
"""
import unittest
@ -22,38 +22,43 @@ class hierarchical_decoder_test(unittest.TestCase):
import hierarchical_decoder
import tech
debug.info(1, "Testing sample for hierarchy_decoder")
debug.info(1, "Testing 4 row sample for hierarchical_decoder")
OPTS.check_lvsdrc = False
a = hierarchical_decoder.hierarchical_decoder(
nand2_nmos_width=2 * tech.drc["minwidth_tx"], nand3_nmos_width=3 * tech.drc["minwidth_tx"], rows=4)
a = hierarchical_decoder.hierarchical_decoder(nand2_nmos_width=2 * tech.drc["minwidth_tx"],
nand3_nmos_width=3 * tech.drc["minwidth_tx"],
rows=4)
OPTS.check_lvsdrc = True
self.local_check(a)
debug.info(1, "Testing sample for hierarchy_decoder")
debug.info(1, "Testing 8 row sample for hierarchical_decoder")
OPTS.check_lvsdrc = False
a = hierarchical_decoder.hierarchical_decoder(
nand2_nmos_width=2 * tech.drc["minwidth_tx"], nand3_nmos_width=3 * tech.drc["minwidth_tx"], rows=8)
a = hierarchical_decoder.hierarchical_decoder(nand2_nmos_width=2 * tech.drc["minwidth_tx"],
nand3_nmos_width=3 * tech.drc["minwidth_tx"],
rows=8)
OPTS.check_lvsdrc = True
self.local_check(a)
debug.info(1, "Testing sample for hierarchy_decoder")
debug.info(1, "Testing 32 row sample for hierarchical_decoder")
OPTS.check_lvsdrc = False
a = hierarchical_decoder.hierarchical_decoder(
nand2_nmos_width=2 * tech.drc["minwidth_tx"], nand3_nmos_width=3 * tech.drc["minwidth_tx"], rows=32)
a = hierarchical_decoder.hierarchical_decoder(nand2_nmos_width=2 * tech.drc["minwidth_tx"],
nand3_nmos_width=3 * tech.drc["minwidth_tx"],
rows=32)
OPTS.check_lvsdrc = True
self.local_check(a)
debug.info(1, "Testing sample for hierarchy_decoder")
debug.info(1, "Testing 128 row sample for hierarchical_decoder")
OPTS.check_lvsdrc = False
a = hierarchical_decoder.hierarchical_decoder(
nand2_nmos_width=2 * tech.drc["minwidth_tx"], nand3_nmos_width=3 * tech.drc["minwidth_tx"], rows=128)
a = hierarchical_decoder.hierarchical_decoder(nand2_nmos_width=2 * tech.drc["minwidth_tx"],
nand3_nmos_width=3 * tech.drc["minwidth_tx"],
rows=128)
OPTS.check_lvsdrc = True
self.local_check(a)
debug.info(1, "Testing sample for hierarchy_decoder")
debug.info(1, "Testing 512 row sample for hierarchical_decoder")
OPTS.check_lvsdrc = False
a = hierarchical_decoder.hierarchical_decoder(
nand2_nmos_width=2 * tech.drc["minwidth_tx"], nand3_nmos_width=3 * tech.drc["minwidth_tx"], rows=512)
a = hierarchical_decoder.hierarchical_decoder(nand2_nmos_width=2 * tech.drc["minwidth_tx"],
nand3_nmos_width=3 * tech.drc["minwidth_tx"],
rows=512)
OPTS.check_lvsdrc = True
self.local_check(a)

View File

@ -24,13 +24,6 @@ class precharge_test(unittest.TestCase):
import precharge_array
import tech
debug.info(2, "Checking 1 column precharge")
OPTS.check_lvsdrc = False
pc = precharge_array.precharge_array(
name="precharge_array", columns=1, ptx_width=tech.drc["minwidth_tx"], beta=2)
OPTS.check_lvsdrc = True
self.local_check(pc)
debug.info(2, "Checking 3 column precharge")
OPTS.check_lvsdrc = False
pc = precharge_array.precharge_array(

View File

@ -23,11 +23,6 @@ class sense_amp_test(unittest.TestCase):
import sense_amp_array
debug.info(2, "Testing sense_amp_array for word_size=1, words_per_row=1")
OPTS.check_lvsdrc = False
a = sense_amp_array.sense_amp_array(word_size=1, words_per_row=1)
OPTS.check_lvsdrc = True
self.local_check(a)
debug.info(2, "Testing sense_amp_array for word_size=4, words_per_row=2")
OPTS.check_lvsdrc = False
@ -35,12 +30,6 @@ class sense_amp_test(unittest.TestCase):
OPTS.check_lvsdrc = True
self.local_check(a)
debug.info(2, "Testing sense_amp_array for word_size=3, words_per_row=1")
OPTS.check_lvsdrc = False
a = sense_amp_array.sense_amp_array(word_size=3, words_per_row=1)
OPTS.check_lvsdrc = True
self.local_check(a)
globals.end_openram()
def local_check(self, a):

View File

@ -23,12 +23,6 @@ class write_driver_test(unittest.TestCase):
import write_driver_array
debug.info(2, "Testing write_driver_array for columns=16, word_size=4")
OPTS.check_lvsdrc = False
a = write_driver_array.write_driver_array(columns=16, word_size=4)
OPTS.check_lvsdrc = True
self.local_check(a)
debug.info(2, "Testing write_driver_array for columns=128, word_size=128")
OPTS.check_lvsdrc = False
a = write_driver_array.write_driver_array(columns=16, word_size=16)

View File

@ -66,7 +66,7 @@ class sram_func_test(unittest.TestCase):
import os
if OPTS.spice_version == "hspice":
cmd = "hspice -mt 36 -i {0} > {1} ".format(
cmd = "hspice -mt 2 -i {0} > {1} ".format(
simulator_file, result_file)
else:
cmd = "ngspice -b -i {0} > {1} ".format(

View File

@ -29,7 +29,7 @@ class sram_func_test(unittest.TestCase):
s = sram.sram(word_size=OPTS.config.word_size,
num_words=OPTS.config.num_words,
num_banks=OPTS.config.num_banks,
name="test_sram1")
name="sram_func_test")
OPTS.check_lvsdrc = True

View File

@ -4829,20 +4829,20 @@ MACRO sram_2_16_1_freepdk45
RECT 5.915 20.2075 6.05 20.2725 ;
RECT 5.985 18.8625 6.545 18.9275 ;
RECT 5.985 20.2075 6.545 20.2725 ;
RECT 6.4125 19.9575 6.4775 20.2075 ;
RECT 6.4125 19.8425 6.4775 20.2075 ;
RECT 6.4125 18.9275 6.4775 19.0625 ;
RECT 6.0525 18.9275 6.1175 18.9975 ;
RECT 6.0525 20.0925 6.1175 20.2075 ;
RECT 6.2425 19.03 6.3075 20.0925 ;
RECT 5.985 19.49 6.02 19.555 ;
RECT 6.3075 19.49 6.545 19.555 ;
RECT 6.0525 20.1175 6.1175 20.2075 ;
RECT 6.2425 19.03 6.3075 19.9775 ;
RECT 5.985 19.445 6.02 19.51 ;
RECT 6.3075 19.445 6.545 19.51 ;
RECT 6.0525 19.1325 6.1175 19.2675 ;
RECT 6.2425 19.1325 6.3075 19.2675 ;
RECT 6.0525 19.9575 6.1175 20.0925 ;
RECT 6.2425 19.9575 6.3075 20.0925 ;
RECT 6.4125 19.9575 6.4775 20.0925 ;
RECT 6.0525 19.8425 6.1175 20.1175 ;
RECT 6.2425 19.8425 6.3075 20.1175 ;
RECT 6.4125 19.8425 6.4775 20.1175 ;
RECT 6.4125 18.9975 6.4775 19.1325 ;
RECT 6.02 19.49 6.155 19.555 ;
RECT 6.02 19.445 6.155 19.51 ;
RECT 6.545 18.8625 7.295 18.9275 ;
RECT 6.545 20.2075 7.295 20.2725 ;
RECT 7.1625 19.9575 7.2275 20.24 ;
@ -4872,40 +4872,40 @@ MACRO sram_2_16_1_freepdk45
RECT 6.82 19.275 6.955 19.34 ;
RECT 7.295 18.8625 7.855 18.9275 ;
RECT 7.295 20.2075 7.855 20.2725 ;
RECT 7.7225 19.9575 7.7875 20.2075 ;
RECT 7.7225 19.8425 7.7875 20.2075 ;
RECT 7.7225 18.9275 7.7875 19.0625 ;
RECT 7.3625 18.9275 7.4275 18.9975 ;
RECT 7.3625 20.0925 7.4275 20.2075 ;
RECT 7.5525 19.03 7.6175 20.0925 ;
RECT 7.295 19.49 7.33 19.555 ;
RECT 7.6175 19.49 7.855 19.555 ;
RECT 7.3625 20.1175 7.4275 20.2075 ;
RECT 7.5525 19.03 7.6175 19.9775 ;
RECT 7.295 19.445 7.33 19.51 ;
RECT 7.6175 19.445 7.855 19.51 ;
RECT 7.3625 19.1325 7.4275 19.2675 ;
RECT 7.5525 19.1325 7.6175 19.2675 ;
RECT 7.3625 19.9575 7.4275 20.0925 ;
RECT 7.5525 19.9575 7.6175 20.0925 ;
RECT 7.7225 19.9575 7.7875 20.0925 ;
RECT 7.3625 19.8425 7.4275 20.1175 ;
RECT 7.5525 19.8425 7.6175 20.1175 ;
RECT 7.7225 19.8425 7.7875 20.1175 ;
RECT 7.7225 18.9975 7.7875 19.1325 ;
RECT 7.33 19.49 7.465 19.555 ;
RECT 7.33 19.445 7.465 19.51 ;
RECT 6.545 19.8075 6.68 19.8725 ;
RECT 5.5325 19.805 5.5975 19.94 ;
RECT 5.46 21.5525 5.595 21.6175 ;
RECT 5.915 21.5525 6.05 21.6175 ;
RECT 5.985 21.5525 6.545 21.6175 ;
RECT 5.985 20.2075 6.545 20.2725 ;
RECT 6.4125 20.2725 6.4775 20.5225 ;
RECT 6.4125 20.2725 6.4775 20.6375 ;
RECT 6.4125 21.4175 6.4775 21.5525 ;
RECT 6.0525 21.4825 6.1175 21.5525 ;
RECT 6.0525 20.2725 6.1175 20.3875 ;
RECT 6.2425 20.3875 6.3075 21.45 ;
RECT 5.985 20.925 6.02 20.99 ;
RECT 6.3075 20.925 6.545 20.99 ;
RECT 6.0525 20.2725 6.1175 20.3625 ;
RECT 6.2425 20.5025 6.3075 21.45 ;
RECT 5.985 20.97 6.02 21.035 ;
RECT 6.3075 20.97 6.545 21.035 ;
RECT 6.0525 21.2825 6.1175 21.4175 ;
RECT 6.2425 21.2825 6.3075 21.4175 ;
RECT 6.0525 20.6775 6.1175 20.8125 ;
RECT 6.2425 20.6775 6.3075 20.8125 ;
RECT 6.4125 20.5225 6.4775 20.6575 ;
RECT 6.0525 20.7425 6.1175 21.0175 ;
RECT 6.2425 20.7425 6.3075 21.0175 ;
RECT 6.4125 20.6375 6.4775 20.9125 ;
RECT 6.4125 21.4825 6.4775 21.6175 ;
RECT 6.02 21.0 6.155 21.065 ;
RECT 6.02 21.045 6.155 21.11 ;
RECT 6.545 21.5525 7.295 21.6175 ;
RECT 6.545 20.2075 7.295 20.2725 ;
RECT 7.1625 20.24 7.2275 20.5225 ;
@ -4935,40 +4935,40 @@ MACRO sram_2_16_1_freepdk45
RECT 6.82 21.215 6.955 21.28 ;
RECT 7.295 21.5525 7.855 21.6175 ;
RECT 7.295 20.2075 7.855 20.2725 ;
RECT 7.7225 20.2725 7.7875 20.5225 ;
RECT 7.7225 20.2725 7.7875 20.6375 ;
RECT 7.7225 21.4175 7.7875 21.5525 ;
RECT 7.3625 21.4825 7.4275 21.5525 ;
RECT 7.3625 20.2725 7.4275 20.3875 ;
RECT 7.5525 20.3875 7.6175 21.45 ;
RECT 7.295 20.925 7.33 20.99 ;
RECT 7.6175 20.925 7.855 20.99 ;
RECT 7.3625 20.2725 7.4275 20.3625 ;
RECT 7.5525 20.5025 7.6175 21.45 ;
RECT 7.295 20.97 7.33 21.035 ;
RECT 7.6175 20.97 7.855 21.035 ;
RECT 7.3625 21.2825 7.4275 21.4175 ;
RECT 7.5525 21.2825 7.6175 21.4175 ;
RECT 7.3625 20.6775 7.4275 20.8125 ;
RECT 7.5525 20.6775 7.6175 20.8125 ;
RECT 7.7225 20.5225 7.7875 20.6575 ;
RECT 7.3625 20.7425 7.4275 21.0175 ;
RECT 7.5525 20.7425 7.6175 21.0175 ;
RECT 7.7225 20.6375 7.7875 20.9125 ;
RECT 7.7225 21.4825 7.7875 21.6175 ;
RECT 7.33 21.0 7.465 21.065 ;
RECT 7.33 21.045 7.465 21.11 ;
RECT 6.545 20.6075 6.68 20.6725 ;
RECT 5.5325 20.54 5.5975 20.675 ;
RECT 5.46 22.8975 5.595 22.9625 ;
RECT 5.915 22.8975 6.05 22.9625 ;
RECT 5.985 21.5525 6.545 21.6175 ;
RECT 5.985 22.8975 6.545 22.9625 ;
RECT 6.4125 22.6475 6.4775 22.8975 ;
RECT 6.4125 22.5325 6.4775 22.8975 ;
RECT 6.4125 21.6175 6.4775 21.7525 ;
RECT 6.0525 21.6175 6.1175 21.6875 ;
RECT 6.0525 22.7825 6.1175 22.8975 ;
RECT 6.2425 21.72 6.3075 22.7825 ;
RECT 5.985 22.18 6.02 22.245 ;
RECT 6.3075 22.18 6.545 22.245 ;
RECT 6.0525 22.8075 6.1175 22.8975 ;
RECT 6.2425 21.72 6.3075 22.6675 ;
RECT 5.985 22.135 6.02 22.2 ;
RECT 6.3075 22.135 6.545 22.2 ;
RECT 6.0525 21.8225 6.1175 21.9575 ;
RECT 6.2425 21.8225 6.3075 21.9575 ;
RECT 6.0525 22.6475 6.1175 22.7825 ;
RECT 6.2425 22.6475 6.3075 22.7825 ;
RECT 6.4125 22.6475 6.4775 22.7825 ;
RECT 6.0525 22.5325 6.1175 22.8075 ;
RECT 6.2425 22.5325 6.3075 22.8075 ;
RECT 6.4125 22.5325 6.4775 22.8075 ;
RECT 6.4125 21.6875 6.4775 21.8225 ;
RECT 6.02 22.18 6.155 22.245 ;
RECT 6.02 22.135 6.155 22.2 ;
RECT 6.545 21.5525 7.295 21.6175 ;
RECT 6.545 22.8975 7.295 22.9625 ;
RECT 7.1625 22.6475 7.2275 22.93 ;
@ -4998,40 +4998,40 @@ MACRO sram_2_16_1_freepdk45
RECT 6.82 21.965 6.955 22.03 ;
RECT 7.295 21.5525 7.855 21.6175 ;
RECT 7.295 22.8975 7.855 22.9625 ;
RECT 7.7225 22.6475 7.7875 22.8975 ;
RECT 7.7225 22.5325 7.7875 22.8975 ;
RECT 7.7225 21.6175 7.7875 21.7525 ;
RECT 7.3625 21.6175 7.4275 21.6875 ;
RECT 7.3625 22.7825 7.4275 22.8975 ;
RECT 7.5525 21.72 7.6175 22.7825 ;
RECT 7.295 22.18 7.33 22.245 ;
RECT 7.6175 22.18 7.855 22.245 ;
RECT 7.3625 22.8075 7.4275 22.8975 ;
RECT 7.5525 21.72 7.6175 22.6675 ;
RECT 7.295 22.135 7.33 22.2 ;
RECT 7.6175 22.135 7.855 22.2 ;
RECT 7.3625 21.8225 7.4275 21.9575 ;
RECT 7.5525 21.8225 7.6175 21.9575 ;
RECT 7.3625 22.6475 7.4275 22.7825 ;
RECT 7.5525 22.6475 7.6175 22.7825 ;
RECT 7.7225 22.6475 7.7875 22.7825 ;
RECT 7.3625 22.5325 7.4275 22.8075 ;
RECT 7.5525 22.5325 7.6175 22.8075 ;
RECT 7.7225 22.5325 7.7875 22.8075 ;
RECT 7.7225 21.6875 7.7875 21.8225 ;
RECT 7.33 22.18 7.465 22.245 ;
RECT 7.33 22.135 7.465 22.2 ;
RECT 6.545 22.4975 6.68 22.5625 ;
RECT 5.5325 22.495 5.5975 22.63 ;
RECT 5.46 24.2425 5.595 24.3075 ;
RECT 5.915 24.2425 6.05 24.3075 ;
RECT 5.985 24.2425 6.545 24.3075 ;
RECT 5.985 22.8975 6.545 22.9625 ;
RECT 6.4125 22.9625 6.4775 23.2125 ;
RECT 6.4125 22.9625 6.4775 23.3275 ;
RECT 6.4125 24.1075 6.4775 24.2425 ;
RECT 6.0525 24.1725 6.1175 24.2425 ;
RECT 6.0525 22.9625 6.1175 23.0775 ;
RECT 6.2425 23.0775 6.3075 24.14 ;
RECT 5.985 23.615 6.02 23.68 ;
RECT 6.3075 23.615 6.545 23.68 ;
RECT 6.0525 22.9625 6.1175 23.0525 ;
RECT 6.2425 23.1925 6.3075 24.14 ;
RECT 5.985 23.66 6.02 23.725 ;
RECT 6.3075 23.66 6.545 23.725 ;
RECT 6.0525 23.9725 6.1175 24.1075 ;
RECT 6.2425 23.9725 6.3075 24.1075 ;
RECT 6.0525 23.3675 6.1175 23.5025 ;
RECT 6.2425 23.3675 6.3075 23.5025 ;
RECT 6.4125 23.2125 6.4775 23.3475 ;
RECT 6.0525 23.4325 6.1175 23.7075 ;
RECT 6.2425 23.4325 6.3075 23.7075 ;
RECT 6.4125 23.3275 6.4775 23.6025 ;
RECT 6.4125 24.1725 6.4775 24.3075 ;
RECT 6.02 23.69 6.155 23.755 ;
RECT 6.02 23.735 6.155 23.8 ;
RECT 6.545 24.2425 7.295 24.3075 ;
RECT 6.545 22.8975 7.295 22.9625 ;
RECT 7.1625 22.93 7.2275 23.2125 ;
@ -5061,40 +5061,40 @@ MACRO sram_2_16_1_freepdk45
RECT 6.82 23.905 6.955 23.97 ;
RECT 7.295 24.2425 7.855 24.3075 ;
RECT 7.295 22.8975 7.855 22.9625 ;
RECT 7.7225 22.9625 7.7875 23.2125 ;
RECT 7.7225 22.9625 7.7875 23.3275 ;
RECT 7.7225 24.1075 7.7875 24.2425 ;
RECT 7.3625 24.1725 7.4275 24.2425 ;
RECT 7.3625 22.9625 7.4275 23.0775 ;
RECT 7.5525 23.0775 7.6175 24.14 ;
RECT 7.295 23.615 7.33 23.68 ;
RECT 7.6175 23.615 7.855 23.68 ;
RECT 7.3625 22.9625 7.4275 23.0525 ;
RECT 7.5525 23.1925 7.6175 24.14 ;
RECT 7.295 23.66 7.33 23.725 ;
RECT 7.6175 23.66 7.855 23.725 ;
RECT 7.3625 23.9725 7.4275 24.1075 ;
RECT 7.5525 23.9725 7.6175 24.1075 ;
RECT 7.3625 23.3675 7.4275 23.5025 ;
RECT 7.5525 23.3675 7.6175 23.5025 ;
RECT 7.7225 23.2125 7.7875 23.3475 ;
RECT 7.3625 23.4325 7.4275 23.7075 ;
RECT 7.5525 23.4325 7.6175 23.7075 ;
RECT 7.7225 23.3275 7.7875 23.6025 ;
RECT 7.7225 24.1725 7.7875 24.3075 ;
RECT 7.33 23.69 7.465 23.755 ;
RECT 7.33 23.735 7.465 23.8 ;
RECT 6.545 23.2975 6.68 23.3625 ;
RECT 5.5325 23.23 5.5975 23.365 ;
RECT 5.46 25.5875 5.595 25.6525 ;
RECT 5.915 25.5875 6.05 25.6525 ;
RECT 5.985 24.2425 6.545 24.3075 ;
RECT 5.985 25.5875 6.545 25.6525 ;
RECT 6.4125 25.3375 6.4775 25.5875 ;
RECT 6.4125 25.2225 6.4775 25.5875 ;
RECT 6.4125 24.3075 6.4775 24.4425 ;
RECT 6.0525 24.3075 6.1175 24.3775 ;
RECT 6.0525 25.4725 6.1175 25.5875 ;
RECT 6.2425 24.41 6.3075 25.4725 ;
RECT 5.985 24.87 6.02 24.935 ;
RECT 6.3075 24.87 6.545 24.935 ;
RECT 6.0525 25.4975 6.1175 25.5875 ;
RECT 6.2425 24.41 6.3075 25.3575 ;
RECT 5.985 24.825 6.02 24.89 ;
RECT 6.3075 24.825 6.545 24.89 ;
RECT 6.0525 24.5125 6.1175 24.6475 ;
RECT 6.2425 24.5125 6.3075 24.6475 ;
RECT 6.0525 25.3375 6.1175 25.4725 ;
RECT 6.2425 25.3375 6.3075 25.4725 ;
RECT 6.4125 25.3375 6.4775 25.4725 ;
RECT 6.0525 25.2225 6.1175 25.4975 ;
RECT 6.2425 25.2225 6.3075 25.4975 ;
RECT 6.4125 25.2225 6.4775 25.4975 ;
RECT 6.4125 24.3775 6.4775 24.5125 ;
RECT 6.02 24.87 6.155 24.935 ;
RECT 6.02 24.825 6.155 24.89 ;
RECT 6.545 24.2425 7.295 24.3075 ;
RECT 6.545 25.5875 7.295 25.6525 ;
RECT 7.1625 25.3375 7.2275 25.62 ;
@ -5124,40 +5124,40 @@ MACRO sram_2_16_1_freepdk45
RECT 6.82 24.655 6.955 24.72 ;
RECT 7.295 24.2425 7.855 24.3075 ;
RECT 7.295 25.5875 7.855 25.6525 ;
RECT 7.7225 25.3375 7.7875 25.5875 ;
RECT 7.7225 25.2225 7.7875 25.5875 ;
RECT 7.7225 24.3075 7.7875 24.4425 ;
RECT 7.3625 24.3075 7.4275 24.3775 ;
RECT 7.3625 25.4725 7.4275 25.5875 ;
RECT 7.5525 24.41 7.6175 25.4725 ;
RECT 7.295 24.87 7.33 24.935 ;
RECT 7.6175 24.87 7.855 24.935 ;
RECT 7.3625 25.4975 7.4275 25.5875 ;
RECT 7.5525 24.41 7.6175 25.3575 ;
RECT 7.295 24.825 7.33 24.89 ;
RECT 7.6175 24.825 7.855 24.89 ;
RECT 7.3625 24.5125 7.4275 24.6475 ;
RECT 7.5525 24.5125 7.6175 24.6475 ;
RECT 7.3625 25.3375 7.4275 25.4725 ;
RECT 7.5525 25.3375 7.6175 25.4725 ;
RECT 7.7225 25.3375 7.7875 25.4725 ;
RECT 7.3625 25.2225 7.4275 25.4975 ;
RECT 7.5525 25.2225 7.6175 25.4975 ;
RECT 7.7225 25.2225 7.7875 25.4975 ;
RECT 7.7225 24.3775 7.7875 24.5125 ;
RECT 7.33 24.87 7.465 24.935 ;
RECT 7.33 24.825 7.465 24.89 ;
RECT 6.545 25.1875 6.68 25.2525 ;
RECT 5.5325 25.185 5.5975 25.32 ;
RECT 5.46 26.9325 5.595 26.9975 ;
RECT 5.915 26.9325 6.05 26.9975 ;
RECT 5.985 26.9325 6.545 26.9975 ;
RECT 5.985 25.5875 6.545 25.6525 ;
RECT 6.4125 25.6525 6.4775 25.9025 ;
RECT 6.4125 25.6525 6.4775 26.0175 ;
RECT 6.4125 26.7975 6.4775 26.9325 ;
RECT 6.0525 26.8625 6.1175 26.9325 ;
RECT 6.0525 25.6525 6.1175 25.7675 ;
RECT 6.2425 25.7675 6.3075 26.83 ;
RECT 5.985 26.305 6.02 26.37 ;
RECT 6.3075 26.305 6.545 26.37 ;
RECT 6.0525 25.6525 6.1175 25.7425 ;
RECT 6.2425 25.8825 6.3075 26.83 ;
RECT 5.985 26.35 6.02 26.415 ;
RECT 6.3075 26.35 6.545 26.415 ;
RECT 6.0525 26.6625 6.1175 26.7975 ;
RECT 6.2425 26.6625 6.3075 26.7975 ;
RECT 6.0525 26.0575 6.1175 26.1925 ;
RECT 6.2425 26.0575 6.3075 26.1925 ;
RECT 6.4125 25.9025 6.4775 26.0375 ;
RECT 6.0525 26.1225 6.1175 26.3975 ;
RECT 6.2425 26.1225 6.3075 26.3975 ;
RECT 6.4125 26.0175 6.4775 26.2925 ;
RECT 6.4125 26.8625 6.4775 26.9975 ;
RECT 6.02 26.38 6.155 26.445 ;
RECT 6.02 26.425 6.155 26.49 ;
RECT 6.545 26.9325 7.295 26.9975 ;
RECT 6.545 25.5875 7.295 25.6525 ;
RECT 7.1625 25.62 7.2275 25.9025 ;
@ -5187,40 +5187,40 @@ MACRO sram_2_16_1_freepdk45
RECT 6.82 26.595 6.955 26.66 ;
RECT 7.295 26.9325 7.855 26.9975 ;
RECT 7.295 25.5875 7.855 25.6525 ;
RECT 7.7225 25.6525 7.7875 25.9025 ;
RECT 7.7225 25.6525 7.7875 26.0175 ;
RECT 7.7225 26.7975 7.7875 26.9325 ;
RECT 7.3625 26.8625 7.4275 26.9325 ;
RECT 7.3625 25.6525 7.4275 25.7675 ;
RECT 7.5525 25.7675 7.6175 26.83 ;
RECT 7.295 26.305 7.33 26.37 ;
RECT 7.6175 26.305 7.855 26.37 ;
RECT 7.3625 25.6525 7.4275 25.7425 ;
RECT 7.5525 25.8825 7.6175 26.83 ;
RECT 7.295 26.35 7.33 26.415 ;
RECT 7.6175 26.35 7.855 26.415 ;
RECT 7.3625 26.6625 7.4275 26.7975 ;
RECT 7.5525 26.6625 7.6175 26.7975 ;
RECT 7.3625 26.0575 7.4275 26.1925 ;
RECT 7.5525 26.0575 7.6175 26.1925 ;
RECT 7.7225 25.9025 7.7875 26.0375 ;
RECT 7.3625 26.1225 7.4275 26.3975 ;
RECT 7.5525 26.1225 7.6175 26.3975 ;
RECT 7.7225 26.0175 7.7875 26.2925 ;
RECT 7.7225 26.8625 7.7875 26.9975 ;
RECT 7.33 26.38 7.465 26.445 ;
RECT 7.33 26.425 7.465 26.49 ;
RECT 6.545 25.9875 6.68 26.0525 ;
RECT 5.5325 25.92 5.5975 26.055 ;
RECT 5.46 28.2775 5.595 28.3425 ;
RECT 5.915 28.2775 6.05 28.3425 ;
RECT 5.985 26.9325 6.545 26.9975 ;
RECT 5.985 28.2775 6.545 28.3425 ;
RECT 6.4125 28.0275 6.4775 28.2775 ;
RECT 6.4125 27.9125 6.4775 28.2775 ;
RECT 6.4125 26.9975 6.4775 27.1325 ;
RECT 6.0525 26.9975 6.1175 27.0675 ;
RECT 6.0525 28.1625 6.1175 28.2775 ;
RECT 6.2425 27.1 6.3075 28.1625 ;
RECT 5.985 27.56 6.02 27.625 ;
RECT 6.3075 27.56 6.545 27.625 ;
RECT 6.0525 28.1875 6.1175 28.2775 ;
RECT 6.2425 27.1 6.3075 28.0475 ;
RECT 5.985 27.515 6.02 27.58 ;
RECT 6.3075 27.515 6.545 27.58 ;
RECT 6.0525 27.2025 6.1175 27.3375 ;
RECT 6.2425 27.2025 6.3075 27.3375 ;
RECT 6.0525 28.0275 6.1175 28.1625 ;
RECT 6.2425 28.0275 6.3075 28.1625 ;
RECT 6.4125 28.0275 6.4775 28.1625 ;
RECT 6.0525 27.9125 6.1175 28.1875 ;
RECT 6.2425 27.9125 6.3075 28.1875 ;
RECT 6.4125 27.9125 6.4775 28.1875 ;
RECT 6.4125 27.0675 6.4775 27.2025 ;
RECT 6.02 27.56 6.155 27.625 ;
RECT 6.02 27.515 6.155 27.58 ;
RECT 6.545 26.9325 7.295 26.9975 ;
RECT 6.545 28.2775 7.295 28.3425 ;
RECT 7.1625 28.0275 7.2275 28.31 ;
@ -5250,40 +5250,40 @@ MACRO sram_2_16_1_freepdk45
RECT 6.82 27.345 6.955 27.41 ;
RECT 7.295 26.9325 7.855 26.9975 ;
RECT 7.295 28.2775 7.855 28.3425 ;
RECT 7.7225 28.0275 7.7875 28.2775 ;
RECT 7.7225 27.9125 7.7875 28.2775 ;
RECT 7.7225 26.9975 7.7875 27.1325 ;
RECT 7.3625 26.9975 7.4275 27.0675 ;
RECT 7.3625 28.1625 7.4275 28.2775 ;
RECT 7.5525 27.1 7.6175 28.1625 ;
RECT 7.295 27.56 7.33 27.625 ;
RECT 7.6175 27.56 7.855 27.625 ;
RECT 7.3625 28.1875 7.4275 28.2775 ;
RECT 7.5525 27.1 7.6175 28.0475 ;
RECT 7.295 27.515 7.33 27.58 ;
RECT 7.6175 27.515 7.855 27.58 ;
RECT 7.3625 27.2025 7.4275 27.3375 ;
RECT 7.5525 27.2025 7.6175 27.3375 ;
RECT 7.3625 28.0275 7.4275 28.1625 ;
RECT 7.5525 28.0275 7.6175 28.1625 ;
RECT 7.7225 28.0275 7.7875 28.1625 ;
RECT 7.3625 27.9125 7.4275 28.1875 ;
RECT 7.5525 27.9125 7.6175 28.1875 ;
RECT 7.7225 27.9125 7.7875 28.1875 ;
RECT 7.7225 27.0675 7.7875 27.2025 ;
RECT 7.33 27.56 7.465 27.625 ;
RECT 7.33 27.515 7.465 27.58 ;
RECT 6.545 27.8775 6.68 27.9425 ;
RECT 5.5325 27.875 5.5975 28.01 ;
RECT 5.46 29.6225 5.595 29.6875 ;
RECT 5.915 29.6225 6.05 29.6875 ;
RECT 5.985 29.6225 6.545 29.6875 ;
RECT 5.985 28.2775 6.545 28.3425 ;
RECT 6.4125 28.3425 6.4775 28.5925 ;
RECT 6.4125 28.3425 6.4775 28.7075 ;
RECT 6.4125 29.4875 6.4775 29.6225 ;
RECT 6.0525 29.5525 6.1175 29.6225 ;
RECT 6.0525 28.3425 6.1175 28.4575 ;
RECT 6.2425 28.4575 6.3075 29.52 ;
RECT 5.985 28.995 6.02 29.06 ;
RECT 6.3075 28.995 6.545 29.06 ;
RECT 6.0525 28.3425 6.1175 28.4325 ;
RECT 6.2425 28.5725 6.3075 29.52 ;
RECT 5.985 29.04 6.02 29.105 ;
RECT 6.3075 29.04 6.545 29.105 ;
RECT 6.0525 29.3525 6.1175 29.4875 ;
RECT 6.2425 29.3525 6.3075 29.4875 ;
RECT 6.0525 28.7475 6.1175 28.8825 ;
RECT 6.2425 28.7475 6.3075 28.8825 ;
RECT 6.4125 28.5925 6.4775 28.7275 ;
RECT 6.0525 28.8125 6.1175 29.0875 ;
RECT 6.2425 28.8125 6.3075 29.0875 ;
RECT 6.4125 28.7075 6.4775 28.9825 ;
RECT 6.4125 29.5525 6.4775 29.6875 ;
RECT 6.02 29.07 6.155 29.135 ;
RECT 6.02 29.115 6.155 29.18 ;
RECT 6.545 29.6225 7.295 29.6875 ;
RECT 6.545 28.2775 7.295 28.3425 ;
RECT 7.1625 28.31 7.2275 28.5925 ;
@ -5313,40 +5313,40 @@ MACRO sram_2_16_1_freepdk45
RECT 6.82 29.285 6.955 29.35 ;
RECT 7.295 29.6225 7.855 29.6875 ;
RECT 7.295 28.2775 7.855 28.3425 ;
RECT 7.7225 28.3425 7.7875 28.5925 ;
RECT 7.7225 28.3425 7.7875 28.7075 ;
RECT 7.7225 29.4875 7.7875 29.6225 ;
RECT 7.3625 29.5525 7.4275 29.6225 ;
RECT 7.3625 28.3425 7.4275 28.4575 ;
RECT 7.5525 28.4575 7.6175 29.52 ;
RECT 7.295 28.995 7.33 29.06 ;
RECT 7.6175 28.995 7.855 29.06 ;
RECT 7.3625 28.3425 7.4275 28.4325 ;
RECT 7.5525 28.5725 7.6175 29.52 ;
RECT 7.295 29.04 7.33 29.105 ;
RECT 7.6175 29.04 7.855 29.105 ;
RECT 7.3625 29.3525 7.4275 29.4875 ;
RECT 7.5525 29.3525 7.6175 29.4875 ;
RECT 7.3625 28.7475 7.4275 28.8825 ;
RECT 7.5525 28.7475 7.6175 28.8825 ;
RECT 7.7225 28.5925 7.7875 28.7275 ;
RECT 7.3625 28.8125 7.4275 29.0875 ;
RECT 7.5525 28.8125 7.6175 29.0875 ;
RECT 7.7225 28.7075 7.7875 28.9825 ;
RECT 7.7225 29.5525 7.7875 29.6875 ;
RECT 7.33 29.07 7.465 29.135 ;
RECT 7.33 29.115 7.465 29.18 ;
RECT 6.545 28.6775 6.68 28.7425 ;
RECT 5.5325 28.61 5.5975 28.745 ;
RECT 5.46 30.9675 5.595 31.0325 ;
RECT 5.915 30.9675 6.05 31.0325 ;
RECT 5.985 29.6225 6.545 29.6875 ;
RECT 5.985 30.9675 6.545 31.0325 ;
RECT 6.4125 30.7175 6.4775 30.9675 ;
RECT 6.4125 30.6025 6.4775 30.9675 ;
RECT 6.4125 29.6875 6.4775 29.8225 ;
RECT 6.0525 29.6875 6.1175 29.7575 ;
RECT 6.0525 30.8525 6.1175 30.9675 ;
RECT 6.2425 29.79 6.3075 30.8525 ;
RECT 5.985 30.25 6.02 30.315 ;
RECT 6.3075 30.25 6.545 30.315 ;
RECT 6.0525 30.8775 6.1175 30.9675 ;
RECT 6.2425 29.79 6.3075 30.7375 ;
RECT 5.985 30.205 6.02 30.27 ;
RECT 6.3075 30.205 6.545 30.27 ;
RECT 6.0525 29.8925 6.1175 30.0275 ;
RECT 6.2425 29.8925 6.3075 30.0275 ;
RECT 6.0525 30.7175 6.1175 30.8525 ;
RECT 6.2425 30.7175 6.3075 30.8525 ;
RECT 6.4125 30.7175 6.4775 30.8525 ;
RECT 6.0525 30.6025 6.1175 30.8775 ;
RECT 6.2425 30.6025 6.3075 30.8775 ;
RECT 6.4125 30.6025 6.4775 30.8775 ;
RECT 6.4125 29.7575 6.4775 29.8925 ;
RECT 6.02 30.25 6.155 30.315 ;
RECT 6.02 30.205 6.155 30.27 ;
RECT 6.545 29.6225 7.295 29.6875 ;
RECT 6.545 30.9675 7.295 31.0325 ;
RECT 7.1625 30.7175 7.2275 31.0 ;
@ -5376,40 +5376,40 @@ MACRO sram_2_16_1_freepdk45
RECT 6.82 30.035 6.955 30.1 ;
RECT 7.295 29.6225 7.855 29.6875 ;
RECT 7.295 30.9675 7.855 31.0325 ;
RECT 7.7225 30.7175 7.7875 30.9675 ;
RECT 7.7225 30.6025 7.7875 30.9675 ;
RECT 7.7225 29.6875 7.7875 29.8225 ;
RECT 7.3625 29.6875 7.4275 29.7575 ;
RECT 7.3625 30.8525 7.4275 30.9675 ;
RECT 7.5525 29.79 7.6175 30.8525 ;
RECT 7.295 30.25 7.33 30.315 ;
RECT 7.6175 30.25 7.855 30.315 ;
RECT 7.3625 30.8775 7.4275 30.9675 ;
RECT 7.5525 29.79 7.6175 30.7375 ;
RECT 7.295 30.205 7.33 30.27 ;
RECT 7.6175 30.205 7.855 30.27 ;
RECT 7.3625 29.8925 7.4275 30.0275 ;
RECT 7.5525 29.8925 7.6175 30.0275 ;
RECT 7.3625 30.7175 7.4275 30.8525 ;
RECT 7.5525 30.7175 7.6175 30.8525 ;
RECT 7.7225 30.7175 7.7875 30.8525 ;
RECT 7.3625 30.6025 7.4275 30.8775 ;
RECT 7.5525 30.6025 7.6175 30.8775 ;
RECT 7.7225 30.6025 7.7875 30.8775 ;
RECT 7.7225 29.7575 7.7875 29.8925 ;
RECT 7.33 30.25 7.465 30.315 ;
RECT 7.33 30.205 7.465 30.27 ;
RECT 6.545 30.5675 6.68 30.6325 ;
RECT 5.5325 30.565 5.5975 30.7 ;
RECT 5.46 32.3125 5.595 32.3775 ;
RECT 5.915 32.3125 6.05 32.3775 ;
RECT 5.985 32.3125 6.545 32.3775 ;
RECT 5.985 30.9675 6.545 31.0325 ;
RECT 6.4125 31.0325 6.4775 31.2825 ;
RECT 6.4125 31.0325 6.4775 31.3975 ;
RECT 6.4125 32.1775 6.4775 32.3125 ;
RECT 6.0525 32.2425 6.1175 32.3125 ;
RECT 6.0525 31.0325 6.1175 31.1475 ;
RECT 6.2425 31.1475 6.3075 32.21 ;
RECT 5.985 31.685 6.02 31.75 ;
RECT 6.3075 31.685 6.545 31.75 ;
RECT 6.0525 31.0325 6.1175 31.1225 ;
RECT 6.2425 31.2625 6.3075 32.21 ;
RECT 5.985 31.73 6.02 31.795 ;
RECT 6.3075 31.73 6.545 31.795 ;
RECT 6.0525 32.0425 6.1175 32.1775 ;
RECT 6.2425 32.0425 6.3075 32.1775 ;
RECT 6.0525 31.4375 6.1175 31.5725 ;
RECT 6.2425 31.4375 6.3075 31.5725 ;
RECT 6.4125 31.2825 6.4775 31.4175 ;
RECT 6.0525 31.5025 6.1175 31.7775 ;
RECT 6.2425 31.5025 6.3075 31.7775 ;
RECT 6.4125 31.3975 6.4775 31.6725 ;
RECT 6.4125 32.2425 6.4775 32.3775 ;
RECT 6.02 31.76 6.155 31.825 ;
RECT 6.02 31.805 6.155 31.87 ;
RECT 6.545 32.3125 7.295 32.3775 ;
RECT 6.545 30.9675 7.295 31.0325 ;
RECT 7.1625 31.0 7.2275 31.2825 ;
@ -5439,40 +5439,40 @@ MACRO sram_2_16_1_freepdk45
RECT 6.82 31.975 6.955 32.04 ;
RECT 7.295 32.3125 7.855 32.3775 ;
RECT 7.295 30.9675 7.855 31.0325 ;
RECT 7.7225 31.0325 7.7875 31.2825 ;
RECT 7.7225 31.0325 7.7875 31.3975 ;
RECT 7.7225 32.1775 7.7875 32.3125 ;
RECT 7.3625 32.2425 7.4275 32.3125 ;
RECT 7.3625 31.0325 7.4275 31.1475 ;
RECT 7.5525 31.1475 7.6175 32.21 ;
RECT 7.295 31.685 7.33 31.75 ;
RECT 7.6175 31.685 7.855 31.75 ;
RECT 7.3625 31.0325 7.4275 31.1225 ;
RECT 7.5525 31.2625 7.6175 32.21 ;
RECT 7.295 31.73 7.33 31.795 ;
RECT 7.6175 31.73 7.855 31.795 ;
RECT 7.3625 32.0425 7.4275 32.1775 ;
RECT 7.5525 32.0425 7.6175 32.1775 ;
RECT 7.3625 31.4375 7.4275 31.5725 ;
RECT 7.5525 31.4375 7.6175 31.5725 ;
RECT 7.7225 31.2825 7.7875 31.4175 ;
RECT 7.3625 31.5025 7.4275 31.7775 ;
RECT 7.5525 31.5025 7.6175 31.7775 ;
RECT 7.7225 31.3975 7.7875 31.6725 ;
RECT 7.7225 32.2425 7.7875 32.3775 ;
RECT 7.33 31.76 7.465 31.825 ;
RECT 7.33 31.805 7.465 31.87 ;
RECT 6.545 31.3675 6.68 31.4325 ;
RECT 5.5325 31.3 5.5975 31.435 ;
RECT 5.46 33.6575 5.595 33.7225 ;
RECT 5.915 33.6575 6.05 33.7225 ;
RECT 5.985 32.3125 6.545 32.3775 ;
RECT 5.985 33.6575 6.545 33.7225 ;
RECT 6.4125 33.4075 6.4775 33.6575 ;
RECT 6.4125 33.2925 6.4775 33.6575 ;
RECT 6.4125 32.3775 6.4775 32.5125 ;
RECT 6.0525 32.3775 6.1175 32.4475 ;
RECT 6.0525 33.5425 6.1175 33.6575 ;
RECT 6.2425 32.48 6.3075 33.5425 ;
RECT 5.985 32.94 6.02 33.005 ;
RECT 6.3075 32.94 6.545 33.005 ;
RECT 6.0525 33.5675 6.1175 33.6575 ;
RECT 6.2425 32.48 6.3075 33.4275 ;
RECT 5.985 32.895 6.02 32.96 ;
RECT 6.3075 32.895 6.545 32.96 ;
RECT 6.0525 32.5825 6.1175 32.7175 ;
RECT 6.2425 32.5825 6.3075 32.7175 ;
RECT 6.0525 33.4075 6.1175 33.5425 ;
RECT 6.2425 33.4075 6.3075 33.5425 ;
RECT 6.4125 33.4075 6.4775 33.5425 ;
RECT 6.0525 33.2925 6.1175 33.5675 ;
RECT 6.2425 33.2925 6.3075 33.5675 ;
RECT 6.4125 33.2925 6.4775 33.5675 ;
RECT 6.4125 32.4475 6.4775 32.5825 ;
RECT 6.02 32.94 6.155 33.005 ;
RECT 6.02 32.895 6.155 32.96 ;
RECT 6.545 32.3125 7.295 32.3775 ;
RECT 6.545 33.6575 7.295 33.7225 ;
RECT 7.1625 33.4075 7.2275 33.69 ;
@ -5502,40 +5502,40 @@ MACRO sram_2_16_1_freepdk45
RECT 6.82 32.725 6.955 32.79 ;
RECT 7.295 32.3125 7.855 32.3775 ;
RECT 7.295 33.6575 7.855 33.7225 ;
RECT 7.7225 33.4075 7.7875 33.6575 ;
RECT 7.7225 33.2925 7.7875 33.6575 ;
RECT 7.7225 32.3775 7.7875 32.5125 ;
RECT 7.3625 32.3775 7.4275 32.4475 ;
RECT 7.3625 33.5425 7.4275 33.6575 ;
RECT 7.5525 32.48 7.6175 33.5425 ;
RECT 7.295 32.94 7.33 33.005 ;
RECT 7.6175 32.94 7.855 33.005 ;
RECT 7.3625 33.5675 7.4275 33.6575 ;
RECT 7.5525 32.48 7.6175 33.4275 ;
RECT 7.295 32.895 7.33 32.96 ;
RECT 7.6175 32.895 7.855 32.96 ;
RECT 7.3625 32.5825 7.4275 32.7175 ;
RECT 7.5525 32.5825 7.6175 32.7175 ;
RECT 7.3625 33.4075 7.4275 33.5425 ;
RECT 7.5525 33.4075 7.6175 33.5425 ;
RECT 7.7225 33.4075 7.7875 33.5425 ;
RECT 7.3625 33.2925 7.4275 33.5675 ;
RECT 7.5525 33.2925 7.6175 33.5675 ;
RECT 7.7225 33.2925 7.7875 33.5675 ;
RECT 7.7225 32.4475 7.7875 32.5825 ;
RECT 7.33 32.94 7.465 33.005 ;
RECT 7.33 32.895 7.465 32.96 ;
RECT 6.545 33.2575 6.68 33.3225 ;
RECT 5.5325 33.255 5.5975 33.39 ;
RECT 5.46 35.0025 5.595 35.0675 ;
RECT 5.915 35.0025 6.05 35.0675 ;
RECT 5.985 35.0025 6.545 35.0675 ;
RECT 5.985 33.6575 6.545 33.7225 ;
RECT 6.4125 33.7225 6.4775 33.9725 ;
RECT 6.4125 33.7225 6.4775 34.0875 ;
RECT 6.4125 34.8675 6.4775 35.0025 ;
RECT 6.0525 34.9325 6.1175 35.0025 ;
RECT 6.0525 33.7225 6.1175 33.8375 ;
RECT 6.2425 33.8375 6.3075 34.9 ;
RECT 5.985 34.375 6.02 34.44 ;
RECT 6.3075 34.375 6.545 34.44 ;
RECT 6.0525 33.7225 6.1175 33.8125 ;
RECT 6.2425 33.9525 6.3075 34.9 ;
RECT 5.985 34.42 6.02 34.485 ;
RECT 6.3075 34.42 6.545 34.485 ;
RECT 6.0525 34.7325 6.1175 34.8675 ;
RECT 6.2425 34.7325 6.3075 34.8675 ;
RECT 6.0525 34.1275 6.1175 34.2625 ;
RECT 6.2425 34.1275 6.3075 34.2625 ;
RECT 6.4125 33.9725 6.4775 34.1075 ;
RECT 6.0525 34.1925 6.1175 34.4675 ;
RECT 6.2425 34.1925 6.3075 34.4675 ;
RECT 6.4125 34.0875 6.4775 34.3625 ;
RECT 6.4125 34.9325 6.4775 35.0675 ;
RECT 6.02 34.45 6.155 34.515 ;
RECT 6.02 34.495 6.155 34.56 ;
RECT 6.545 35.0025 7.295 35.0675 ;
RECT 6.545 33.6575 7.295 33.7225 ;
RECT 7.1625 33.69 7.2275 33.9725 ;
@ -5565,40 +5565,40 @@ MACRO sram_2_16_1_freepdk45
RECT 6.82 34.665 6.955 34.73 ;
RECT 7.295 35.0025 7.855 35.0675 ;
RECT 7.295 33.6575 7.855 33.7225 ;
RECT 7.7225 33.7225 7.7875 33.9725 ;
RECT 7.7225 33.7225 7.7875 34.0875 ;
RECT 7.7225 34.8675 7.7875 35.0025 ;
RECT 7.3625 34.9325 7.4275 35.0025 ;
RECT 7.3625 33.7225 7.4275 33.8375 ;
RECT 7.5525 33.8375 7.6175 34.9 ;
RECT 7.295 34.375 7.33 34.44 ;
RECT 7.6175 34.375 7.855 34.44 ;
RECT 7.3625 33.7225 7.4275 33.8125 ;
RECT 7.5525 33.9525 7.6175 34.9 ;
RECT 7.295 34.42 7.33 34.485 ;
RECT 7.6175 34.42 7.855 34.485 ;
RECT 7.3625 34.7325 7.4275 34.8675 ;
RECT 7.5525 34.7325 7.6175 34.8675 ;
RECT 7.3625 34.1275 7.4275 34.2625 ;
RECT 7.5525 34.1275 7.6175 34.2625 ;
RECT 7.7225 33.9725 7.7875 34.1075 ;
RECT 7.3625 34.1925 7.4275 34.4675 ;
RECT 7.5525 34.1925 7.6175 34.4675 ;
RECT 7.7225 34.0875 7.7875 34.3625 ;
RECT 7.7225 34.9325 7.7875 35.0675 ;
RECT 7.33 34.45 7.465 34.515 ;
RECT 7.33 34.495 7.465 34.56 ;
RECT 6.545 34.0575 6.68 34.1225 ;
RECT 5.5325 33.99 5.5975 34.125 ;
RECT 5.46 36.3475 5.595 36.4125 ;
RECT 5.915 36.3475 6.05 36.4125 ;
RECT 5.985 35.0025 6.545 35.0675 ;
RECT 5.985 36.3475 6.545 36.4125 ;
RECT 6.4125 36.0975 6.4775 36.3475 ;
RECT 6.4125 35.9825 6.4775 36.3475 ;
RECT 6.4125 35.0675 6.4775 35.2025 ;
RECT 6.0525 35.0675 6.1175 35.1375 ;
RECT 6.0525 36.2325 6.1175 36.3475 ;
RECT 6.2425 35.17 6.3075 36.2325 ;
RECT 5.985 35.63 6.02 35.695 ;
RECT 6.3075 35.63 6.545 35.695 ;
RECT 6.0525 36.2575 6.1175 36.3475 ;
RECT 6.2425 35.17 6.3075 36.1175 ;
RECT 5.985 35.585 6.02 35.65 ;
RECT 6.3075 35.585 6.545 35.65 ;
RECT 6.0525 35.2725 6.1175 35.4075 ;
RECT 6.2425 35.2725 6.3075 35.4075 ;
RECT 6.0525 36.0975 6.1175 36.2325 ;
RECT 6.2425 36.0975 6.3075 36.2325 ;
RECT 6.4125 36.0975 6.4775 36.2325 ;
RECT 6.0525 35.9825 6.1175 36.2575 ;
RECT 6.2425 35.9825 6.3075 36.2575 ;
RECT 6.4125 35.9825 6.4775 36.2575 ;
RECT 6.4125 35.1375 6.4775 35.2725 ;
RECT 6.02 35.63 6.155 35.695 ;
RECT 6.02 35.585 6.155 35.65 ;
RECT 6.545 35.0025 7.295 35.0675 ;
RECT 6.545 36.3475 7.295 36.4125 ;
RECT 7.1625 36.0975 7.2275 36.38 ;
@ -5628,40 +5628,40 @@ MACRO sram_2_16_1_freepdk45
RECT 6.82 35.415 6.955 35.48 ;
RECT 7.295 35.0025 7.855 35.0675 ;
RECT 7.295 36.3475 7.855 36.4125 ;
RECT 7.7225 36.0975 7.7875 36.3475 ;
RECT 7.7225 35.9825 7.7875 36.3475 ;
RECT 7.7225 35.0675 7.7875 35.2025 ;
RECT 7.3625 35.0675 7.4275 35.1375 ;
RECT 7.3625 36.2325 7.4275 36.3475 ;
RECT 7.5525 35.17 7.6175 36.2325 ;
RECT 7.295 35.63 7.33 35.695 ;
RECT 7.6175 35.63 7.855 35.695 ;
RECT 7.3625 36.2575 7.4275 36.3475 ;
RECT 7.5525 35.17 7.6175 36.1175 ;
RECT 7.295 35.585 7.33 35.65 ;
RECT 7.6175 35.585 7.855 35.65 ;
RECT 7.3625 35.2725 7.4275 35.4075 ;
RECT 7.5525 35.2725 7.6175 35.4075 ;
RECT 7.3625 36.0975 7.4275 36.2325 ;
RECT 7.5525 36.0975 7.6175 36.2325 ;
RECT 7.7225 36.0975 7.7875 36.2325 ;
RECT 7.3625 35.9825 7.4275 36.2575 ;
RECT 7.5525 35.9825 7.6175 36.2575 ;
RECT 7.7225 35.9825 7.7875 36.2575 ;
RECT 7.7225 35.1375 7.7875 35.2725 ;
RECT 7.33 35.63 7.465 35.695 ;
RECT 7.33 35.585 7.465 35.65 ;
RECT 6.545 35.9475 6.68 36.0125 ;
RECT 5.5325 35.945 5.5975 36.08 ;
RECT 5.46 37.6925 5.595 37.7575 ;
RECT 5.915 37.6925 6.05 37.7575 ;
RECT 5.985 37.6925 6.545 37.7575 ;
RECT 5.985 36.3475 6.545 36.4125 ;
RECT 6.4125 36.4125 6.4775 36.6625 ;
RECT 6.4125 36.4125 6.4775 36.7775 ;
RECT 6.4125 37.5575 6.4775 37.6925 ;
RECT 6.0525 37.6225 6.1175 37.6925 ;
RECT 6.0525 36.4125 6.1175 36.5275 ;
RECT 6.2425 36.5275 6.3075 37.59 ;
RECT 5.985 37.065 6.02 37.13 ;
RECT 6.3075 37.065 6.545 37.13 ;
RECT 6.0525 36.4125 6.1175 36.5025 ;
RECT 6.2425 36.6425 6.3075 37.59 ;
RECT 5.985 37.11 6.02 37.175 ;
RECT 6.3075 37.11 6.545 37.175 ;
RECT 6.0525 37.4225 6.1175 37.5575 ;
RECT 6.2425 37.4225 6.3075 37.5575 ;
RECT 6.0525 36.8175 6.1175 36.9525 ;
RECT 6.2425 36.8175 6.3075 36.9525 ;
RECT 6.4125 36.6625 6.4775 36.7975 ;
RECT 6.0525 36.8825 6.1175 37.1575 ;
RECT 6.2425 36.8825 6.3075 37.1575 ;
RECT 6.4125 36.7775 6.4775 37.0525 ;
RECT 6.4125 37.6225 6.4775 37.7575 ;
RECT 6.02 37.14 6.155 37.205 ;
RECT 6.02 37.185 6.155 37.25 ;
RECT 6.545 37.6925 7.295 37.7575 ;
RECT 6.545 36.3475 7.295 36.4125 ;
RECT 7.1625 36.38 7.2275 36.6625 ;
@ -5691,40 +5691,40 @@ MACRO sram_2_16_1_freepdk45
RECT 6.82 37.355 6.955 37.42 ;
RECT 7.295 37.6925 7.855 37.7575 ;
RECT 7.295 36.3475 7.855 36.4125 ;
RECT 7.7225 36.4125 7.7875 36.6625 ;
RECT 7.7225 36.4125 7.7875 36.7775 ;
RECT 7.7225 37.5575 7.7875 37.6925 ;
RECT 7.3625 37.6225 7.4275 37.6925 ;
RECT 7.3625 36.4125 7.4275 36.5275 ;
RECT 7.5525 36.5275 7.6175 37.59 ;
RECT 7.295 37.065 7.33 37.13 ;
RECT 7.6175 37.065 7.855 37.13 ;
RECT 7.3625 36.4125 7.4275 36.5025 ;
RECT 7.5525 36.6425 7.6175 37.59 ;
RECT 7.295 37.11 7.33 37.175 ;
RECT 7.6175 37.11 7.855 37.175 ;
RECT 7.3625 37.4225 7.4275 37.5575 ;
RECT 7.5525 37.4225 7.6175 37.5575 ;
RECT 7.3625 36.8175 7.4275 36.9525 ;
RECT 7.5525 36.8175 7.6175 36.9525 ;
RECT 7.7225 36.6625 7.7875 36.7975 ;
RECT 7.3625 36.8825 7.4275 37.1575 ;
RECT 7.5525 36.8825 7.6175 37.1575 ;
RECT 7.7225 36.7775 7.7875 37.0525 ;
RECT 7.7225 37.6225 7.7875 37.7575 ;
RECT 7.33 37.14 7.465 37.205 ;
RECT 7.33 37.185 7.465 37.25 ;
RECT 6.545 36.7475 6.68 36.8125 ;
RECT 5.5325 36.68 5.5975 36.815 ;
RECT 5.46 39.0375 5.595 39.1025 ;
RECT 5.915 39.0375 6.05 39.1025 ;
RECT 5.985 37.6925 6.545 37.7575 ;
RECT 5.985 39.0375 6.545 39.1025 ;
RECT 6.4125 38.7875 6.4775 39.0375 ;
RECT 6.4125 38.6725 6.4775 39.0375 ;
RECT 6.4125 37.7575 6.4775 37.8925 ;
RECT 6.0525 37.7575 6.1175 37.8275 ;
RECT 6.0525 38.9225 6.1175 39.0375 ;
RECT 6.2425 37.86 6.3075 38.9225 ;
RECT 5.985 38.32 6.02 38.385 ;
RECT 6.3075 38.32 6.545 38.385 ;
RECT 6.0525 38.9475 6.1175 39.0375 ;
RECT 6.2425 37.86 6.3075 38.8075 ;
RECT 5.985 38.275 6.02 38.34 ;
RECT 6.3075 38.275 6.545 38.34 ;
RECT 6.0525 37.9625 6.1175 38.0975 ;
RECT 6.2425 37.9625 6.3075 38.0975 ;
RECT 6.0525 38.7875 6.1175 38.9225 ;
RECT 6.2425 38.7875 6.3075 38.9225 ;
RECT 6.4125 38.7875 6.4775 38.9225 ;
RECT 6.0525 38.6725 6.1175 38.9475 ;
RECT 6.2425 38.6725 6.3075 38.9475 ;
RECT 6.4125 38.6725 6.4775 38.9475 ;
RECT 6.4125 37.8275 6.4775 37.9625 ;
RECT 6.02 38.32 6.155 38.385 ;
RECT 6.02 38.275 6.155 38.34 ;
RECT 6.545 37.6925 7.295 37.7575 ;
RECT 6.545 39.0375 7.295 39.1025 ;
RECT 7.1625 38.7875 7.2275 39.07 ;
@ -5754,40 +5754,40 @@ MACRO sram_2_16_1_freepdk45
RECT 6.82 38.105 6.955 38.17 ;
RECT 7.295 37.6925 7.855 37.7575 ;
RECT 7.295 39.0375 7.855 39.1025 ;
RECT 7.7225 38.7875 7.7875 39.0375 ;
RECT 7.7225 38.6725 7.7875 39.0375 ;
RECT 7.7225 37.7575 7.7875 37.8925 ;
RECT 7.3625 37.7575 7.4275 37.8275 ;
RECT 7.3625 38.9225 7.4275 39.0375 ;
RECT 7.5525 37.86 7.6175 38.9225 ;
RECT 7.295 38.32 7.33 38.385 ;
RECT 7.6175 38.32 7.855 38.385 ;
RECT 7.3625 38.9475 7.4275 39.0375 ;
RECT 7.5525 37.86 7.6175 38.8075 ;
RECT 7.295 38.275 7.33 38.34 ;
RECT 7.6175 38.275 7.855 38.34 ;
RECT 7.3625 37.9625 7.4275 38.0975 ;
RECT 7.5525 37.9625 7.6175 38.0975 ;
RECT 7.3625 38.7875 7.4275 38.9225 ;
RECT 7.5525 38.7875 7.6175 38.9225 ;
RECT 7.7225 38.7875 7.7875 38.9225 ;
RECT 7.3625 38.6725 7.4275 38.9475 ;
RECT 7.5525 38.6725 7.6175 38.9475 ;
RECT 7.7225 38.6725 7.7875 38.9475 ;
RECT 7.7225 37.8275 7.7875 37.9625 ;
RECT 7.33 38.32 7.465 38.385 ;
RECT 7.33 38.275 7.465 38.34 ;
RECT 6.545 38.6375 6.68 38.7025 ;
RECT 5.5325 38.635 5.5975 38.77 ;
RECT 5.46 40.3825 5.595 40.4475 ;
RECT 5.915 40.3825 6.05 40.4475 ;
RECT 5.985 40.3825 6.545 40.4475 ;
RECT 5.985 39.0375 6.545 39.1025 ;
RECT 6.4125 39.1025 6.4775 39.3525 ;
RECT 6.4125 39.1025 6.4775 39.4675 ;
RECT 6.4125 40.2475 6.4775 40.3825 ;
RECT 6.0525 40.3125 6.1175 40.3825 ;
RECT 6.0525 39.1025 6.1175 39.2175 ;
RECT 6.2425 39.2175 6.3075 40.28 ;
RECT 5.985 39.755 6.02 39.82 ;
RECT 6.3075 39.755 6.545 39.82 ;
RECT 6.0525 39.1025 6.1175 39.1925 ;
RECT 6.2425 39.3325 6.3075 40.28 ;
RECT 5.985 39.8 6.02 39.865 ;
RECT 6.3075 39.8 6.545 39.865 ;
RECT 6.0525 40.1125 6.1175 40.2475 ;
RECT 6.2425 40.1125 6.3075 40.2475 ;
RECT 6.0525 39.5075 6.1175 39.6425 ;
RECT 6.2425 39.5075 6.3075 39.6425 ;
RECT 6.4125 39.3525 6.4775 39.4875 ;
RECT 6.0525 39.5725 6.1175 39.8475 ;
RECT 6.2425 39.5725 6.3075 39.8475 ;
RECT 6.4125 39.4675 6.4775 39.7425 ;
RECT 6.4125 40.3125 6.4775 40.4475 ;
RECT 6.02 39.83 6.155 39.895 ;
RECT 6.02 39.875 6.155 39.94 ;
RECT 6.545 40.3825 7.295 40.4475 ;
RECT 6.545 39.0375 7.295 39.1025 ;
RECT 7.1625 39.07 7.2275 39.3525 ;
@ -5817,20 +5817,20 @@ MACRO sram_2_16_1_freepdk45
RECT 6.82 40.045 6.955 40.11 ;
RECT 7.295 40.3825 7.855 40.4475 ;
RECT 7.295 39.0375 7.855 39.1025 ;
RECT 7.7225 39.1025 7.7875 39.3525 ;
RECT 7.7225 39.1025 7.7875 39.4675 ;
RECT 7.7225 40.2475 7.7875 40.3825 ;
RECT 7.3625 40.3125 7.4275 40.3825 ;
RECT 7.3625 39.1025 7.4275 39.2175 ;
RECT 7.5525 39.2175 7.6175 40.28 ;
RECT 7.295 39.755 7.33 39.82 ;
RECT 7.6175 39.755 7.855 39.82 ;
RECT 7.3625 39.1025 7.4275 39.1925 ;
RECT 7.5525 39.3325 7.6175 40.28 ;
RECT 7.295 39.8 7.33 39.865 ;
RECT 7.6175 39.8 7.855 39.865 ;
RECT 7.3625 40.1125 7.4275 40.2475 ;
RECT 7.5525 40.1125 7.6175 40.2475 ;
RECT 7.3625 39.5075 7.4275 39.6425 ;
RECT 7.5525 39.5075 7.6175 39.6425 ;
RECT 7.7225 39.3525 7.7875 39.4875 ;
RECT 7.3625 39.5725 7.4275 39.8475 ;
RECT 7.5525 39.5725 7.6175 39.8475 ;
RECT 7.7225 39.4675 7.7875 39.7425 ;
RECT 7.7225 40.3125 7.7875 40.4475 ;
RECT 7.33 39.83 7.465 39.895 ;
RECT 7.33 39.875 7.465 39.94 ;
RECT 6.545 39.4375 6.68 39.5025 ;
RECT 5.5325 39.37 5.5975 39.505 ;
RECT 1.0825 5.02 1.1475 7.84 ;

View File

@ -96,7 +96,8 @@ def isdiff(file1,file2):
f2 = open(file2,"r")
s2 = f2.readlines()
for line in difflib.unified_diff(s1, s2):
debug.error(line)
debug.info(3,line)
debug.error("MISMATCH {0} {1}".format(file1,file2))
else:
debug.info(2,"MATCH {0} {1}".format(file1,file2))
return (check)

View File

@ -13,11 +13,11 @@ class wire(path):
The points are the center of the wire.
The layer stack is the vertical, contact/via, and horizontal layers, respectively.
"""
unique_wire_id = 1
unique_id = 1
def __init__(self, layer_stack, position_list):
name = "wire_{0}".format(wire.unique_wire_id)
wire.unique_wire_id += 1
name = "wire_{0}".format(wire.unique_id)
wire.unique_id += 1
design.design.__init__(self, name)
debug.info(3, "create wire obj {0}".format(name))

View File

@ -40,13 +40,11 @@ class wordline_driver(design.design):
self.create_layout()
def add_layout(self):
self.inv = pinv(name="pinverter",
nmos_width=drc["minwidth_tx"],
self.inv = pinv(nmos_width=drc["minwidth_tx"],
beta=parameter["pinv_beta"])
self.add_mod(self.inv)
self.NAND2 = nand_2(name="pnand2",
nmos_width=2*drc["minwidth_tx"])
self.NAND2 = nand_2(nmos_width=2*drc["minwidth_tx"])
self.add_mod(self.NAND2)