Parameter files
The single Kathryn executable takes exactly one argument: a parameter
file (see the params/ directory). The parameter file selects what to run
and where output goes.
The file format
Section titled “The file format”ParamReader::getKeyVal (src/frontEnd/cmd/paramReader.cpp) parses each line
by whitespace. A line is one of:
- A comment — its first token is
;(the whole line is skipped). - A key/value — exactly three tokens,
key = value(the middle token must literally be=). - Blank lines are ignored; any other shape is a fatal error, and a duplicate key is a fatal error.
; path to riscv result folderprefix = /path/to/KOut/riscv/buildSimMode = gcrThere are no sections and no quoting — a value is a single whitespace-delimited token.
Common keys
Section titled “Common keys”Each key below is read by real code in src/ or appears in a shipped file in
params/.
| Key | Purpose |
|---|---|
testType | Selects the entry point. cfe.cpp::start() dispatches on this value (see the table below). |
prefix | Output directory for a simulation run (read as params["prefix"] by the RISC-V, O3, Kride, and autoSim managers). |
vcdFile | Destination path for the VCD waveform (used by blinkSample.cpp and cacheSimParams). |
profFile | Destination path for the ZEP profiler report. |
buildSimMode | Simulator JIT stages — g/c/r = generate / compile / run (see The Hybrid Simulator). |
genFolder | Output folder for generated Verilog (read as genFolder by GenController::initEnv). |
topFileName | Base name of the emitted top .v file. |
topModName | Verilog module name of the top module. |
limitCycle | Cycle limit for co-simulation runs (stoull(params["limitCycle"])). |
workload | Co-sim workload set — standard or cpp (simCtrlComb.h). |
Mode decision
Section titled “Mode decision”Generation keys and simulation keys are distinct, and testType decides which
set matters:
flowchart TB
P["params file"] --> R["ParamReader::getKeyVal<br/>(key = value, ; comments)"]
R --> T{"testType"}
T -->|"sim: testSimple,<br/>testO3Sim, testKrideSim, ..."| S["Hybrid Simulator<br/>needs prefix or vcdFile/profFile<br/>plus buildSimMode"]
T -->|"gen: testGen,<br/>testGenO3"| G["Verilog generator<br/>needs genFolder,<br/>topFileName, topModName"]
T -->|"co-sim: testKrideRideCombSim"| C["Kride vs RIDECORE compare<br/>needs workload, limitCycle"]
Shipped params files
Section titled “Shipped params files”The params/ directory ships one file per scenario. Their testType values
map to entry points via cfe.cpp::start():
| File | testType | Purpose |
|---|---|---|
smParams | testSimple | Auto simulation regression suite (src/test/autoSim); the smoke test. |
o3Params | testO3Sim | Kride out-of-order superscalar simulation. |
o3GenParams | testGenO3 | Kride out-of-order → Verilog generation (has synName). |
krideParams | testKrideSim | Kride standalone simulation. |
krideRideParams | testKrideRideCombSim | Co-simulation vs RIDECORE, standard workload, limitCycle = 10000. |
krideRideCxxParams | testKrideRideCombSim | Co-simulation vs RIDECORE, cpp workload, longer limitCycle. |
rideParams | testRideSim | RIDECORE via Verilator (needs BUILD_RIDECORE=ON). |
cacheSimParams | testSimpleCacheAcc | Cache-accelerator simulation; sets vcdFile, profFile, and slotFile. |
genParams | testGen | Small generator test cases. |
blinkParams | (none) | Paths for the standalone blinkSample.cpp demo (vcdFile / profFile only). |
tutorialParams | (none) | Single genPath for the tutorial generation demo. |
Where to go next
Section titled “Where to go next”- Building and running — how to compile the framework and invoke it with one of these files.
- The Hybrid Simulator and The Verilog generator — the two backends the keys configure.