Beispiel #1
0
    def test_write_brackets_defining(self):

        composer = self.initialize_tests()

        def initialize_bundle(bundle, offset, width):
            if isinstance(bundle, sdn.Port):
                bundle.create_pins(width)
            else:  #it's a cable
                bundle.create_wires(width)
            bundle.is_downto = True
            bundle.lower_index = offset
            return bundle

        b1 = initialize_bundle(sdn.Port(), 0, 1)
        b2 = initialize_bundle(sdn.Cable(), 4, 1)
        b3 = initialize_bundle(sdn.Port(), 0, 4)
        b4 = initialize_bundle(sdn.Cable(), 4, 4)

        composer._write_brackets_defining(b1)
        assert composer.file.compare("")
        composer.file.clear()

        composer._write_brackets_defining(b2)
        assert composer.file.compare("[4:4]")
        composer.file.clear()

        composer._write_brackets_defining(b3)
        assert composer.file.compare("[3:0]")
        composer.file.clear()

        composer._write_brackets_defining(b4)
        assert composer.file.compare("[7:4]")
        composer.file.clear()
Beispiel #2
0
    def test_post_assignment_pin_and_port_creation(self):
        definition = sdn.Definition()
        self.instance.reference = definition
        port = definition.create_port()
        pin1 = port.create_pin()
        pin2 = port.create_pin()
        port2 = sdn.Port()
        pin3 = port2.create_pin()
        definition.add_port(port2)
        pin4 = port2.create_pin()

        outer_pin1 = self.instance.pins[pin1]
        outer_pin2 = self.instance.pins[pin2]
        outer_pin3 = self.instance.pins[pin3]
        outer_pin4 = self.instance.pins[pin4]

        wire = sdn.Wire()
        wire.connect_pin(outer_pin1)
        wire.connect_pin(outer_pin2)
        wire.connect_pin(outer_pin3)
        wire.connect_pin(outer_pin4)
        inner_pins = [pin1, pin2, pin3, pin4]
        outer_pins = [outer_pin1, outer_pin2, outer_pin3, outer_pin4]
        for outer_pin, inner_pin in zip(outer_pins, inner_pins):
            self.assertEqual(outer_pin.wire, wire)
            self.assertTrue(outer_pin in wire.pins)
            self.assertEqual(outer_pin.instance, self.instance)
            self.assertEqual(outer_pin.inner_pin, inner_pin)
            self.assertTrue(outer_pin in self.instance.pins)
            self.assertTrue(inner_pin in self.instance.pins)
Beispiel #3
0
 def test_constructor(self):
     self.assertIsInstance(self.port, Bundle)
     self.assertTrue(self.port,
                     "Constructor returns None type or empty collection.")
     port2 = sdn.Port()
     self.assertNotEqual(self.port, port2,
                         "Unique objects are considered equal.")
Beispiel #4
0
 def test_get_port_inner_pin(self):
     port = sdn.Port()
     pin = port.create_pin()
     search = next(sdn.get_ports(pin))
     self.assertEqual(port, search)
     port.remove_pin(pin)
     search = next(sdn.get_ports(pin), None)
     self.assertIsNone(search)
Beispiel #5
0
    def test_write_brackets_multi_bit_offset(self):
        composer = self.initialize_tests()

        port = sdn.Port()
        cable = sdn.Cable()

        cable_name = "my_cable"
        port_name = "my_port"

        port.name = port_name
        cable.name = cable_name

        port.create_pins(4)  #input [3:0] my_input;
        port.is_downto = True
        port.lower_index = 4
        cable.create_wires(4)  #wire [3:0] my_wire;
        cable.is_downto = True
        cable.lower_index = 4

        composer._write_brackets(port, None, None)
        assert composer.file.compare("")
        composer.file.clear()
        composer._write_brackets(port, 5, None)
        assert composer.file.compare("[5]")
        composer.file.clear()
        composer._write_brackets(port, None, 6)
        assert composer.file.compare("[6]")
        composer.file.clear()
        composer._write_brackets(port, 6, 6)
        assert composer.file.compare("[6]")
        composer.file.clear()
        composer._write_brackets(port, 4, 7)
        assert composer.file.compare("")
        composer.file.clear()
        composer._write_brackets(port, 5, 6)
        assert composer.file.compare("[6:5]")
        composer.file.clear()

        composer._write_brackets(cable, None, None)
        assert composer.file.compare("")
        composer.file.clear()
        composer._write_brackets(cable, 5, None)
        assert composer.file.compare("[5]")
        composer.file.clear()
        composer._write_brackets(cable, None, 6)
        assert composer.file.compare("[6]")
        composer.file.clear()
        composer._write_brackets(cable, 6, 6)
        assert composer.file.compare("[6]")
        composer.file.clear()
        composer._write_brackets(cable, 4, 7)
        assert composer.file.compare("")
        composer.file.clear()
        composer._write_brackets(cable, 5, 6)
        assert composer.file.compare("[6:5]")
        composer.file.clear()
Beispiel #6
0
    def test_write_brackets_multi_bit(self):
        composer = self.initialize_tests()

        port = sdn.Port()
        cable = sdn.Cable()

        cable_name = "my_cable"
        port_name = "my_port"

        port.name = port_name
        cable.name = cable_name

        port.create_pins(4)  #input [3:0] my_input;
        port.is_downto = True
        cable.create_wires(4)  #wire [3:0] my_wire;
        cable.is_downto = True

        composer._write_brackets(port, None, None)
        assert composer.file.compare("")
        composer.file.clear()
        composer._write_brackets(port, 1, None)
        assert composer.file.compare("[1]")
        composer.file.clear()
        composer._write_brackets(port, None, 2)
        assert composer.file.compare("[2]")
        composer.file.clear()
        composer._write_brackets(port, 2, 2)
        assert composer.file.compare("[2]")
        composer.file.clear()
        composer._write_brackets(port, 0, 3)
        assert composer.file.compare("")
        composer.file.clear()
        composer._write_brackets(port, 1, 2)
        assert composer.file.compare("[2:1]")
        composer.file.clear()

        composer._write_brackets(cable, None, None)
        assert composer.file.compare("")
        composer.file.clear()
        composer._write_brackets(cable, 1, None)
        assert composer.file.compare("[1]")
        composer.file.clear()
        composer._write_brackets(cable, None, 2)
        assert composer.file.compare("[2]")
        composer.file.clear()
        composer._write_brackets(cable, 2, 2)
        assert composer.file.compare("[2]")
        composer.file.clear()
        composer._write_brackets(cable, 0, 3)
        assert composer.file.compare("")
        composer.file.clear()
        composer._write_brackets(cable, 1, 2)
        assert composer.file.compare("[2:1]")
        composer.file.clear()
Beispiel #7
0
    def test_write_brackets_single_bit_offset(self):
        #def _write_brackets(self, bundle, low_index, high_index):
        composer = self.initialize_tests()

        port = sdn.Port()
        cable = sdn.Cable()

        cable_name = "my_cable"
        port_name = "my_port"

        port.name = port_name
        cable.name = cable_name

        port.create_pin()
        cable.create_wire()

        port.lower_index = 4
        cable.lower_index = 4

        composer._write_brackets(port, None, None)
        assert composer.file.compare("")
        composer.file.clear()
        composer._write_brackets(port, 4, None)
        assert composer.file.compare("")
        composer.file.clear()
        composer._write_brackets(port, None, 4)
        assert composer.file.compare("")
        composer.file.clear()
        composer._write_brackets(port, 4, 4)
        assert composer.file.compare("")
        composer.file.clear()

        composer._write_brackets(cable, None, None)
        assert composer.file.compare("")
        composer.file.clear()
        composer._write_brackets(cable, 4, None)
        assert composer.file.compare("")
        composer.file.clear()
        composer._write_brackets(cable, None, 4)
        assert composer.file.compare("")
        composer.file.clear()
        composer._write_brackets(cable, 4, 4)
        assert composer.file.compare("")
        composer.file.clear()
Beispiel #8
0
class TestPrint(unittest.TestCase):

    netlist = sdn.Netlist(name='netlist')
    cable = sdn.Cable(name='cable', is_downto=False)
    instance = sdn.Instance()
    print(netlist)
    netlist.top_instance = instance
    print(netlist)
    print(cable)
    print(instance)
    library = netlist.create_library(name='lib')
    print(library)
    definition = sdn.Definition()
    print(definition)
    pin = sdn.Pin()
    cable = sdn.Cable()
    print(cable)
    wire = cable.create_wire()
    wire.connect_pin(pin)
    print(pin)
    print(wire)
    port = sdn.Port()
    port.direction = sdn.IN
    print(port)
    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)
Beispiel #10
0
import spydrnet as sdn

netlist = sdn.Netlist(name='netlist')
cable = sdn.Cable(name='cable')
instance = sdn.Instance()
print(netlist)
netlist.top_instance = instance
print(netlist)
print(cable)
print(instance)
library = netlist.create_library(name='lib')
print(library)
definition = sdn.Definition()
print(definition)
pin = sdn.Pin()
cable = sdn.Cable()
print(cable)
wire = cable.create_wire()
wire.connect_pin(pin)
print(pin)
print(wire)
port = sdn.Port()
port.direction = sdn.IN
print(port)
Beispiel #11
0
 def test_remove_ports_from_outside_definition(self):
     port = sdn.Port()
     self.definition.remove_ports_from((port, ))
Beispiel #12
0
 def test_add_port(self):
     port = sdn.Port()
     self.definition.add_port(port, position=0)
     self.assertTrue(port in self.definition.ports)
     self.assertEqual(port.definition, self.definition)
     self.assertEqual(self.definition.ports.count(port), 1)
Beispiel #13
0
 def setUp(self) -> None:
     self.port = sdn.Port()
Beispiel #14
0
 def test_get_port_reflection(self):
     port = sdn.Port()
     port.name = "MY_PORT"
     search = next(sdn.get_ports(port, "MY_PORT"))
     self.assertEqual(port, search)
Beispiel #15
0
 def test_direction_2(self):
     port = sdn.Port(direction=sdn.IN)
     self.assertTrue(port.direction is sdn.IN)