Пример #1
0
 def __init__(self, name, rect, layer_name_num):
     self.name = name
     # repack the rect as a vector, just in case
     if type(rect[0]) == vector:
         self.rect = rect
     else:
         self.rect = [vector(rect[0]), vector(rect[1])]
     # snap the rect to the grid
     self.rect = [x.snap_to_grid() for x in self.rect]
     # if it's a layer number look up the layer name. this assumes a unique layer number.
     if type(layer_name_num) == int:
         self.layer = layer.keys()[layer.values().index(layer_name_num)]
     else:
         self.layer = layer_name_num
Пример #2
0
    def __init__(self, name, rect, layer_name_num):
        self.name = name
        # repack the rect as a vector, just in case
        if type(rect[0])==vector:
            self.rect = rect
        else:
            self.rect = [vector(rect[0]),vector(rect[1])]
        # snap the rect to the grid
        self.rect = [x.snap_to_grid() for x in self.rect]

        debug.check(self.width()>0,"Zero width pin.")
        debug.check(self.height()>0,"Zero height pin.")
        
        # if it's a layer number look up the layer name. this assumes a unique layer number.
        if type(layer_name_num)==int:
            self.layer = list(layer.keys())[list(layer.values()).index(layer_name_num)]
        else:
            self.layer=layer_name_num
        self.layer_num = layer[self.layer]
Пример #3
0
    def analytical_power(self, corner, load):
        """ Get total power of a module  """
        return self.return_power()


from sram_factory import factory

# This is not instantiated and used for calculations only.
# These are static 1x1 contacts to reuse in all the design modules.
well = factory.create(module_type="contact",
                      layer_stack=("active", "contact", "metal1"),
                      directions=("H", "V"))
active = factory.create(module_type="contact",
                        layer_stack=("active", "contact", "metal1"),
                        directions=("H", "V"))
poly = factory.create(module_type="contact",
                      layer_stack=("poly", "contact", "metal1"),
                      directions=("V", "H"))
m1m2 = factory.create(module_type="contact",
                      layer_stack=("metal1", "via1", "metal2"),
                      directions=("H", "V"))
m2m3 = factory.create(module_type="contact",
                      layer_stack=("metal2", "via2", "metal3"),
                      directions=("V", "H"))
if "metal4" in layer.keys():
    m3m4 = factory.create(module_type="contact",
                          layer_stack=("metal3", "via3", "metal4"),
                          directions=("H", "V"))
else:
    m3m4 = None