Upgrade Cheshire (64-bit CVA6) - #84
Conversation
332d0e9 to
f930a6c
Compare
|
At this point we might want to consider directly moving to the incoming version with CVA6 v3 |
Lore0599
left a comment
There was a problem hiding this comment.
Thank you very much, teh PR looks very good. I left some comments, for some of them I'm open to discussion.
| logic [ChimeraAxiLlcArWidth-1:0] hyper_ar_data; | ||
| logic [ LogDepth:0] hyper_ar_wptr; | ||
| logic [ LogDepth:0] hyper_ar_rptr; | ||
| logic [ChimeraAxiSlvAwWidth-1:0] hyper_aw_data; | ||
| logic [ChimeraAxiLlcAwWidth-1:0] hyper_aw_data; | ||
| logic [ LogDepth:0] hyper_aw_wptr; | ||
| logic [ LogDepth:0] hyper_aw_rptr; | ||
| logic [ ChimeraAxiSlvBWidth-1:0] hyper_b_data; | ||
| logic [ ChimeraAxiLlcBWidth-1:0] hyper_b_data; | ||
| logic [ LogDepth:0] hyper_b_wptr; | ||
| logic [ LogDepth:0] hyper_b_rptr; | ||
| logic [ ChimeraAxiSlvRWidth-1:0] hyper_r_data; | ||
| logic [ ChimeraAxiLlcRWidth-1:0] hyper_r_data; | ||
| logic [ LogDepth:0] hyper_r_wptr; | ||
| logic [ LogDepth:0] hyper_r_rptr; | ||
| logic [ ChimeraAxiSlvWWidth-1:0] hyper_w_data; | ||
| logic [ ChimeraAxiLlcWWidth-1:0] hyper_w_data; | ||
| logic [ LogDepth:0] hyper_w_wptr; | ||
| logic [ LogDepth:0] hyper_w_rptr; |
There was a problem hiding this comment.
I think all this could be replaced with teh axi typedefs: https://github.com/pulp-platform/axi/blob/4da15979747f326bde2f9869c64e587ce599772c/include/axi/typedef.svh#L134-L141
There was a problem hiding this comment.
Is there a specific reason why we need the bender local?
I think it would be better to update teh Bender.lock (and YML)
There was a problem hiding this comment.
I argue it makes sense to resolve conflicts that we already know. This is currently the case for common_cells and axi. Thus, when running bender update you don't have to manually resolve these.
There was a problem hiding this comment.
Okay, but when running bender update, I think we want to see any conflicts and resolve them manually; that is part of the expected Bender behavior.
I would therefore prefer to remove this file and update both Bender.lock and Bender.yml accordingly.
Also, I think we should try to use a released version of common_cells, if possible. Can we use v1.40.0?
For AXI, instead, I think it is fine for now to keep the specific commit hash. Let’s just keep it in Bender.yml; if bender update is run, it will be our responsibility to resolve any resulting version conflicts.
| VSIM_FLAGS_GUI = -voptargs=+acc | ||
|
|
||
| override VSIM_FLAGS += -work $(VSIM_WORK) | ||
| override VSIM_FLAGS += -work $(VSIM_WORK) -suppress 8386 |
There was a problem hiding this comment.
Do we need to suppress this error? Why?
There was a problem hiding this comment.
To be honest, I don't remember. I think it is required if we use a new QuestaSim version, as we did for Torik.
There was a problem hiding this comment.
Since, at the moment, Chimera comes with iis-env.sh which sets the QuestaSim version, I think it is better to remove this suppress at the moment, or update the Questa version in the environment.
I don't have a preference between the 2 approaches; choose the one you consider the most appropriate.
Review feedback on the Cheshire 64-bit upgrade (pulp-platform#84): - chimera_top_wrapper: derive the LLC CDC async-bus widths from the axi_llc_* types emitted by CHESHIRE_TYPEDEF_ALL instead of recomputing them by hand. ChimeraAxiLlcIdWidth = $bits(axi_llc_id_t) and ChimeraAxiLlc{Ar,Aw,B,R,W}Width = (2**LogDepth) * $bits(axi_llc_*_chan_t). Equivalent widths; (2**LogDepth) is the axi_cdc FIFO depth exposed on the async data buses. - chimera_pkg / chimera_top_wrapper: replace the bare 'h800_0000 in the hyperbus RstChipSpace with a named single source of truth -- HyperRamChipSize (128 MiB per-chip device size) and HyperbusRstChipSpace = HypNumPhys * HypNumChips * HyperRamChipSize. - chimera_pkg: drop the second cfg.LlcOutRegionEnd assignment ('hFFFF_FFFF) in the AXI block, which silently overwrote the LLC-block value HyperbusRegionEnd. HyperbusRegionEnd now stands, matching the RDL / linker map. - testHyperbusAddr.c: remove the dead commented-out setAllCluster* lines (and the now-unused regPtr); the test uses no cluster. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Xeratec
left a comment
There was a problem hiding this comment.
I looked through you comments and addressed some of them. Please let me know if you want further clarification or adjustments.
There was a problem hiding this comment.
I argue it makes sense to resolve conflicts that we already know. This is currently the case for common_cells and axi. Thus, when running bender update you don't have to manually resolve these.
| VSIM_FLAGS_GUI = -voptargs=+acc | ||
|
|
||
| override VSIM_FLAGS += -work $(VSIM_WORK) | ||
| override VSIM_FLAGS += -work $(VSIM_WORK) -suppress 8386 |
There was a problem hiding this comment.
To be honest, I don't remember. I think it is required if we use a new QuestaSim version, as we did for Torik.
| logic [ChimeraAxiLlcArWidth-1:0] hyper_ar_data; | ||
| logic [ LogDepth:0] hyper_ar_wptr; | ||
| logic [ LogDepth:0] hyper_ar_rptr; | ||
| logic [ChimeraAxiSlvAwWidth-1:0] hyper_aw_data; | ||
| logic [ChimeraAxiLlcAwWidth-1:0] hyper_aw_data; | ||
| logic [ LogDepth:0] hyper_aw_wptr; | ||
| logic [ LogDepth:0] hyper_aw_rptr; | ||
| logic [ ChimeraAxiSlvBWidth-1:0] hyper_b_data; | ||
| logic [ ChimeraAxiLlcBWidth-1:0] hyper_b_data; | ||
| logic [ LogDepth:0] hyper_b_wptr; | ||
| logic [ LogDepth:0] hyper_b_rptr; | ||
| logic [ ChimeraAxiSlvRWidth-1:0] hyper_r_data; | ||
| logic [ ChimeraAxiLlcRWidth-1:0] hyper_r_data; | ||
| logic [ LogDepth:0] hyper_r_wptr; | ||
| logic [ LogDepth:0] hyper_r_rptr; | ||
| logic [ ChimeraAxiSlvWWidth-1:0] hyper_w_data; | ||
| logic [ ChimeraAxiLlcWWidth-1:0] hyper_w_data; | ||
| logic [ LogDepth:0] hyper_w_wptr; | ||
| logic [ LogDepth:0] hyper_w_rptr; |
Lore0599
left a comment
There was a problem hiding this comment.
Thank you very much for improving teh PR, is almost perfect.
I just left some comments regarding the Bender.localand the QuestaSim flag. Let's fix those and then we can merge it 💪
Upgrades the Cheshire host to a recent
main-based version (64-bit CVA6) and rebasesChimera onto the v0.2.0 template line. Chimera-specific Cheshire changes live on
wiesep/chimera-main.Dependencies (
Bender.yml/ newBender.local)cheshire: pinned commit →wiesep/chimera-mainbranchaxi:colluca/aximulticastbranch → pinned commitbd1abffccommon_cells:1.39.0, overridden inBender.localto the snitch branch (ca9d577f)register_interface:0.4.3→0.4.7memory_island: pinned commit →mainhyperbus:aottaviano/nonfreebranch →0.0.9Bender.localoverrides (common_cells,axi); removeworkspace.package_linksChanges
CHS_XLEN=64,cv64a6_imafdchsclic_sv39_wb(wascv32a6_convolve)AxiDataWidth→ 64; addMemIslRegionLength; 64-bit-aware fast preloadCHIM_HYPERBUS_SDF_PATH,-suppress 8386To-do
wiesep/chimera-maincheshirecommit hash is pinned before merge (currently a branch ref)wiesep/chimera-mainonto feat: parametrize Cheshire for 32-bit (XLEN) cores cheshire#287 once it landswiesep/chimera-mainonto feat(axi): Add optional AXI cut on the DMA manager port cheshire#295 once it lands