Beyond synthesis and simulation
The fmax, synth, pnr, analyze and sim commands cover hardware
implementation and validation. Workflows generalize that engine to anything
you can run on a command line.
A workflow is a set of tasks with commands and dependencies. Odatix copies your sources into an isolated work directory per configuration, runs the tasks in parallel across configurations, tracks progress, and extracts the metrics you define — all of which flow straight into Odatix Explorer.
Everything Odatix does for synthesis, it does here for arbitrary tasks: isolation, parallelism, progress tracking, metric extraction and parameter sweeping.
When you need it
- Sweeping something that is not RTL. A machine-learning training run per hyper-parameter, a compiler flag per build, a solver setting per instance — Odatix ships a TensorFlow example that explores a model exactly the way it explores a design.
- Multi-stage validation. A pipeline that generates a stimulus, builds a model, runs a simulation and compares outputs — more than a single testbench command can express.
- Wrapping a home-grown flow. A script you already have becomes parallel, monitored, cached and charted without being rewritten.
- Cross-platform pipelines. The same task declared once per platform, so one workflow runs on Linux, macOS and Windows.
- Measuring anything. If your tool prints it, writes it to a CSV or dumps it in a JSON, it can become a metric next to your area and timing figures.
How it works
A workflow lives in odatix_userconfig/workflows/<name>/ with two files:
_settings.yml (sources, progress, parameters and tasks) and _metrics.yml
(what to measure).
The task list is resolved like a makefile: execution starts at the task named
main, its dependencies run first, and independent branches run concurrently. A
task can declare a working path, and several entries can share a name with
different platforms — the one matching the current system wins, with a
platform-less entry as fallback.
Parameters reach a workflow in two ways:
- File-based, like a design: a delimited block of a source file is replaced with the configuration’s parameter file.
- Inline variables — declared in
_settings.yml, expanded as the cross-product of every variable, and substituted into commands as${name}. No folders, no parameter files. See virtual parameter domains.
Progress comes from a file your tasks write to and a regex that reads a percentage out of it, which is what fills the Job Monitor’s progress bar.
Working with the rest of Odatix
| Combine it with | Why |
|---|---|
| Architecture exploration | The same parameter domains and generation rules, applied to non-HDL work. |
| Simulation | Simulations run on the very same task engine — a workflow is where to go when one testbench command is not enough. |
| Explorer | Workflow metrics are ordinary records: chartable and correlatable against synthesis figures. |
| Derived metrics | Combine a workflow’s numbers with a synthesis’s, across job types. |
| Job Monitor | Progress, logs and session control, identical to a synthesis campaign. |
Using it
From the configuration files and the CLI
_settings.yml says what gets copied, what runs, and how progress is reported:
sources:
path: examples/workflow_simple
blacklist:
- "*.log"
progress:
file: progress.txt
regex: "Progress: ([0-9]+)"
use_parameters: Yes
param_target_file: "main.py"
start_delimiter: 'AWESOME_STRING = "'
stop_delimiter: '"'
tasks:
- name: main
dependencies:
- generate_config
commands:
- echo 'step 1/2 done'
- "echo 'Progress: 60' > progress.txt"
- echo 'step 2/2 done'
- "echo 'Progress: 100' > progress.txt"
- name: generate_config
commands:
- echo 'Generating config...'
- touch config.txt
_metrics.yml says what to keep from the files the tasks produced:
metrics:
letters:
type: regex
settings:
file: output.txt
pattern: "letters: ([0-9]+)"
group_id: 1
format: "%.0f"
workflow_settings.yml says which workflows to run, and with which parameters:
nb_jobs: 8
workflows:
- basic/default
- tensorflow + epochs/*
- param_domains_cli + max_speed/* + num_vehicles/*
odatix workflow
odatix workflow -d -S experiments # detached, named session
odatix workflow -r # resume existing work directories
odatix res_workflow # re-export after editing _metrics.yml
Every key is on the workflow settings reference and the metrics files reference; every option on the commands reference.
From the GUI
odatix-gui → Workflows (/workflows) edits the definition: tasks and their
dependencies as cards, the sources and progress settings as fields, the inline
variables in the shared variable editor, and the metrics editor for
_metrics.yml — with the extraction type, file and pattern in a form. Run
Jobs → Workflow then selects which workflows and which parameter values to
launch, and enqueues them into the same daemon as the CLI.
Where to go next
- Tutorials — Run the workflow examples · Create your own workflow
- Reference — Workflow settings · Run settings files · Metrics files
- Guides — Define a workflow · Virtual parameter domains · Base metrics
- Related feature — Results exploration, where a workflow’s metrics end up.