예제 #1
0
    def add_modules(self):
        self.m1m2_via = contact(layer_stack=("metal1", "via1", "metal2"))
        # Vertical metal rail gap definition
        self.metal2_extend_contact = (self.m1m2_via.second_layer_height -
                                      self.m1m2_via.contact_width) / 2
        self.gap_between_rails = self.metal2_extend_contact + drc[
            "metal2_to_metal2"]
        self.gap_between_rail_offset = self.gap_between_rails + drc[
            "minwidth_metal2"]
        self.via_shift = (self.m1m2_via.second_layer_width -
                          self.m1m2_via.first_layer_width) / 2
        # 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"],
                        beta=2,
                        height=self.bitcell_height)
        self.add_mod(self.inv)
        self.nand2 = nand_2(name="pnand2",
                            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,
                            height=self.bitcell_height)
        self.add_mod(self.nand3)

        # CREATION OF PRE-DECODER
        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.add_mod(self.pre3_8)
예제 #2
0
 def add_decoders(self):
     """ Create the decoders based on the number of pre-decodes """
     self.pre2_4 = pre2x4()
     self.add_mod(self.pre2_4)
     
     self.pre3_8 = pre3x8()
     self.add_mod(self.pre3_8)
예제 #3
0
    def add_modules(self):

        self.dec4_4 = decode_stage_4_4()
        self.add_mod(self.dec4_4)

        self.dec5_4 = decode_stage_5_4()
        self.add_mod(self.dec5_4)

        self.pre2_4 = pre2x4()
        self.add_mod(self.pre2_4)

        self.pre3_8 = pre3x8()
        self.add_mod(self.pre3_8)
예제 #4
0
    def add_modules(self):
        self.inv = pinv()
        self.add_mod(self.inv)
        self.nand2 = pnand2()
        self.add_mod(self.nand2)
        self.nand3 = pnand3()
        self.add_mod(self.nand3)

        # CREATION OF PRE-DECODER
        self.pre2_4 = pre2x4()
        self.add_mod(self.pre2_4)
        self.pre3_8 = pre3x8()
        self.add_mod(self.pre3_8)
예제 #5
0
    def create_modules(self):
        """ Add all the required modules """

        self.nor3 = nor3()
        self.add_mod(self.nor3)

        self.nand2 = nand2()
        self.add_mod(self.nand2)

        self.inv = pinv()
        self.add_mod(self.inv)

        self.inv2 = pinv(size=2)
        self.add_mod(self.inv2)

        self.inv5 = pinv(size=5)
        self.add_mod(self.inv5)

        if self.num_banks == 4:
            self.pre2_4 = pre2x4()
            self.add_mod(self.pre2_4)