Software controller
The host software controls the emulator through litex_server. It is organized in layers, each usable and tested on its own:
| Layer | Module | Role |
|---|---|---|
| Layout | liteinjector.software.layout |
Reads injector.csv: probed signals, groups, capabilities and version of the core. Resolves short signal names. |
| Model | liteinjector.software.model |
Describes an injection: Trigger (conditions, offset, duration) and Fault (model, signal, bits or value). |
| Encoder | liteinjector.software.encoder |
Translates a Trigger into the words of a hardware trigger entry. Fault models are functions in a registry. |
| Driver | liteinjector.software.driver.injector |
The only module that reads and writes the CSRs of the core. |
| Client | liteinjector.software.client |
Python API: connect, inject, wait, read the status. |
| Campaign | liteinjector.software.campaign |
Sweeps, repetitions, observation of the target, results. |
| CLI | liteinjector_cli |
Command line front-end of all the above. |
The encoder is pure computation: any trigger, and any campaign, can be checked and printed with --dry-run without hardware.
The configuration CSV carries the version of the core. The host software refuses to drive a SoC built with an incompatible core instead of writing wrong values: rebuild the SoC when you update LiteInjector.
Learn more in the command line, campaign files and Python API references.