Kernel ROM chiplet
The kernel ROM enables executing predefined kernel procedures.
These procedures are always executed in the root context and can only be accessed by a SYSCALL operation.
The chiplet tracks and enforces correctness of all kernel procedure calls as well as maintaining a list of all the procedures defined for the kernel, whether they are executed or not.
More background about Miden VM execution contexts can be found here.
Kernel ROM trace
The kernel ROM table consists of five columns, with exactly one row per declared kernel procedure. The following example table shows the execution trace for three procedures with digests , called 1, 2, and 0 times respectively.
| 1 | ||||
| 2 | ||||
| 0 |
Column meanings:
- is the
KernelRomCallmultiplicity — the number of times the procedure was invoked by aSYSCALL. It may be zero for procedures declared in the kernel but never called. - contain the digest of the kernel procedure.
Chiplets bus constraints
Each active kernel ROM row participates in two typed LogUp relations. Their denominators are
The row contributes
- The
KernelRomInitterm consumes one copy of the row digest. The verifier provides one matching boundary contribution for every kernel procedure digest in the public inputs, so an unauthenticated row leaves the relation unbalanced. - The
KernelRomCallterm provides copies of the row digest. EachSYSCALLconsumes one matching message, which binds to the call count for that procedure.
The chiplets bus constraints describe how these contributions are closed with the public-input boundary terms.
By using the bus this way, the verifier only learns which procedures can be invoked, not how often they were called — the multiplicity is a private witness that only reaches the verifier through the bus balance.