GSys LibreCore — a source-available RISC-V core and agentic build platform, derived from OpenHW CVA6. Explore the layered architecture.
CPU CoreMulti-Issue

Multi-Issue

GSys LibreCore can elaborate more than one issue port so independent ops leave decode/issue in the same cycle. Width is a config product choice, not a hardwired pipeline rewrite.

Knobs

ConceptConfig / codeNotes
Issue widthNrIssuePortsScaled structures in build_config / packages
Superscalar baselineSuperscalarEnOften auto-selects 1 vs 2 issue
Scoreboard / load / store depthNrScoreboardEntries, NrLoadBufEntries, MaxOutstandingStoresMust grow with MLP and width
OoO backendOoOEnMulti-issue with rename/IQ when on; without when off

When OoOEn=0, multi-issue is still an in-order multi-issue product (dual or wider issue with scoreboard discipline). When OoOEn=1, issue width feeds the rename/IQ/ROB path — see Out-of-Order.

Pipeline impact

frontend (wider fetch useful)
    → ID / decode (multi-op)
    → issue / IRO (NrIssuePorts)
    → EX ports / WB
    → commit (multi-commit ports where configured)

Areas that must scale with width:

  • Operand read ports and forwarding
  • Functional unit arbitration
  • Scoreboard allocation and RAW checks (or OoO rename bypass of arch RAW)
  • Commit free of physical registers (OoO packages)

Product packages

Examples (confirm names in core/include/):

ProfileTypical widthNotes
Default cv64a6_imafdc_sv391 (or 2 if superscalar)Identity-lean path
g6lc64_ooo_int2Integer-only OoO bring-up baseline
g6lc64_smt2_ooo_int2Production SMT2 over OoO (mixed residency, ring 16)
g6lc64_ooo2Dual-issue OoO lite — legal single-hart FP since M4
g6lc64_ooo_server4Server OoO width — opt-in / unqualified; the 4-issue overlay on int2_l3 (M7) is not promoted until the fast-squash recovery lands
Server math packages2+Dual-issue + L2/H/Sstc stack

Timing and power

Wider issue multiplies:

  • Register file / PRF ports
  • Wakeup and select networks (especially under OoO)
  • Commit / free bandwidth

Treat every width step as a timing closure event. Use g6lc-build verify on the target package and optional structural FO4 via timings.

Verification

g6lc-build verify --target <wide_pkg>
# OoO-wide directed path (optional / lengthy):
g6lc-build test --suite ooo-l3-tests

Directed ILP and multi-issue stress live under verif/tests/custom/ for OoO packages; open-source smoke remains the minimum for every change.