def generate_code(self, block):
        block.add_attribute_simple("id", self.__id)
        block.add_attribute_simple("title", self.get_title())
        block.add_attribute_simple("ball", self.__pad.ball)
        block.add_attribute_simple("row", self.__pad.row)
        block.add_attribute_simple("col", self.__pad.col)

        if self.__power:
            p = block.add_attribute_block(block, "power")
            p.add_attribute_simple("domain", self.__power.pointer())
            p.add_attribute_simple("is_supply", not self.__power.is_consumer)

        if self.__mux_field:
            m = block.add_attribute_block(block, "mux")
            m.add_attribute_simple("functions", Symbol("&pin_mux_%s" % self.__id.lower(), None, None))
            m.add_attribute_simple("mux_register", self.__mux_field.get_register().expand_address(), fmt="0x%08x")

            m.add_attribute_simple("mux_bitmask", self.__mux_field.get_bitmask(), fmt="0x%08x")
    def generate_code(self, top):
        import generator

        block = top.create_struct(top, 'bga', "bga_%s" % self.get_code_id())

        block.add_attribute_simple('id', self.__id)
        block.add_attribute_simple('num_cols', int(self.__cols))
        block.add_attribute_simple('num_rows', int(self.__rows))
        block.add_attribute_simple('pins',
                                   generator.Symbol('pins_%s' % self.get_code_id(),
                                                    None, 'pins'))