コード例 #1
0
ファイル: test_composer_unit.py プロジェクト: byuccl/spydrnet
    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()
コード例 #2
0
ファイル: test_composer_unit.py プロジェクト: byuccl/spydrnet
 def test_write_name(self):
     composer = self.initialize_tests()
     o = sdn.Cable()  #Type of this shouldn't really matter
     valid_names = ["basic_name", "\\escaped ", "\\fads#@%!$!@#%$[0:4320] "]
     for n in valid_names:
         o.name = n
         composer._write_name(o)
         assert composer.file.compare(n)
         composer.file.clear()
コード例 #3
0
ファイル: test_composer_unit.py プロジェクト: byuccl/spydrnet
    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()
コード例 #4
0
ファイル: test_composer_unit.py プロジェクト: byuccl/spydrnet
    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()
コード例 #5
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
コード例 #6
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)
コード例 #7
0
ファイル: test_composer_unit.py プロジェクト: byuccl/spydrnet
    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()
コード例 #8
0
ファイル: test_cable.py プロジェクト: byuccl/spydrnet
 def setUp(self) -> None:
     self.cable = sdn.Cable()
コード例 #9
0
ファイル: test_cable.py プロジェクト: byuccl/spydrnet
 def test_scalar_false(self):
     cable = sdn.Cable()
     cable.create_wire()
     cable.create_wire()
     self.assertTrue('is_scalar: False;' in cable.__str__())
コード例 #10
0
    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)
コード例 #11
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)
コード例 #12
0
 def test_add_cable(self):
     cable = sdn.Cable()
     self.definition.add_cable(cable, position=0)
     self.assertTrue(cable in self.definition.cables)
     self.assertEqual(cable.definition, self.definition)
     self.assertEqual(self.definition.cables.count(cable), 1)
コード例 #13
0
 def test_remove_cables_from_outside_definition(self):
     cable = sdn.Cable()
     self.definition.remove_cables_from({cable})
コード例 #14
0
ファイル: test_wire.py プロジェクト: byuccl/spydrnet
 def test_print_cable_name(self):
     cable = sdn.Cable('cable')
     wire = cable.create_wire()
     self.assertTrue("Contained by Cable.name 'cable'" in wire.__str__())
コード例 #15
0
ファイル: test_composer_unit.py プロジェクト: byuccl/spydrnet
 def test_write_invalid_name(self):
     composer = self.initialize_tests()
     o = sdn.Cable()
     o.name = "\\escaped_no_space"
     composer._write_name(o)
コード例 #16
0
ファイル: test_composer_unit.py プロジェクト: byuccl/spydrnet
 def test_write_none_name(self):
     composer = self.initialize_tests()
     o = sdn.Cable()
     composer._write_name(o)