Fix Snitch Cache Configuration, Update Memory Map, and Improve Simulation Support#82
Fix Snitch Cache Configuration, Update Memory Map, and Improve Simulation Support#82Xeratec wants to merge 5 commits intopulp-platform:develfrom
Conversation
| .ZeroMemorySize (64), | ||
| .ClusterPeriphSize(64), | ||
| .NrBanks (16), | ||
| // WIESEP: TCDM size = 16 * 1024 * 64 bit = 128 KiB |
There was a problem hiding this comment.
I think we can remover this comment
Lore0599
left a comment
There was a problem hiding this comment.
Thanks a lot for the contribution.
I left some small comments, and we can probably merge the work after discussing them.
There was a problem hiding this comment.
Even though this feature is nice, I would not add it because the chimera_reg_top.sv is a generated file, and if we modify the top-level registers, these changes will be lost.
There was a problem hiding this comment.
Yes I totally agree and there is for sure a better way to do that 😅 I just don't know how to do it clean right now. Maybe you can give me a tip?
| // WIESEP: Address space 512 KiB | ||
| localparam doub_bt MemIslRegionEnd = MemIslRegionStart + 64'h8_0000; |
There was a problem hiding this comment.
Perhaps, you could add MemIslSize and then define MemIslRegionEnd = MemIslRegionStart + MemIslSize; or something similar.
| localparam byte_bt MemIslNumWideBanks = 2; | ||
| localparam shrt_bt MemIslWordsPerBank = 1024; | ||
| // Memory Island size = 16 * 2 * 1024 * 4 B = 128 KB | ||
| // WIESEP: Memory Island size = 16 * 2 * 4096 * 32 bit = 512 KB |
There was a problem hiding this comment.
This is already written at line 131
| // WIESEP: Address space 256 MiB | ||
| localparam doub_bt HyperbusRegionEnd = HyperbusRegionStart + 64'h1000_0000; |
There was a problem hiding this comment.
We can use the same approach as suggested before for the memory island (End = Start + Size)
| // Timing | ||
| parameter time ClkPeriodClu = 2ns, | ||
| parameter time ClkPeriodSys = 5ns, | ||
| parameter time ClkPeriodSys = 2ns, |
This pull request updates the Chimera SoC to fix the instruction cache configuration of the Snitch cluster, increase the memory island size, remap the HyperBus, and enable aliasing in the L1 TCDM of the Snitch clusters. Additionally, it provides support for a fast virtual UART in RTL simulations, introduces a useful waveform configuration, and synchronizes the cluster clock with the SoC clock in the test bench. Finally, I added some helpful comments to enhance the understanding of the configuration values.
Memory Island Size
HyperBus Address
0x5000_0000; however, we usually use0x8000_0000for the DRAM.0x8000_0000.HyperBus Configuration
IsClockODelayedparameter in the HyperBus wrapper was set to zero, resulting in no delay line in the TX path; however, this can be problematic at higher frequencies.Snitch Cluster Instruction Cache Configuration
Snitch Cluster TCDM Aliasing
0x1800_0000by default.