Exemple #1
0
 def test_from_wire_and_cable(self):
     library = self.netlist.libraries[1]
     definition = library.definitions[0]
     cable = definition.cables[0]
     wire = cable.wires[0]
     hrefs = list(sdn.get_hinstances(self.netlist.top_instance))
     href_top = hrefs[0]
     href_result = next(sdn.get_hinstances(wire))
     self.assertTrue(href_top is href_result)
     href_result = next(sdn.get_hinstances(cable))
     self.assertTrue(href_top is href_result)
Exemple #2
0
 def test_get_hinstances_from_hrefs_of_port_and_pin(self):
     library = self.netlist.libraries[0]
     definition = library.definitions[0]
     port = definition.ports[0]
     pin = port.pins[0]
     hrefs = list(sdn.get_hinstances(pin))
     href = hrefs[0]
     from spydrnet.util.hierarchical_reference import HRef
     port_href = HRef.from_parent_and_item(href, port)
     href_result = next(sdn.get_hinstances(port_href), None)
     self.assertTrue(href_result is href)
     pin_href = HRef.from_parent_and_item(port_href, pin)
     href_result = next(sdn.get_hinstances(pin_href), None)
     self.assertTrue(href_result is href)
Exemple #3
0
 def test_get_hinstances_from_hrefs_of_cable_and_wire(self):
     library = self.netlist.libraries[1]
     definition = library.definitions[0]
     cable = definition.cables[0]
     wire = cable.wires[0]
     hrefs = list(sdn.get_hinstances(wire))
     href_top = hrefs[0]
     from spydrnet.util.hierarchical_reference import HRef
     cable_href = HRef.from_parent_and_item(href_top, cable)
     href_result = next(sdn.get_hinstances(cable_href), None)
     self.assertTrue(href_result is href_top)
     wire_href = HRef.from_parent_and_item(cable_href, wire)
     href_result = next(sdn.get_hinstances(wire_href), None)
     self.assertTrue(href_result is href_top)
    def test_through_hierarchy(self):
        netlist = sdn.Netlist()
        library = netlist.create_library()
        definition = library.create_definition()
        instance = sdn.Instance()
        instance.reference = definition
        netlist.top_instance = instance

        middle_inst = definition.create_child()
        middle_def = library.create_definition()
        middle_cable = middle_def.create_cable()
        middle_wire = middle_cable.create_wire()
        middle_inst.reference = middle_def

        leaf_inst = middle_def.create_child()
        leaf_def = library.create_definition()
        leaf_inst.reference = leaf_def

        top_inst_href = next(sdn.get_hinstances(netlist.top_instance))
        hrefs = list(sdn.get_hcables(top_inst_href, recursive=True))
        self.assertTrue(
            len(hrefs) == 1
            and all(isinstance(x.item, sdn.Cable) for x in hrefs))

        hrefs = list(sdn.get_hcables(middle_inst))
        self.assertTrue(
            len(hrefs) == 1
            and all(isinstance(x.item, sdn.Cable) for x in hrefs))
Exemple #5
0
 def test_get_hinstances_of_pin(self):
     library = self.netlist.libraries[0]
     definition = library.definitions[0]
     port = definition.ports[0]
     pin = port.pins[0]
     hrefs = list(sdn.get_hinstances(pin))
     self.assertTrue(len(hrefs) == 7)
Exemple #6
0
 def test_get_hinstances_of_wire(self):
     library = self.netlist.libraries[1]
     definition = library.definitions[0]
     cable = definition.cables[0]
     wire = cable.wires[0]
     hrefs = list(sdn.get_hinstances(wire))
     self.assertTrue(len(hrefs) == 1)
Exemple #7
0
 def test_from_outerpin(self):
     library = self.netlist.libraries[1]
     definition = library.definitions[0]
     instance = definition.children[0]
     outerpin = next(iter(instance.pins))
     hrefs = list(sdn.get_hinstances(outerpin))
     self.assertTrue(len(hrefs) == 1)
Exemple #8
0
    def test_pin_and_wire_chain(self):
        netlist = sdn.Netlist()
        netlist.name = "MY_NETLIST"
        library = netlist.create_library()
        definition = library.create_definition()
        port = definition.create_port()
        pin = port.create_pin()
        cable = definition.create_cable()
        wire = cable.create_wire()
        instance = sdn.Instance()
        instance.name = "MY_INST"
        instance.reference = definition
        netlist.top_instance = instance

        netlist_lookup = next(wire.get_netlists(), None)
        self.assertIs(netlist, netlist_lookup)

        cable.remove_wire(wire)
        netlist_lookup = next(sdn.get_netlists(wire), None)
        self.assertIsNone(netlist_lookup)

        definition.remove_cable(cable)
        netlist_lookup = next(sdn.get_netlists(cable), None)
        self.assertIsNone(netlist_lookup)

        outer_pin = instance.pins[pin]
        netlist_lookup = next(sdn.get_netlists(outer_pin), None)
        self.assertIs(netlist, netlist_lookup)

        port.remove_pin(pin)
        netlist_lookup = next(sdn.get_netlists(pin), None)
        self.assertIsNone(netlist_lookup)

        self.assertIsNone(outer_pin.inner_pin)
        self.assertIsNone(outer_pin.instance)

        top_instance_href = next(sdn.get_hinstances(netlist.top_instance))
        netlist_lookup = next(sdn.get_netlists(top_instance_href))
        self.assertIs(netlist, netlist_lookup)

        definition.remove_port(port)
        netlist_lookup = next(sdn.get_netlists(port), None)
        self.assertIsNone(netlist_lookup)

        instance.reference = None
        netlist_lookup = next(sdn.get_netlists(instance), None)
        self.assertIsNone(netlist_lookup)

        library.remove_definition(definition)
        netlist_lookup = next(sdn.get_netlists(definition), None)
        self.assertIsNone(netlist_lookup)

        netlist.remove_library(library)
        netlist_lookup = next(sdn.get_netlists(library), None)
        self.assertIsNone(netlist_lookup)

        netlist_lookup = next(sdn.get_netlists(netlist, "MY_NETLIST"))
        self.assertTrue(netlist is netlist_lookup)
Exemple #9
0
    def test_through_hierarchy(self):
        netlist = sdn.Netlist()
        library = netlist.create_library()
        definition = library.create_definition()
        instance = sdn.Instance()
        instance.reference = definition
        netlist.top_instance = instance

        middle_inst = definition.create_child()
        middle_def = library.create_definition()
        middle_inst.reference = middle_def

        leaf_inst = middle_def.create_child()
        leaf_def = library.create_definition()
        leaf_inst.reference = leaf_def

        hrefs = list(sdn.get_hinstances(leaf_inst))
        self.assertTrue(len(hrefs) == 1)
Exemple #10
0
 def test_recursive_memory_use(self):
     netlist = sdn.load_example_netlist_by_name('leon3mp_hierarchical')
     hrefs = list(sdn.get_hinstances(netlist))
     self.assertTrue(len(hrefs) > 0)
Exemple #11
0
 def test_from_library(self):
     hrefs = list(sdn.get_hinstances(self.netlist.libraries[0]))
     self.assertTrue(len(hrefs) == 102)
Exemple #12
0
 def test_href(self):
     href = next(sdn.get_hinstances(self.netlist.top_instance))
     wires = list(sdn.get_wires(href, recursive=True))
     self.assertEqual(len(wires), 6)
 def test_from_href_of_instance(self):
     href = next(sdn.get_hinstances(self.netlist.top_instance))
     hrefs = list(sdn.get_hports(href))
     self.assertTrue(len(hrefs) == 12 and all(isinstance(x.item, sdn.Port) for x in hrefs))
Exemple #14
0
 def test_get_hinstance_of_invalid_reference(self):
     from spydrnet.util.hierarchical_reference import HRef
     invalid_href = HRef.from_parent_and_item(None, None)
     hrefs = list(sdn.get_hinstances(invalid_href))
     self.assertTrue(len(hrefs) == 0)
 def test_get_definition_from_href(self):
     href = next(sdn.get_hinstances(self.netlist.top_instance))
     definition_query = list(sdn.get_definitions(href))
     self.assertTrue(
         len(definition_query) == 1
         and definition_query[0] == self.netlist.top_instance.reference)
Exemple #16
0
 def test_of_bad_instance(self):
     hrefs = list(sdn.get_hinstances(sdn.Instance()))
     self.assertTrue(len(hrefs) == 0)
Exemple #17
0
 def test_get_library_from_href(self):
     href = next(sdn.get_hinstances(self.netlist.top_instance))
     library_query = list(sdn.get_libraries(href))
     self.assertTrue(
         len(library_query) == 1
         and library_query[0] == self.netlist.libraries[1])
 def test_from_href_of_instance(self):
     top_href = next(sdn.get_hinstances(self.netlist.top_instance))
     instance1 = next(sdn.get_instances(top_href))
     self.assertIs(self.top_instance, instance1)
 def test_from_href_of_instance(self):
     href = next(sdn.get_hinstances(self.netlist.top_instance))
     hrefs = list(sdn.get_hwires(href))
     self.assertTrue(len(hrefs) == 114)
Exemple #20
0
 def test_regex_search(self):
     hrefs = list(
         sdn.get_hinstances(self.netlist, '.*FSM_onehot.*', is_re=True))
     self.assertTrue(len(hrefs) == 24)