1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
//! Cycle-level RV64GC + RVV 1.0 system simulator.
//!
//! The crate's interface is the system: build a [`Simulator`] from a
//! [`Config`], load a program or boot a kernel, run it, and read its harts,
//! memory, statistics and pipeline state back. The modules are layered;
//! each depends only on those before it:
//!
//! 1. [`common`]: addresses, identifiers, access kinds and tracing.
//! 2. [`isa`]: what the ISA defines: encodings, CSRs, fields, vocabulary.
//! 3. [`config`]: simulator configuration.
//! 4. [`arch`]: architectural state: harts, registers, CSRs, traps, PMP.
//! 5. `exec`: instruction semantics every engine shares.
//! 6. `sim`: the simulation kernel: events, packets, memory image, [`stats`].
//! 7. `soc`: the uncore: bus, caches, coherence, memory controllers, devices.
//! 8. `uarch`: the timing model of a core and the views it runs on.
//! 9. [`system`]: the whole system: `Simulator`, loading, checkpoints.
//!
//! Layers 5 to 8 are the model and stay inside the crate; the first four
//! and the last are the interface.
pub
pub
pub
pub
/// The statistics tree a run produces: counters, histograms and derived
/// stats keyed by path.
pub use cratestats;
/// Address Space Identifier (ASID) from SATP\[59:44\]; prevents mixing with raw `u16` values.
pub use crateAsid;
/// Interrupt Request Identifier for PLIC lines; prevents mixing with arbitrary `u32` values.
pub use crateIrqId;
/// Simulator-level error type; returned by `Simulator::tick` and the binary loader.
pub use crateSimError;
/// Root configuration type; use `Config::default()` or deserialize from Python/JSON.
pub use crateConfig;
/// 12-bit CSR address newtype; prevents mixing raw `u32` constants with address values.
pub use crateCsrAddr;
/// 5-bit architectural register index (0–31); prevents mixing with arbitrary `usize` values.
pub use crateRegIdx;
/// The simulated system: build it, load it, run it, inspect it.
pub use crateSimulator;