Skip to content

WIP: Rework fault injection framework architecture

Stefan Biereigel requested to merge rework_architecture into master

This MR will structurally change how the fault injection framework is architected.

  • The Yosys design representation is represented by a singleton object, shared between any instantiated FaultInjectors
  • FaultInjectors can now come in different flavours (Hierarchical, Signal-list based, Regex-based, ...)
  • SEE temporal distribution (and duration) is not controlled anymore via string, but by providing one of several special Timer objects to the FaultInjector
  • SEE injection strategies are implemented using iterator classes (Single bit upsets sequentially, single random bit flips, A/B/C group injections ...)
  • SEE injection goals are set on instantiation of the FaultInjector, logically together with injection strategy and temporal distribution settings
  • The general calling convention now follows what a Cocotb worker object typically looks like (instantiate with settings, then fork .start() to make it do something

It also introduces changes that allow making cocotb_fault_injection the default solution for SEU/SET injection on both RTL designs AND gate-level netlists. This is achieved by the following:

  • (on user request by Szymon) Allow providing information that makes the hierarchy-traversal NOT enter technology modules (standard cells, ...), but instead use behavioral information about these cells provided a-priori.
  • Make the yosys pass an optional phase (depending on the NETLIST environment variable)
  • Add standard cell SEE information for all TSMC65 cells (in an extra repository, for NDA reasons)

Other notable actions:

  • Improved tracking of injection progress (separate SEU und SET node lists)

Action items:

  • Add a yosys-patch that allows it to at least not crash on the specify-blocks in our libraries (required for RTL designs mixed with manual standard cell instantiations)
Edited by Stefan Biereigel

Merge request reports