getting-started
Run the co-verification demo: four commands
Everything below is one command and a sentence saying what it is for. The long-form account is in the demo's DESIGN.md; this page is the short version.
1. Turn the model into a twin definition
python cameo2vsi.py models/IMS_Coverification_Demo.mdzip --out ims
Reads the SysML model offline, with no licence and no Cameo running. Writes the twin definition, the software activity with a duration bound to every action, the run parameters, and an assumptions file naming every value it had to invent. Read that assumptions file. It is where the twin admits what the model did not say.
2. Build the twin, once
python run_ims.py bootstrap
Generates, glues, installs the component behaviours and compiles. About 118 seconds. This is the only slow step, and you pay it once.
3. Run one scenario
python run_ims.py run --name baseline-2t --targets 2 --window 8000 --defect 1
About 90 seconds. No rebuild: the scenario knobs are read at runtime, which is what makes sweeping affordable.
The verdict is printed per requirement, and it is never the exit code. The fabric server exits nonzero at teardown after a complete run, so a run is judged by the fabric stop line plus a trace row per step from every component.
4. Run the campaign
python run_ims.py campaign --targets-list 1 2 4
9 runs: baseline and both candidate fixes, each at three load points. Writes one record per run plus a summary table.
Two commands worth knowing about
python make_kb_page.py --out kb/hw-sw-coverification.md
Regenerates the results page from the run records. The published page is generated rather than written, so its numbers cannot drift from the runs.
python compare_campaigns.py runs/campaign-all-python.json runs/campaign.json
Compares two campaigns field by field. Used to prove that converting two components from Python to C++ did not change the physics: 9 runs, 11 fields each, all identical.
If something looks wrong
- A run reports clean but produced nothing. Check the trace row count against the step count. A component that exited at startup leaves the fabric waiting and the run looks tidy.
- A Python component fails silently. A syntax error makes the client exit immediately; the tooling compiles every behaviour before launching for exactly this reason.
- A C++ behaviour change had no effect. C++ needs a recompile; Python does not. Scenario changes need neither.
Source: innexis-vsi/demo-hwsw · retrieved Thu Sep 10 2026 00:00:00 GMT+0000 (Coordinated Universal Time)