def add_logical_component_to_deviceset(self, cpt, lib, deviceset):
        """ Add the openjson component to the eagle library and deviceset objects
        as a logical device with gates. """

        symbol_names = set() # set of names used for eaglexml symbols
        gate_names = set() # set of names used for eaglemxl gates

        for symindex, symbol in enumerate(cpt.symbols):
            for bodyindex, body in enumerate(symbol.bodies):
                index = (symindex * len(symbol.bodies)) + bodyindex
                symname = cpt.attributes.get('eaglexml_symbol_%d' % index,
                                             'symbol_%d' % len(lib.symbols.symbol))
                if symname not in symbol_names:
                    lib.symbols.symbol.append(
                        self.make_eagle_symbol_for_openjson_body(symname, body))
                    symbol_names.add(symname)

                gatename = cpt.attributes.get('eaglexml_gate_%d' % bodyindex,
                                              'G$%d' % bodyindex)
                if gatename not in gate_names:
                    deviceset.gates.gate.append(
                        G.gate(name=gatename, symbol=symname, x="0", y="0"))
                    gate_names.add(gatename)

                self.body2gate[body] = gatename

                for pin in body.pins:
                    self.cptpin2gate[cpt.name, pin.pin_number] = gatename
Esempio n. 2
0
    def add_logical_component_to_deviceset(self, cpt_name, cpt, lib,
                                           deviceset):
        """ Add the openjson component to the eagle library and deviceset objects
        as a logical device with gates. """

        # set of names used for eaglexml symbols
        symbol_names = set([s.name for s in lib.symbols.symbol])
        gate_names = set()  # set of names used for eaglemxl gates
        self.cpt2pinnames[cpt_name] = []

        for symindex, symbol in enumerate(cpt.symbols):
            for bodyindex, body in enumerate(symbol.bodies):
                index = (symindex * len(symbol.bodies)) + bodyindex
                symname = cpt.attributes.get(
                    'eaglexml_symbol_%d' % index,
                    'symbol_%d' % len(lib.symbols.symbol))
                for pin in body.pins:
                    if pin.label is not None:
                        pin_name = pin.label.text
                    else:
                        pin_name = pin.pin_number
                    if pin_name in self.cpt2pinnames[cpt_name]:
                        self.pinnum2name[(
                            cpt_name, pin.pin_number)] = pin_name + ' ' + str(
                                self.cpt2pinnames[cpt_name].count(pin_name) +
                                1)
                    else:
                        self.pinnum2name[(cpt_name, pin.pin_number)] = pin_name
                    self.cpt2pinnames[cpt_name].append(pin_name)

                if symname not in symbol_names:
                    lib.symbols.symbol.append(
                        self.make_eagle_symbol_for_openjson_body(
                            symname, body, cpt_name))
                    symbol_names.add(symname)

                gatename = cpt.attributes.get('eaglexml_gate_%d' % bodyindex,
                                              'G$%d' % bodyindex)
                if gatename not in gate_names:
                    deviceset.gates.gate.append(
                        G.gate(name=gatename, symbol=symname, x="0", y="0"))
                    gate_names.add(gatename)

                self.body2gate[body] = gatename

                for pin in body.pins:
                    self.cptpin2gate[cpt_name, pin.pin_number] = gatename
    def add_logical_component_to_deviceset(self, cpt_name, cpt, lib, deviceset):
        """ Add the openjson component to the eagle library and deviceset objects
        as a logical device with gates. """

        # set of names used for eaglexml symbols
        symbol_names = set([s.name for s in lib.symbols.symbol])
        gate_names = set() # set of names used for eaglemxl gates
        self.cpt2pinnames[cpt_name] = []

        for symindex, symbol in enumerate(cpt.symbols):
            for bodyindex, body in enumerate(symbol.bodies):
                index = (symindex * len(symbol.bodies)) + bodyindex
                symname = cpt.attributes.get('eaglexml_symbol_%d' % index,
                                             'symbol_%d' % len(lib.symbols.symbol))
                for pin in body.pins:
                    if pin.label is not None:
                        pin_name = pin.label.text
                    else:
                        pin_name = pin.pin_number
                    if pin_name in self.cpt2pinnames[cpt_name]:
                        self.pinnum2name[(cpt_name, pin.pin_number)] = pin_name + ' ' + str(self.cpt2pinnames[cpt_name].count(pin_name) + 1)
                    else:
                        self.pinnum2name[(cpt_name, pin.pin_number)] = pin_name
                    self.cpt2pinnames[cpt_name].append(pin_name)

                if symname not in symbol_names:
                    lib.symbols.symbol.append(
                        self.make_eagle_symbol_for_openjson_body(symname, body, cpt_name))
                    symbol_names.add(symname)

                gatename = cpt.attributes.get('eaglexml_gate_%d' % bodyindex,
                                              'G$%d' % bodyindex)
                if gatename not in gate_names:
                    deviceset.gates.gate.append(
                        G.gate(name=gatename, symbol=symname, x="0", y="0"))
                    gate_names.add(gatename)

                self.body2gate[body] = gatename

                for pin in body.pins:
                    self.cptpin2gate[cpt_name, pin.pin_number] = gatename