Exemple #1
0
 def test_hash(self):
     outer_pin = sdn.OuterPin()
     self.assertEqual(hash(outer_pin), hash(self.pin))
     inner_pin = sdn.InnerPin()
     instance = sdn.Instance()
     outer_pin1 = sdn.OuterPin.from_instance_and_inner_pin(
         instance, inner_pin)
     outer_pin2 = sdn.OuterPin.from_instance_and_inner_pin(
         instance, inner_pin)
     self.assertEqual(hash(outer_pin1), hash(outer_pin2))
Exemple #2
0
 def test_equal(self):
     outer_pin = sdn.OuterPin()
     self.assertEqual(outer_pin, self.pin)
     inner_pin = sdn.InnerPin()
     instance = sdn.Instance()
     outer_pin1 = sdn.OuterPin.from_instance_and_inner_pin(
         instance, inner_pin)
     outer_pin2 = sdn.OuterPin.from_instance_and_inner_pin(
         instance, inner_pin)
     self.assertEqual(outer_pin1, outer_pin2)
     self.assertNotEqual(self.pin, outer_pin1)
     self.assertNotEqual(self.pin, None)
Exemple #3
0
    def test_multi_bit_add_out_of_order(self):
        definition = sdn.Definition()
        cable0 = sdn.Cable()
        cable0.name = "net[0]"
        cable0["EDIF.identifier"] = "net_0_"
        cable1 = sdn.Cable()
        cable1.name = "net[1]"
        cable1["EDIF.identifier"] = "net_1_"
        cable2 = sdn.Cable()
        cable2.name = "net[2]"
        cable2["EDIF.identifier"] = "net_2_"

        cable0.create_wire()
        cable1.create_wire()
        cable2.create_wire()

        p0 = sdn.InnerPin()
        p1 = sdn.InnerPin()
        p2 = sdn.InnerPin()

        cable1.wires[0].connect_pin(p0)
        cable1.wires[0].connect_pin(p1)
        cable1.wires[0].connect_pin(p2)

        ep = EdifParser()
        ep.multibit_add_cable(definition, cable0)
        ep.multibit_add_cable(definition, cable2)
        ep.multibit_add_cable(definition, cable1)

        assert len(definition.cables) == 1
        assert len(definition.cables[0].wires) == 3
        assert len(definition.cables[0].wires[0].pins) == 0
        assert len(definition.cables[0].wires[1].pins) == 3
        assert len(definition.cables[0].wires[2].pins) == 0
        assert p0 in definition.cables[0].wires[1].pins
        assert p1 in definition.cables[0].wires[1].pins
        assert p2 in definition.cables[0].wires[1].pins
 def setUp(self) -> None:
     self.pin = sdn.InnerPin()
 def test_constructor(self):
     self.assertIsInstance(self.pin, Pin)
     self.assertTrue(self.pin)
     pin2 = sdn.InnerPin()
     self.assertNotEqual(self.pin, pin2)
    def test_href_valid(self):
        instance = sdn.Instance()
        href = HRef.from_parent_and_item(None, instance)
        self.assertFalse(href.is_valid)

        definition = sdn.Definition()
        instance.reference = definition
        self.assertFalse(href.is_valid)

        library = sdn.Library()
        library.add_definition(definition)
        self.assertFalse(href.is_valid)

        netlist = sdn.Netlist()
        netlist.add_library(library)
        self.assertFalse(href.is_valid)

        netlist.top_instance = instance
        self.assertTrue(href.is_valid)

        cable = sdn.Cable()
        wire = sdn.Wire()

        href = HRef.from_sequence([instance, cable, wire])
        self.assertFalse(href.is_valid)

        cable.add_wire(wire)
        self.assertFalse(href.is_valid)

        definition.add_cable(cable)
        self.assertTrue(href.is_valid)

        instance.reference = None
        self.assertFalse(href.is_valid)

        port = sdn.Port()
        pin  = sdn.InnerPin()

        href = HRef.from_sequence([instance, port, pin])
        self.assertFalse(href.is_valid)

        port.add_pin(pin)
        self.assertFalse(href.is_valid)

        definition.add_port(port)
        self.assertFalse(href.is_valid)

        instance.reference = definition
        self.assertTrue(href.is_valid)

        higher_definition = library.create_definition()
        higher_definition.add_child(instance)
        self.assertTrue(href.is_valid)

        higher_instance = sdn.Instance()
        higher_instance.reference = higher_definition
        netlist.top_instance = higher_instance
        self.assertFalse(href.is_valid)

        href = HRef.from_sequence([higher_instance, instance, cable, wire])
        self.assertTrue(href.is_valid)
        higher_instance.reference = None
        self.assertFalse(href.is_valid)
        higher_definition.remove_child(instance)
        self.assertFalse(href.is_valid)

        definition.remove_cable(cable)
        self.assertFalse(href.is_valid)

        cable.remove_wire(wire)
        self.assertFalse(href.is_valid)

        cable.add_wire(wire)
        href = HRef.from_sequence([cable, wire])
        self.assertFalse(href.is_valid)

        cable.remove_wire(wire)
        new_cable = sdn.Cable()
        new_cable.add_wire(wire)
        self.assertFalse(href.is_valid)

        href = HRef.from_parent_and_item(None, wire)
        self.assertFalse(href.is_valid)

        port.remove_pin(pin)
        new_port = sdn.Port()
        new_port.add_pin(pin)
        href = HRef.from_sequence([port, pin])
        self.assertFalse(href.is_valid)

        href = HRef.from_parent_and_item(None, pin)
        self.assertFalse(href.is_valid)

        href = HRef.from_parent_and_item(None, definition)
        self.assertFalse(href.is_valid)
Exemple #7
0
 def test_disconnect_inner_pin_from_outside_wire(self):
     inner_pin = sdn.InnerPin()
     self.wire.disconnect_pins_from([inner_pin])
 def test_remove_pins_outside_port(self):
     pin = sdn.InnerPin()
     self.port.remove_pins_from((pin, ))
 def test_add_pin(self):
     pin = sdn.InnerPin()
     self.port.add_pin(pin, position=0)
     self.assertTrue(pin in self.port.pins)
     self.assertEqual(pin.port, self.port)
     self.assertEqual(self.port.pins.count(pin), 1)