I had a short look at the runtime changes.
In my opinion these changes should not be in the "standard" runtime, as they are very specific to this NVMulator (which probably won't be used by most people). This is not specific to this change, but a general problem with the runtime, especially as we don't have an equivalent to e.g. the features in the toolflow.
But I still think, that we shouldn't just continue always adding such specific changes to the general runtime. Especially when this probably can be achieved with less specific changes to the runtime, or maybe none at all.
If I understand it correctly, the changes to the runtime basically just configure the NVMulator IP (via an AXI-Lite slave), correct?
I want to propose some alternatives, on how to achieve this:
Add the NVMulator IP to the PEs configured for your composition with a special PE_ID. Then you could just configure it via the existing launch() calls. While this is somewhat hacky, but it would require no changes to the runtime at all.
Extend the runtime with an option to "write" to platform components (or at least some of them). Something like configure_platform_component(string component_name, uint64_t offset, uint64_t data) (and the other direction query_platform_component). This would look at the components specified in the status core and find the correct one via the name. While this of course requires changes to the runtime, they would not be specific to the NVMulator, but also useful for other stuff (e.g. querying ECC status information).
I had a short look at the runtime changes. In my opinion these changes should not be in the "standard" runtime, as they are very specific to this NVMulator (which probably won't be used by most people). This is not specific to this change, but a general problem with the runtime, especially as we don't have an equivalent to e.g. the features in the toolflow. But I still think, that we shouldn't just continue always adding such specific changes to the general runtime. Especially when this probably can be achieved with less specific changes to the runtime, or maybe none at all.
If I understand it correctly, the changes to the runtime basically just configure the NVMulator IP (via an AXI-Lite slave), correct?
I want to propose some alternatives, on how to achieve this:
configure_platform_component(string component_name, uint64_t offset, uint64_t data)
(and the other directionquery_platform_component
). This would look at the components specified in the status core and find the correct one via the name. While this of course requires changes to the runtime, they would not be specific to the NVMulator, but also useful for other stuff (e.g. querying ECC status information).