Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: image/svg+xml Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Application (calls language constructs) Me@0: Language Constructs (Compiler or Lib or Macros): outputs binary w/custom op-codes Me@0: QEMU (calls HW-op-code library for each custom op-code, collects instr statistics) Me@0: HW-op-code Library (has calls to HWSim, which suspends and resumes as needed) Me@0: Device behavior (Calls HWSim_lib: triggers, trace-behavior, timing model) Me@0: HWSim_lib (wrapper-lib, connects behavior-code to plugin) Me@0: HWSim plugin (implements simulated-time, fires triggers, fires timing model) Me@0: VMS (or other base for runtime system) Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Physical HW of machine running simulation Me@0: Line is where HWSimtakes over control ofexecution -- above line, execution suspends andresumes, controlled byHWSim, which is belowthe line Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: Me@0: trigger Me@0: segment Me@0: idle Me@0: idle Me@0: To model an arch, supply:trace-segment behaviortime-wide of trace-segment (timing model)triggers (fire off a trace-segment)comm-time modelcreate timelines Me@0: Me@0: