build.{plat,res}: post-lib.io cleanup.
This commit is contained in:
parent
7fe62f810b
commit
cf534489a2
3 changed files with 179 additions and 272 deletions
|
|
@ -63,12 +63,15 @@ class ResourceManagerTestCase(FHDLTestCase):
|
|||
self.assertEqual(user_led.width, 1)
|
||||
self.assertEqual(user_led.dir, "o")
|
||||
|
||||
ports = list(self.cm.iter_ports())
|
||||
self.assertEqual(len(ports), 1)
|
||||
pins = list(self.cm.iter_pins())
|
||||
(pin, port, buffer), = pins
|
||||
|
||||
self.assertEqual(list(self.cm.iter_port_constraints()), [
|
||||
("user_led_0__io", ["A0"], {})
|
||||
])
|
||||
self.assertIs(pin, user_led)
|
||||
self.assertEqual(port.io.name, "user_led_0__io")
|
||||
self.assertEqual(port.io.metadata[0].name, "A0")
|
||||
self.assertEqual(port.io.metadata[0].attrs, {})
|
||||
self.assertEqual(port.direction, Direction.Output)
|
||||
self.assertEqual(port.invert, (False,))
|
||||
|
||||
def test_request_with_dir(self):
|
||||
i2c = self.cm.request("i2c", 0, dir={"sda": "o"})
|
||||
|
|
@ -79,24 +82,13 @@ class ResourceManagerTestCase(FHDLTestCase):
|
|||
i2c = self.cm.request("i2c", 0)
|
||||
self.assertEqual(i2c.sda.dir, "io")
|
||||
|
||||
ports = list(self.cm.iter_ports())
|
||||
self.assertEqual(len(ports), 2)
|
||||
scl, sda = ports
|
||||
self.assertEqual(ports[1].name, "i2c_0__sda__io")
|
||||
self.assertEqual(ports[1].width, 1)
|
||||
|
||||
scl_info, sda_info = self.cm.iter_single_ended_pins()
|
||||
self.assertIs(scl_info[0], i2c.scl)
|
||||
self.assertIs(scl_info[1].io, scl)
|
||||
self.assertEqual(scl_info[2], {})
|
||||
self.assertEqual(scl_info[3], False)
|
||||
self.assertIs(sda_info[0], i2c.sda)
|
||||
self.assertIs(sda_info[1].io, sda)
|
||||
|
||||
self.assertEqual(list(self.cm.iter_port_constraints()), [
|
||||
("i2c_0__scl__io", ["N10"], {}),
|
||||
("i2c_0__sda__io", ["N11"], {})
|
||||
])
|
||||
((scl_pin, scl_port, _), (sda_pin, sda_port, _)) = self.cm.iter_pins()
|
||||
self.assertIs(scl_pin, i2c.scl)
|
||||
self.assertIs(sda_pin, i2c.sda)
|
||||
self.assertEqual(scl_port.io.name, "i2c_0__scl__io")
|
||||
self.assertEqual(scl_port.io.metadata[0].name, "N10")
|
||||
self.assertEqual(sda_port.io.name, "i2c_0__sda__io")
|
||||
self.assertEqual(sda_port.io.metadata[0].name, "N11")
|
||||
|
||||
def test_request_diffpairs(self):
|
||||
clk100 = self.cm.request("clk100", 0)
|
||||
|
|
@ -104,25 +96,14 @@ class ResourceManagerTestCase(FHDLTestCase):
|
|||
self.assertEqual(clk100.dir, "i")
|
||||
self.assertEqual(clk100.width, 1)
|
||||
|
||||
ports = list(self.cm.iter_ports())
|
||||
self.assertEqual(len(ports), 2)
|
||||
p, n = ports
|
||||
self.assertEqual(p.name, "clk100_0__p")
|
||||
self.assertEqual(p.width, clk100.width)
|
||||
self.assertEqual(n.name, "clk100_0__n")
|
||||
self.assertEqual(n.width, clk100.width)
|
||||
|
||||
clk100_info, = self.cm.iter_differential_pins()
|
||||
self.assertIs(clk100_info[0], clk100)
|
||||
self.assertIs(clk100_info[1].p, p)
|
||||
self.assertIs(clk100_info[1].n, n)
|
||||
self.assertEqual(clk100_info[2], {})
|
||||
self.assertEqual(clk100_info[3], False)
|
||||
|
||||
self.assertEqual(list(self.cm.iter_port_constraints()), [
|
||||
("clk100_0__p", ["H1"], {}),
|
||||
("clk100_0__n", ["H2"], {}),
|
||||
])
|
||||
(clk100_pin, clk100_port, _), = self.cm.iter_pins()
|
||||
self.assertIs(clk100_pin, clk100)
|
||||
self.assertEqual(clk100_port.p.name, "clk100_0__p")
|
||||
self.assertEqual(clk100_port.p.width, clk100.width)
|
||||
self.assertEqual(clk100_port.n.name, "clk100_0__n")
|
||||
self.assertEqual(clk100_port.n.width, clk100.width)
|
||||
self.assertEqual(clk100_port.p.metadata[0].name, "H1")
|
||||
self.assertEqual(clk100_port.n.metadata[0].name, "H2")
|
||||
|
||||
def test_request_inverted(self):
|
||||
new_resources = [
|
||||
|
|
@ -133,39 +114,27 @@ class ResourceManagerTestCase(FHDLTestCase):
|
|||
|
||||
cs = self.cm.request("cs")
|
||||
clk = self.cm.request("clk")
|
||||
cs_io, clk_p, clk_n = self.cm.iter_ports()
|
||||
(
|
||||
(cs_pin, cs_port, _),
|
||||
(clk_pin, clk_port, _),
|
||||
) = self.cm.iter_pins()
|
||||
|
||||
cs_info, = self.cm.iter_single_ended_pins()
|
||||
self.assertIs(cs_info[0], cs)
|
||||
self.assertIs(cs_info[1].io, cs_io)
|
||||
self.assertEqual(cs_info[2], {})
|
||||
self.assertEqual(cs_info[3], True)
|
||||
|
||||
clk_info, = self.cm.iter_differential_pins()
|
||||
self.assertIs(clk_info[0], clk)
|
||||
self.assertIs(clk_info[1].p, clk_p)
|
||||
self.assertIs(clk_info[1].n, clk_n)
|
||||
self.assertEqual(clk_info[2], {})
|
||||
self.assertEqual(clk_info[3], True)
|
||||
self.assertIs(cs_pin, cs)
|
||||
self.assertEqual(cs_port.invert, (True,))
|
||||
self.assertIs(clk_pin, clk)
|
||||
self.assertEqual(clk_port.invert, (True,))
|
||||
|
||||
def test_request_raw(self):
|
||||
clk50 = self.cm.request("clk50", 0, dir="-")
|
||||
self.assertIsInstance(clk50, SingleEndedPort)
|
||||
self.assertIsInstance(clk50.io, IOPort)
|
||||
|
||||
ports = list(self.cm.iter_ports())
|
||||
self.assertEqual(len(ports), 1)
|
||||
self.assertIs(ports[0], clk50.io)
|
||||
|
||||
def test_request_raw_diffpairs(self):
|
||||
clk100 = self.cm.request("clk100", 0, dir="-")
|
||||
self.assertIsInstance(clk100, DifferentialPort)
|
||||
self.assertIsInstance(clk100.p, IOPort)
|
||||
self.assertIsInstance(clk100.n, IOPort)
|
||||
|
||||
ports = list(self.cm.iter_ports())
|
||||
self.assertEqual(len(ports), 2)
|
||||
self.assertIs(ports[0], clk100.p)
|
||||
self.assertIs(ports[1], clk100.n)
|
||||
|
||||
def test_request_via_connector(self):
|
||||
self.cm.add_resources([
|
||||
Resource("spi", 0,
|
||||
|
|
@ -176,12 +145,20 @@ class ResourceManagerTestCase(FHDLTestCase):
|
|||
)
|
||||
])
|
||||
spi0 = self.cm.request("spi", 0)
|
||||
self.assertEqual(list(self.cm.iter_port_constraints()), [
|
||||
("spi_0__ss__io", ["B0"], {}),
|
||||
("spi_0__clk__io", ["B1"], {}),
|
||||
("spi_0__miso__io", ["B2"], {}),
|
||||
("spi_0__mosi__io", ["B3"], {}),
|
||||
])
|
||||
(
|
||||
(ss_pin, ss_port, _),
|
||||
(clk_pin, clk_port, _),
|
||||
(miso_pin, miso_port, _),
|
||||
(mosi_pin, mosi_port, _),
|
||||
) = self.cm.iter_pins()
|
||||
self.assertIs(ss_pin, spi0.ss)
|
||||
self.assertIs(clk_pin, spi0.clk)
|
||||
self.assertIs(miso_pin, spi0.miso)
|
||||
self.assertIs(mosi_pin, spi0.mosi)
|
||||
self.assertEqual(ss_port.io.metadata[0].name, "B0")
|
||||
self.assertEqual(clk_port.io.metadata[0].name, "B1")
|
||||
self.assertEqual(miso_port.io.metadata[0].name, "B2")
|
||||
self.assertEqual(mosi_port.io.metadata[0].name, "B3")
|
||||
|
||||
def test_request_via_nested_connector(self):
|
||||
new_connectors = [
|
||||
|
|
@ -197,20 +174,31 @@ class ResourceManagerTestCase(FHDLTestCase):
|
|||
)
|
||||
])
|
||||
spi0 = self.cm.request("spi", 0)
|
||||
self.assertEqual(list(self.cm.iter_port_constraints()), [
|
||||
("spi_0__ss__io", ["B0"], {}),
|
||||
("spi_0__clk__io", ["B1"], {}),
|
||||
("spi_0__miso__io", ["B2"], {}),
|
||||
("spi_0__mosi__io", ["B3"], {}),
|
||||
])
|
||||
(
|
||||
(ss_pin, ss_port, _),
|
||||
(clk_pin, clk_port, _),
|
||||
(miso_pin, miso_port, _),
|
||||
(mosi_pin, mosi_port, _),
|
||||
) = self.cm.iter_pins()
|
||||
self.assertIs(ss_pin, spi0.ss)
|
||||
self.assertIs(clk_pin, spi0.clk)
|
||||
self.assertIs(miso_pin, spi0.miso)
|
||||
self.assertIs(mosi_pin, spi0.mosi)
|
||||
self.assertEqual(ss_port.io.metadata[0].name, "B0")
|
||||
self.assertEqual(clk_port.io.metadata[0].name, "B1")
|
||||
self.assertEqual(miso_port.io.metadata[0].name, "B2")
|
||||
self.assertEqual(mosi_port.io.metadata[0].name, "B3")
|
||||
|
||||
def test_request_clock(self):
|
||||
clk100 = self.cm.request("clk100", 0)
|
||||
clk50 = self.cm.request("clk50", 0, dir="i")
|
||||
clk100_port_p, clk100_port_n, clk50_port = self.cm.iter_ports()
|
||||
(
|
||||
(clk100_pin, clk100_port, _),
|
||||
(clk50_pin, clk50_port, _),
|
||||
) = self.cm.iter_pins()
|
||||
self.assertEqual(list(self.cm.iter_clock_constraints()), [
|
||||
(clk100.i, clk100_port_p, 100e6),
|
||||
(clk50.i, clk50_port, 50e6)
|
||||
(clk100.i, clk100_port.p, 100e6),
|
||||
(clk50.i, clk50_port.io, 50e6)
|
||||
])
|
||||
|
||||
def test_add_clock(self):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue