Cosim timing

Concept

Cycle-timing validation compares Python timing measurements against Vitis cosim reports and records a structured verdict. The flow combines Python-side extraction, cosim report parsing, and tolerance-based comparison.

This keeps timing checks reproducible and machine-readable: build runs always produce JSON artifacts, and failures halt with explicit delta/tolerance diagnostics.

API

Example

From examples/stream_inband/poly_build.py, the timing-check segment wires the three-step chain:

outer_dag.add(ExtractPyTimingStep(...))
outer_dag.add(ExtractCosimTimingStep(top=top_name, report_dir_artifact="report_dir"))
outer_dag.add(ValidateTimingStep(tolerance_cycles=timing_tol_cycles))

On the poly reference run from PR #31, the recorded result reports a delta=4 cycle difference between Python and RTL cosim.

Quick reference

  • Cosim parser prefers <top>_cosim.rpt, then falls back to cosim.log.
  • ValidateTimingStep always writes timing_verdict.json.
  • Pass rule: abs(py_cycles - cosim_cycles) <= tolerance_cycles.
  • Failure raises RuntimeError after writing verdict output.
  • Use structured artifacts for regression tracking and future model fitting.

This site uses Just the Docs, a documentation theme for Jekyll.