[Libre-soc-bugs] [Bug 781] create wrapper register files around 1R-or-1W SRAMs
bugzilla-daemon at libre-soc.org
bugzilla-daemon at libre-soc.org
Sun Apr 3 23:59:18 BST 2022
https://bugs.libre-soc.org/show_bug.cgi?id=781
--- Comment #8 from Cesar Strauss <cestrauss at gmail.com> ---
Things are going according to plan.
1) Simulation model of a transparent synchronous 1RW memory block in nMigen:
Code:
https://git.libre-soc.org/?p=soc.git;a=blob;f=src/soc/regfile/sram_wrapper.py;hb=332653c94f0e6369fa8d96087a7e392430a10daf#l28
Test case waveforms:
python ~/src/soc/src/soc/regfile/sram_wrapper.py
SinglePortSRAMTestCase.test_sram_model
gtkwave test_sram_model.gtkw
2) Wrapper around two 1RW memory blocks, allowing an independent read port,
even if the write port still works only on even (or odd) cycles.
Code:
https://git.libre-soc.org/?p=soc.git;a=blob;f=src/soc/regfile/sram_wrapper.py;hb=332653c94f0e6369fa8d96087a7e392430a10daf#l233
Test case waveforms:
python ~/src/soc/src/soc/regfile/sram_wrapper.py
PhasedDualPortRegfileTestCase.test_phased_dual_port_regfile
gtkwave test_phased_dual_port_1_transparent.gtkw
Both were formally verified, giving more confidence than just a few targeted
test cases.
Next is implementing a full 1W/1R regfile, with four 1RW memories and a LVT.
Later, we can go back to the original plan of double clocking a single 1RW
memory, but at least we will have a choice of a safer fallback, if needed.
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the libre-soc-bugs
mailing list