siracusa: integrate Light_RedMulE accelerator#76
Draft
runwangdl wants to merge 2 commits into
Draft
Conversation
Minimal delta over gvsoc/gvsoc-pulp master: add a redmule peripheral entry in cluster.json and instantiate LightRedmule from the official pulp.light_redmule module in cluster.py, wired via periph_ico (MMIO) and L1's neureka_in TCDM port. No vendored model copy; no C++ sources touched.
The two accelerators both drive L1's neureka_in TCDM ingress port, so they cannot coexist in a single cluster. Make the choice explicit: - Cluster now accepts an 'accelerator' kwarg (or cluster.json key) valid values 'neureka' (default) and 'redmule'. Only one is instantiated; all its bindings (wmem, periph_ico, IRQ, TCDM out) are gated behind the selection. - Pulp_open propagates the same kwarg to Cluster so callers (e.g. Pulp_open_board) can select via Python without editing cluster.json. - cluster.json carries 'accelerator': 'neureka' as the default to preserve existing behaviour on plain 'siracusa' targets. Users wanting the Light_RedMulE variant instantiate as e.g. Pulp_open(..., accelerator='redmule') or set the cluster.json property.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Integrates the existing Light_RedMulE model (
pulp/light_redmule/) into the Siracusa cluster as a memory-mapped accelerator, mutually exclusive with Neureka (they share the L1neureka_inTCDM ingress port). Selection is controlled from Python via anacceleratorkwarg, defaulting toneurekaso current behaviour is unchanged.Changes
pulp/chips/siracusa/cluster.py:acceleratorkwarg onCluster.__init__(values:'neureka'|'redmule'). Falls back to theacceleratorkey incluster.json, then to'neureka'.neureka_in) are gated behind the selection.pulp/chips/siracusa/pulp_open.py: propagate the sameacceleratorkwarg to theClustercall, so callers (e.g.Pulp_open_board) can select via Python without editingcluster.json.pulp/chips/siracusa/cluster.json:"accelerator": "neureka"to preserve existing behaviour.redmuleperipheral entry at0x10201C00(size0x200) with a Light_RedMulE configuration (elem_size=4,ce_height=12,ce_width=4, queue depth 8), used only when the accelerator is switched toredmule.Usage
Why
Unblocks Deeploy support for a new
Siracusa_w_redmuletarget: the compiler needs the accelerator visible in the Siracusa chip model so generated C code can issue the Light_RedMulE register sequence. The Deeploy side of the integration (MAGIA-style register protocol matching PR #70'sI_INPUT_V2) is a separate downstream change.Scope & compatibility
pulp/light_redmule/, Neureka, or cluster infrastructure.accelerator='neureka'keeps every existingsiracusaconsumer bit-identical.redmuledisables Neureka (including itswmem_out, IRQ andneureka_inbindings) in the same cluster.Testing
Builds cleanly under
make TARGETS="siracusa"on currentmasterin both modes. End-to-end validation (DeeploytestFloatMatmulthrough GVSoC on theredmulevariant) is pending the companion Deeploy-side PR; this change stands alone as a Siracusa configuration update.