This is necessary for consistency, since for transparent read ports,
we currently do not support .en at all (it is fixed at 1) due to
YosysHQ/yosys#760. Before this commit, changing port transparency
would require adding or removing an assignment to .en, which is
confusing and error-prone.
Also, most read ports are always enabled, so this behavior is also
convenient.
self.data = Signal(memory.width,
name="{}_r_data".format(memory.name), src_loc_at=2)
if self.domain != "comb" and not transparent:
- self.en = Signal(name="{}_r_en".format(memory.name), src_loc_at=2)
+ self.en = Signal(name="{}_r_en".format(memory.name), src_loc_at=2, reset=1)
else:
self.en = Const(1)
self.assertEqual(rdport.transparent, False)
self.assertEqual(len(rdport.en), 1)
self.assertIsInstance(rdport.en, Signal)
+ self.assertEqual(rdport.en.reset, 1)
def test_read_port_asynchronous(self):
mem = Memory(width=8, depth=4)
def process():
yield self.wrport.data.eq(0x33)
yield self.wrport.en.eq(1)
- yield self.rdport.en.eq(1)
yield
- self.assertEqual((yield self.rdport.data), 0x00)
+ self.assertEqual((yield self.rdport.data), 0xaa)
yield
self.assertEqual((yield self.rdport.data), 0xaa)
yield Delay(1e-6) # let comb propagate