Add (back) support for preloading L2 and L1 memory in RTL simulations. The "best" option might be to rely on information directly in the SDK, but in this PR instead the strategy is to rely on an external mem.json file distributed together with the PULP RTL, inside the ROOT/sim folder of each given PULP chip, to describe the memory architecture.
For example, the typical architecture of a PULPissimo SoC with 32+32 KiB of private L2 and 448 KiB of shared L2 divided in 4 word-interleaved banks is described as follows:
The SDK will automatically generate one file for each JSON dictionary entry inside vectors, but keep the JTAG loading method by default. To switch to preloading, one can set the bootmode env variable on the fly while calling the Make command:
Add (back) support for preloading L2 and L1 memory in RTL simulations. The "best" option might be to rely on information directly in the SDK, but in this PR instead the strategy is to rely on an external
mem.json
file distributed together with the PULP RTL, inside the ROOT/sim folder of each given PULP chip, to describe the memory architecture. For example, the typical architecture of a PULPissimo SoC with 32+32 KiB of private L2 and 448 KiB of shared L2 divided in 4 word-interleaved banks is described as follows:The SDK will automatically generate one file for each JSON dictionary entry inside
vectors
, but keep the JTAG loading method by default. To switch to preloading, one can set thebootmode
env variable on the fly while calling the Make command: