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))
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)
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)
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)