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()
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)
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.")
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)
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()
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()
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()
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)
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)
def test_remove_ports_from_outside_definition(self): port = sdn.Port() self.definition.remove_ports_from((port, ))
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)
def setUp(self) -> None: self.port = sdn.Port()
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)
def test_direction_2(self): port = sdn.Port(direction=sdn.IN) self.assertTrue(port.direction is sdn.IN)