diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-04 18:42:36 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-04 18:42:36 -0400 |
| commit | 1f2073d4fbb1d412d9bbf373312e3c51b83db92a (patch) | |
| tree | a661537d7ec9510324e0a40a5a65e4b8c853f01b /debug/risc-v-gsp-rm-vm/sim/devices/__init__.py | |
| parent | c1adf2727983f5cace8ca0f5d1119ac2256c348e (diff) | |
| download | open-iov-1f2073d4fbb1d412d9bbf373312e3c51b83db92a.tar.gz open-iov-1f2073d4fbb1d412d9bbf373312e3c51b83db92a.zip | |
greeneye: GMMU/FBIF observability, PTE decoder and oracle, MPU/libos simulator wave
Simulator development wave (docs 42-44): GMMU page-table entry decode with its oracle/workflow harness, FBIF observability, and MPU/LIBOS device surfaces in the device model, plus refreshed boot/machine/profile data (tu104-570.144), the qemu-line results, and the new unit tests. Docs 00/06/35-41 updated to match; harness helpers and .gitignore included.
Diffstat (limited to 'debug/risc-v-gsp-rm-vm/sim/devices/__init__.py')
| -rw-r--r-- | debug/risc-v-gsp-rm-vm/sim/devices/__init__.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/debug/risc-v-gsp-rm-vm/sim/devices/__init__.py b/debug/risc-v-gsp-rm-vm/sim/devices/__init__.py index caf22b3..6fdce2e 100644 --- a/debug/risc-v-gsp-rm-vm/sim/devices/__init__.py +++ b/debug/risc-v-gsp-rm-vm/sim/devices/__init__.py @@ -26,6 +26,14 @@ from .dma import DmaTranslator from .falcon import FalconBlock from .fwsec import Wpr2Block from .irq import IrqRouter +from .observe import ( + TRACE_SCHEMA, + ObservedWindow, + build_trace, + collect_observations, + parse_window_spec, + windows_from_section, +) from .pmc import PmcBlock from .pmu import PmuStub from .priscv import PriscvBlock @@ -33,12 +41,16 @@ from .timer import PtimerBlock PROFILE_SCHEMA = "greeneye-sim-profile/1" +#: Profile device sections that declare observe-only/log-only windows. +OBSERVE_SECTIONS = ("gmmu", "fbif") + __all__ = [ "Device", "DeviceRegistry", "Window", "SNAPSHOT_SCHEMA", "PROFILE_SCHEMA", + "TRACE_SCHEMA", "PmcBlock", "FalconBlock", "PriscvBlock", @@ -48,8 +60,13 @@ __all__ = [ "PmuStub", "DmaTranslator", "IrqRouter", + "ObservedWindow", "load_profile", "registry_from_profile", + "windows_from_section", + "parse_window_spec", + "collect_observations", + "build_trace", ] @@ -153,6 +170,15 @@ def registry_from_profile(profile: dict, *, machine=None, ) elif name == "pmu": dev = PmuStub() + elif name in OBSERVE_SECTIONS: + for win in windows_from_section(section): + reg.add(ObservedWindow( + base=win["base"], size=win["size"], label=win["label"], + mode=win["mode"], registers=win["registers"], + evidence=section.get("evidence", ""), + clock=(machine.insn_count if machine is not None else None), + )) + continue else: raise ValueError(f"unknown device section {name!r}") for base, size in _windows(section): |
