Skip to content

Backend: Make Compute Engine instantiation a SV parameter#159

Open
da-gazzi wants to merge 4 commits into
pulp-platform:develfrom
mosaic-soc:pr/compute-sv-param
Open

Backend: Make Compute Engine instantiation a SV parameter#159
da-gazzi wants to merge 4 commits into
pulp-platform:develfrom
mosaic-soc:pr/compute-sv-param

Conversation

@da-gazzi

Copy link
Copy Markdown
Contributor

Make instantiation of compute engines an elaboration-time parameter rather than a generation-time one:

  • Replace enable_compute in backend generation with a SystemVerilog parameter
  • Add EnableCompute, ComputeOps, and ComputeFullDuplex parameters to
    eligible backend, synthesis wrapper, and transport-layer modules.
    • Eligible backends are those with at least one "real" data read and write port each (i.e., a backend with only an init read port won't have the parameters as transposing zeros doesn't make sense)
  • Omit compute parameters entirely for generated topologies that cannot support
    the compute datapath
  • Keep the non-compute path available in compute-capable variants with
    EnableCompute = 0, and instantiate idma_otf_compute only when enabled.
  • Remove IDMA_VIDMA_IDS / --compute-ids plumbing from the generator and
    makefile; compute support is now selected at elaboration.
  • Update transpose testbenches to enable compute explicitly and keep the inst64
    frontend backend instantiation compute-disabled

- This target generates C headers in `target/sw` with both the `raw-header` and `c-header` PeakRDL plugins
- Also added to `deploy` CI job
Georg Rutishauser added 3 commits July 16, 2026 16:17
- the PeakRDL `c-header` plugin generates structs with `__attribute__((__packed__))` which ensures proper packing of fields but can also cause the compiler to emit byte loads/stores to access 32-bit registers, which is definitely not what we want. The `unpacked` version of the C header has the attribute removed.
- The `idma_sw_clean` target had a typo and didn't actually clean anything, this is fixed now.
- Replace `enable_compute` in backend generation with a SystemVerilog parameter
- Add `EnableCompute`, `ComputeOps`, and `ComputeFullDuplex` parameters to
  eligible backend, synthesis wrapper, and transport-layer modules.
- Omit compute parameters entirely for generated topologies that cannot support
  the compute datapath
- Keep the non-compute path available in compute-capable variants with
  `EnableCompute = 0`, and instantiate `idma_otf_compute` only when enabled.
- Remove `IDMA_VIDMA_IDS` / `--compute-ids` plumbing from the generator and
  makefile; compute support is now selected at elaboration.
- Update transpose testbenches to enable compute explicitly and keep the inst64
  frontend backend instantiation compute-disabled
@da-gazzi
da-gazzi force-pushed the pr/compute-sv-param branch from d0fe5aa to 4ae061d Compare July 16, 2026 14:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant