Model Components Reference¶
A complete, per-file index of every Sitar design unit (module or
procedure) in this repo. For each one it lists what it is, where it
lives, what plain C++ class (if any) it wraps, what design unit embeds
it, and its one-line description. See Model
Components for the narrative overview this table
indexes. See each file's own header comment for the full detail behind
its one-line description here.
There is one table per configuration, listed top-down: the root module
first, then its children in the order each parent instantiates them,
depth-first. A design unit shared by both configurations (everything
under sitar_component_models/) appears in both tables, once per
configuration that uses it.
-
Scope
commonmeans the file lives inmodel/sitar_component_models/and is translated into every configuration's build, whether or not that configuration actually instantiates it. See that folder's own build-script comment.core_only/core_mmumeans the file lives under that configuration's ownsystem_models/<config>/sitar_model/src/. -
Parent
Names what instantiates this row within the current table's configuration, and how many instances. Reads "None (root)" forTop.
core_only¶
| Design unit | File | Scope | Embedded C++ class | Parent | Description |
|---|---|---|---|---|---|
| Top (module) | Top.sitar |
core_only | None | None (root) | The required root module for the core_only build. It just instantiates Core. |
| Core (module) | Core.sitar |
core_only | None | Top |
Wires sparcThread and mainMemory : VirtualMainMemory as two parallel procedures sharing a request/response handshake. |
| SparcThread (procedure) | SparcThread.sitar |
common | SparcCore |
Core (1 instance: sparcThread) |
The SPARC V8 fetch-decode-execute-trap state machine. Owns 5 VirtualMainMemoryInterface instances for ifetch, load, store, atomic, and flush. |
| VirtualMainMemoryInterface (procedure) | VirtualMainMemoryInterface.sitar |
common | None | SparcThread (5 instances: ifetchProcedure, memReadProcedure, memWriteProcedure, atomicLoadStoreProcedure, flushProcedure) |
Blocking, VM-shaped (VirtualMemoryRequest/Response) memory-access interface. One run per access. Reused across calls. |
| VirtualMainMemory (procedure) | VirtualMainMemory.sitar |
common | MemCore |
Core (1 instance: mainMemory) |
Persistent VM-shaped memory model wrapping MemCore. core_only's terminal memory node. No MMU sits downstream of it. |
core_mmu¶
| Design unit | File | Scope | Embedded C++ class | Parent | Description |
|---|---|---|---|---|---|
| Top (module) | Top.sitar |
core_mmu | None | None (root) | The required root module for the core_mmu build. It just instantiates System. |
| System (module) | System.sitar |
core_mmu | None | Top |
Assembles Core and PhysicalMainMemory as sibling submodules, connected by two nets. Owns the consolidated latency-knob block for this configuration. |
| Core (module) | Core.sitar |
core_mmu | None | System (1 instance: core) |
Wires sparcThread and mmu as two parallel procedures sharing a request/response handshake. Exposes two ports so mmu can reach physical memory over nets. |
| SparcThread (procedure) | SparcThread.sitar |
common | SparcCore |
Core (1 instance: sparcThread) |
The SPARC V8 fetch-decode-execute-trap state machine. Owns 5 VirtualMainMemoryInterface instances for ifetch, load, store, atomic, and flush. |
| VirtualMainMemoryInterface (procedure) | VirtualMainMemoryInterface.sitar |
common | None | SparcThread (5 instances: ifetchProcedure, memReadProcedure, memWriteProcedure, atomicLoadStoreProcedure, flushProcedure) |
Blocking, VM-shaped (VirtualMemoryRequest/Response) memory-access interface. One run per access. Reused across calls. |
| Mmu (procedure) | Mmu.sitar |
common | MmuCore |
Core (1 instance: mmu) |
The Sitar timing model for the MMU. Sits between SparcThread and physical memory. Drives MmuCore's step-primitives through real, timed physical accesses. |
| PhysicalMainMemoryInterface (procedure) | PhysicalMainMemoryInterface.sitar |
common | None | Mmu (2 instances: phyMemReadProcedure, phyMemWriteProcedure) |
Mmu's own physical-access transaction procedure. Nests one PushAToken/PullAToken pair to reach PhysicalMainMemory over nets. |
| PullAToken (procedure) | PullAToken.sitar |
common | None | PhysicalMainMemoryInterface (1 instance: getPhyMemResponse) and PhysicalMainMemory (1 instance: getRequest) |
Generic single-token consumer, parameterized by width. Retry-pulls from an inport until it receives exactly one token. |
| PushAToken (procedure) | PushAToken.sitar |
common | None | PhysicalMainMemoryInterface (1 instance: sendPhyMemRequest) and PhysicalMainMemory (1 instance: sendResponse) |
Generic single-token producer, parameterized by width. Retry-pushes one token onto an outport until there's room. |
| PhysicalMainMemory (module) | PhysicalMainMemory.sitar |
common | MainMemory |
System (1 instance: mainMemory) |
Persistent PM-shaped memory model wrapping MainMemory. core_mmu's terminal memory node, below the MMU, reached over nets rather than a procedure handshake. |
Notes¶
-
Module vs. procedure
Top,System,Core, andPhysicalMainMemoryaremodules. Every other row above is aprocedure. See the siblingsitarrepo's own documentation for the general module/procedure distinction, andSystem.sitar's own header comment for how it plays out incore_mmuspecifically. -
Reading "None" in the C++ class column
This applies to every request/response-only or token-only procedure (VirtualMainMemoryInterface,PhysicalMainMemoryInterface,PullAToken,PushAToken) and to the three purely structural modules (Top,System,Core). None of these hold a functional-model class instance themselves.