Server Profiles
“Server” on this project means Linux-class configs that compose multi-issue or OoO, optional SMT, L2/L3, hypervisor timer extensions, and math/memory acceleration — always through named config packages, never ad hoc RTL forks.
Detail: architecture/remaining-upgrade-sequence.md,
architecture/server-math-hypervisor.md, architecture/ara-vector-attach.md.
Package families (illustrative)
Confirm exact filenames under core/include/.
| Family | Intent | Typical stack |
|---|---|---|
g6lc64_ooo_int | OoO bring-up baseline | OoOEn, integer-only, NrHarts=1, NrCores=1 |
g6lc64_smt2_ooo_int | Production SMT2 over OoO | OoOEn, integer-only, NrHarts=2, mixed residency (M2), ring 16, WT D$, eWT L2 |
g6lc64_ooo_int2 | OoO coherence integration (integer anchor) | drained handoff + NrCores=2, COH_OOO, signature snoop filter, eWT L2, four-hart strict boot |
g6lc64_ooo_int2_l3 | OoO + L3 performance package | ooo_int2 + non-inclusive 1 MiB L3 (SRAM tags), RV64GC+B (M4), ring 16, CohMaxOutstanding=8 |
g6lc64_ooo | Dual-issue OoO lite | OoOEn + FP — legal single-hart FP since M4 (bring-up, no boot evidence) |
g6lc64_ooo_server | Server OoO | Wide issue, multi-core×hart, L2/L3 auto, memdep — opt-in / unqualified (drained FP legal; COH_FILTERED leg without evidence) |
g6lc64_smt2 | Dual-thread | NrHarts=2, hybrid switch, in-order, often L2 |
g6lc64_server_math | KVM / math host (C-light) | H+Sstc, RVB, Zicbo*, HWPF, HPDCACHE, L2 auto; RVV off until Ara |
g6lc64_server_math_v | + RVV | VExtEn, Ara attach; CvxifEn exclusive with accelerator path |
g6lc64_stream8 | Stream8-class bring-up | In-order, NrCores=2, H+Sstc, Zacas W/D/Q |
g6lc64_stream8_l3, g6lc64_server_math_l3 | In-order two-core + L3 (M6) | HPDCACHE_WT, COH_FILTERED, non-inclusive 1 MiB L3, eWT L2; strict two-core OpenSBI boots |
g6lc64_ai | SI island | stream8 envelope + Xg6lcai / ai_island |
g6lc64_smt2_ai | SMT2 + SI island | smt2 envelope (2 harts, dual issue) + Xg6lcai / ai_island, per-hart accumulator banks |
Default packages (e.g. cv64a6_imafdc_sv39) remain the identity path for
integrators who want classic CVA6 behavior.
Composition rules
- Config package is the product SKU. Selecting a package sets dozens of
knobs consistently (
check_cfgenforces legality). - L2/L3 live in APU, not as L1 hacks — see L2 / L3 Cache.
- H + Sstc before heavy guest timer work; G-stage present, KVM stress still operator-owned.
- Ara / RVV prefers the CVXIF / acc_dispatcher seam;
CvxifEnand accelerator enables are mutually exclusive by assertion. - SMT × KVM is a later composition — bring up SMT bare-metal first.
Operator selection
# .config.ts
export default defineBuildConfig({
soc: { coreConfig: 'g6lc64_server_math' }, // example
})
g6lc-build config
g6lc-build verify --target g6lc64_server_mathBoard selection (g6lc-build mb select) may pin soc.* via overlay — do not
fight the board contract when co-developing FPGA targets.
Software / DTS
| Capability | Visibility |
|---|---|
ISA string / misa | Must match package extensions |
| Multi-hart / SMT | Multiple cpu@ nodes, CLINT/PLIC sizing |
| L2/L3 | next-level-cache / cache nodes when present |
| Hypervisor | OpenSBI + Linux KVM prerequisites |
Cross-check: AGENTS-dts-validation.md and
build-platform/scripts/validate-cva6-dts.*.
Related product pages
- SKU Matrix — side-by-side package comparison
- Out-of-Order
- SMT
- Multi-Issue
- Hypervisor & Sstc
- Vector (RVV) & Ara
- Multi-Core
- L2 / L3
- Upgrade Program
- Vector guide:
agents/guides/AGENTS-vector.md