soc/cores/hyperbus: Avoid dq_oe condition to generate dq_o (was only useful for sim but now avoided).
This commit is contained in:
parent
298a004f08
commit
60f83b71fa
|
@ -160,7 +160,6 @@ class HyperRAM(LiteXModule):
|
||||||
).Else(
|
).Else(
|
||||||
sr_next[:dw].eq(dq_i),
|
sr_next[:dw].eq(dq_i),
|
||||||
sr_next[dw:].eq(sr),
|
sr_next[dw:].eq(sr),
|
||||||
|
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
self.sync += If(clk_phase[0] == 0, sr.eq(sr_next)) # Shift on 0°/180° (and sampled on 90°/270°).
|
self.sync += If(clk_phase[0] == 0, sr.eq(sr_next)) # Shift on 0°/180° (and sampled on 90°/270°).
|
||||||
|
@ -168,7 +167,6 @@ class HyperRAM(LiteXModule):
|
||||||
# Data Shift-Out Register ------------------------------------------------------------------
|
# Data Shift-Out Register ------------------------------------------------------------------
|
||||||
self.comb += [
|
self.comb += [
|
||||||
bus.dat_r.eq(sr_next),
|
bus.dat_r.eq(sr_next),
|
||||||
If(dq_oe,
|
|
||||||
# Command/Address: 8-bit.
|
# Command/Address: 8-bit.
|
||||||
If(ca_oe,
|
If(ca_oe,
|
||||||
dq_o.eq(sr[-8:]),
|
dq_o.eq(sr[-8:]),
|
||||||
|
@ -176,7 +174,6 @@ class HyperRAM(LiteXModule):
|
||||||
).Else(
|
).Else(
|
||||||
dq_o.eq(sr[-dw:]),
|
dq_o.eq(sr[-dw:]),
|
||||||
)
|
)
|
||||||
)
|
|
||||||
]
|
]
|
||||||
|
|
||||||
# Register Access/Buffer -------------------------------------------------------------------
|
# Register Access/Buffer -------------------------------------------------------------------
|
||||||
|
|
|
@ -49,6 +49,7 @@ class TestHyperBus(unittest.TestCase):
|
||||||
self.assertEqual(c2bool(clk[i]), (yield dut.pads.clk))
|
self.assertEqual(c2bool(clk[i]), (yield dut.pads.clk))
|
||||||
self.assertEqual(c2bool(cs_n[i]), (yield dut.pads.cs_n))
|
self.assertEqual(c2bool(cs_n[i]), (yield dut.pads.cs_n))
|
||||||
self.assertEqual(c2bool(dq_oe[i]), (yield dut.pads.dq.oe))
|
self.assertEqual(c2bool(dq_oe[i]), (yield dut.pads.dq.oe))
|
||||||
|
if (yield dut.pads.dq.oe):
|
||||||
self.assertEqual(int(dq_o[2*(i//2):2*(i//2)+2], 16), (yield dut.pads.dq.o))
|
self.assertEqual(int(dq_o[2*(i//2):2*(i//2)+2], 16), (yield dut.pads.dq.o))
|
||||||
self.assertEqual(c2bool(rwds_oe[i]), (yield dut.pads.rwds.oe))
|
self.assertEqual(c2bool(rwds_oe[i]), (yield dut.pads.rwds.oe))
|
||||||
self.assertEqual(c2bool(rwds_o[i]), (yield dut.pads.rwds.o))
|
self.assertEqual(c2bool(rwds_o[i]), (yield dut.pads.rwds.o))
|
||||||
|
@ -73,6 +74,7 @@ class TestHyperBus(unittest.TestCase):
|
||||||
self.assertEqual(c2bool(clk[i]), (yield dut.pads.clk))
|
self.assertEqual(c2bool(clk[i]), (yield dut.pads.clk))
|
||||||
self.assertEqual(c2bool(cs_n[i]), (yield dut.pads.cs_n))
|
self.assertEqual(c2bool(cs_n[i]), (yield dut.pads.cs_n))
|
||||||
self.assertEqual(c2bool(dq_oe[i]), (yield dut.pads.dq.oe))
|
self.assertEqual(c2bool(dq_oe[i]), (yield dut.pads.dq.oe))
|
||||||
|
if (yield dut.pads.dq.oe):
|
||||||
self.assertEqual(int(dq_o[2*(i//2):2*(i//2)+2], 16), (yield dut.pads.dq.o))
|
self.assertEqual(int(dq_o[2*(i//2):2*(i//2)+2], 16), (yield dut.pads.dq.o))
|
||||||
self.assertEqual(c2bool(rwds_oe[i]), (yield dut.pads.rwds.oe))
|
self.assertEqual(c2bool(rwds_oe[i]), (yield dut.pads.rwds.oe))
|
||||||
self.assertEqual(c2bool(rwds_o[i]), (yield dut.pads.rwds.o))
|
self.assertEqual(c2bool(rwds_o[i]), (yield dut.pads.rwds.o))
|
||||||
|
@ -97,6 +99,7 @@ class TestHyperBus(unittest.TestCase):
|
||||||
self.assertEqual(c2bool(clk[i]), (yield dut.pads.clk))
|
self.assertEqual(c2bool(clk[i]), (yield dut.pads.clk))
|
||||||
self.assertEqual(c2bool(cs_n[i]), (yield dut.pads.cs_n))
|
self.assertEqual(c2bool(cs_n[i]), (yield dut.pads.cs_n))
|
||||||
self.assertEqual(c2bool(dq_oe[i]), (yield dut.pads.dq.oe))
|
self.assertEqual(c2bool(dq_oe[i]), (yield dut.pads.dq.oe))
|
||||||
|
if (yield dut.pads.dq.oe):
|
||||||
self.assertEqual(int(dq_o[2*(i//2):2*(i//2)+2], 16), (yield dut.pads.dq.o))
|
self.assertEqual(int(dq_o[2*(i//2):2*(i//2)+2], 16), (yield dut.pads.dq.o))
|
||||||
self.assertEqual(c2bool(rwds_oe[i]), (yield dut.pads.rwds.oe))
|
self.assertEqual(c2bool(rwds_oe[i]), (yield dut.pads.rwds.oe))
|
||||||
self.assertEqual(c2bool(rwds_o[i]), (yield dut.pads.rwds.o))
|
self.assertEqual(c2bool(rwds_o[i]), (yield dut.pads.rwds.o))
|
||||||
|
@ -121,6 +124,7 @@ class TestHyperBus(unittest.TestCase):
|
||||||
self.assertEqual(c2bool(clk[i]), (yield dut.pads.clk))
|
self.assertEqual(c2bool(clk[i]), (yield dut.pads.clk))
|
||||||
self.assertEqual(c2bool(cs_n[i]), (yield dut.pads.cs_n))
|
self.assertEqual(c2bool(cs_n[i]), (yield dut.pads.cs_n))
|
||||||
self.assertEqual(c2bool(dq_oe[i]), (yield dut.pads.dq.oe))
|
self.assertEqual(c2bool(dq_oe[i]), (yield dut.pads.dq.oe))
|
||||||
|
if (yield dut.pads.dq.oe):
|
||||||
self.assertEqual(int(dq_o[2*(i//2):2*(i//2)+2], 16), (yield dut.pads.dq.o))
|
self.assertEqual(int(dq_o[2*(i//2):2*(i//2)+2], 16), (yield dut.pads.dq.o))
|
||||||
self.assertEqual(c2bool(rwds_oe[i]), (yield dut.pads.rwds.oe))
|
self.assertEqual(c2bool(rwds_oe[i]), (yield dut.pads.rwds.oe))
|
||||||
self.assertEqual(c2bool(rwds_o[i]), (yield dut.pads.rwds.o))
|
self.assertEqual(c2bool(rwds_o[i]), (yield dut.pads.rwds.o))
|
||||||
|
@ -148,6 +152,7 @@ class TestHyperBus(unittest.TestCase):
|
||||||
self.assertEqual(c2bool(clk[i]), (yield dut.pads.clk))
|
self.assertEqual(c2bool(clk[i]), (yield dut.pads.clk))
|
||||||
self.assertEqual(c2bool(cs_n[i]), (yield dut.pads.cs_n))
|
self.assertEqual(c2bool(cs_n[i]), (yield dut.pads.cs_n))
|
||||||
self.assertEqual(c2bool(dq_oe[i]), (yield dut.pads.dq.oe))
|
self.assertEqual(c2bool(dq_oe[i]), (yield dut.pads.dq.oe))
|
||||||
|
if (yield dut.pads.dq.oe):
|
||||||
self.assertEqual(int(dq_o[2*(i//2):2*(i//2)+2], 16), (yield dut.pads.dq.o))
|
self.assertEqual(int(dq_o[2*(i//2):2*(i//2)+2], 16), (yield dut.pads.dq.o))
|
||||||
self.assertEqual(c2bool(rwds_oe[i]), (yield dut.pads.rwds.oe))
|
self.assertEqual(c2bool(rwds_oe[i]), (yield dut.pads.rwds.oe))
|
||||||
yield
|
yield
|
||||||
|
@ -174,6 +179,7 @@ class TestHyperBus(unittest.TestCase):
|
||||||
self.assertEqual(c2bool(clk[i]), (yield dut.pads.clk))
|
self.assertEqual(c2bool(clk[i]), (yield dut.pads.clk))
|
||||||
self.assertEqual(c2bool(cs_n[i]), (yield dut.pads.cs_n))
|
self.assertEqual(c2bool(cs_n[i]), (yield dut.pads.cs_n))
|
||||||
self.assertEqual(c2bool(dq_oe[i]), (yield dut.pads.dq.oe))
|
self.assertEqual(c2bool(dq_oe[i]), (yield dut.pads.dq.oe))
|
||||||
|
if (yield dut.pads.dq.oe):
|
||||||
self.assertEqual(int(dq_o[2*(i//2):2*(i//2)+2], 16), (yield dut.pads.dq.o))
|
self.assertEqual(int(dq_o[2*(i//2):2*(i//2)+2], 16), (yield dut.pads.dq.o))
|
||||||
self.assertEqual(c2bool(rwds_oe[i]), (yield dut.pads.rwds.oe))
|
self.assertEqual(c2bool(rwds_oe[i]), (yield dut.pads.rwds.oe))
|
||||||
yield
|
yield
|
||||||
|
@ -200,6 +206,7 @@ class TestHyperBus(unittest.TestCase):
|
||||||
self.assertEqual(c2bool(clk[i]), (yield dut.pads.clk))
|
self.assertEqual(c2bool(clk[i]), (yield dut.pads.clk))
|
||||||
self.assertEqual(c2bool(cs_n[i]), (yield dut.pads.cs_n))
|
self.assertEqual(c2bool(cs_n[i]), (yield dut.pads.cs_n))
|
||||||
self.assertEqual(c2bool(dq_oe[i]), (yield dut.pads.dq.oe))
|
self.assertEqual(c2bool(dq_oe[i]), (yield dut.pads.dq.oe))
|
||||||
|
if (yield dut.pads.dq.oe):
|
||||||
self.assertEqual(int(dq_o[2*(i//2):2*(i//2)+2], 16), (yield dut.pads.dq.o))
|
self.assertEqual(int(dq_o[2*(i//2):2*(i//2)+2], 16), (yield dut.pads.dq.o))
|
||||||
self.assertEqual(c2bool(rwds_oe[i]), (yield dut.pads.rwds.oe))
|
self.assertEqual(c2bool(rwds_oe[i]), (yield dut.pads.rwds.oe))
|
||||||
yield
|
yield
|
||||||
|
@ -226,6 +233,7 @@ class TestHyperBus(unittest.TestCase):
|
||||||
self.assertEqual(c2bool(clk[i]), (yield dut.pads.clk))
|
self.assertEqual(c2bool(clk[i]), (yield dut.pads.clk))
|
||||||
self.assertEqual(c2bool(cs_n[i]), (yield dut.pads.cs_n))
|
self.assertEqual(c2bool(cs_n[i]), (yield dut.pads.cs_n))
|
||||||
self.assertEqual(c2bool(dq_oe[i]), (yield dut.pads.dq.oe))
|
self.assertEqual(c2bool(dq_oe[i]), (yield dut.pads.dq.oe))
|
||||||
|
if (yield dut.pads.dq.oe):
|
||||||
self.assertEqual(int(dq_o[2*(i//2):2*(i//2)+2], 16), (yield dut.pads.dq.o))
|
self.assertEqual(int(dq_o[2*(i//2):2*(i//2)+2], 16), (yield dut.pads.dq.o))
|
||||||
self.assertEqual(c2bool(rwds_oe[i]), (yield dut.pads.rwds.oe))
|
self.assertEqual(c2bool(rwds_oe[i]), (yield dut.pads.rwds.oe))
|
||||||
yield
|
yield
|
||||||
|
@ -255,6 +263,7 @@ class TestHyperBus(unittest.TestCase):
|
||||||
self.assertEqual(c2bool(clk[i]), (yield dut.pads.clk))
|
self.assertEqual(c2bool(clk[i]), (yield dut.pads.clk))
|
||||||
self.assertEqual(c2bool(cs_n[i]), (yield dut.pads.cs_n))
|
self.assertEqual(c2bool(cs_n[i]), (yield dut.pads.cs_n))
|
||||||
self.assertEqual(c2bool(dq_oe[i]), (yield dut.pads.dq.oe))
|
self.assertEqual(c2bool(dq_oe[i]), (yield dut.pads.dq.oe))
|
||||||
|
if (yield dut.pads.dq.oe):
|
||||||
self.assertEqual(int(dq_o[2*(i//2):2*(i//2)+2], 16), (yield dut.pads.dq.o))
|
self.assertEqual(int(dq_o[2*(i//2):2*(i//2)+2], 16), (yield dut.pads.dq.o))
|
||||||
self.assertEqual(c2bool(rwds_oe[i]), (yield dut.pads.rwds.oe))
|
self.assertEqual(c2bool(rwds_oe[i]), (yield dut.pads.rwds.oe))
|
||||||
self.assertEqual(c2bool(rwds_o[i]), (yield dut.pads.rwds.o))
|
self.assertEqual(c2bool(rwds_o[i]), (yield dut.pads.rwds.o))
|
||||||
|
|
Loading…
Reference in New Issue