From RTL to metrics, automatically
Odatix wraps the EDA tools you already use and runs them for you. You point it at a design, pick a target and a tool, and it synthesizes every configuration — extracting the metrics you care about into a single, comparable table.
This page covers custom-frequency synthesis (odatix synth): synthesis at
clock constraints you choose. Its sibling,
fmax synthesis, searches for the highest
frequency a configuration can reach.
| Mode | Command | What it answers |
|---|---|---|
| Custom-frequency synthesis | odatix synth |
“How does this configuration behave at 200 MHz?” |
| Fmax synthesis | odatix fmax |
“How fast can this configuration go?” |
When you need it
- Power/frequency trade-offs. Power only means something at a stated clock. Synthesize at 100, 200, 300 and 400 MHz and watch it climb.
- Comparing configurations fairly at a fixed clock. Every variant meets the same constraint, so differences in area and power belong to the design, not to how hard the tool tried.
- Meeting a specification. Your system runs at 250 MHz: synthesize there and see which configurations close timing and what they cost.
- Comparing targets. The same design on two FPGAs or two technology nodes, from one settings file.
- Comparing flows. A timing-oriented flow against a power-optimized one, on the same design, in the same results file.
How it works
Every configuration × target × frequency triple is an independent job. Odatix prepares an isolated work directory for each one — copying the RTL, splicing the configuration’s parameters in, writing the timing constraint — then runs the tool’s script and extracts the metrics from its reports.
Jobs are scheduled across your CPU cores through the Odatix daemon, so a large
sweep finishes as fast as your machine allows, and the
Job Monitor shows progress and logs live. A job whose
result already exists is skipped unless you ask for --overwrite.
Two mechanisms shape how a tool is run:
- Flows — alternative ways of running the
same tool (Vivado timing-oriented versus power-optimized with clock gating,
Design Compiler with
dc_shellversusdcnxt_shell). Each runs in its own work directory and is exported into the same results file, tagged with aflowkey, so Explorer compares them directly. - Steps — a flow split into resumable stages
(
synthesis,pnr,bitstream). Stop at post-synthesis estimates for a whole design space, then carry only the interesting part further.
The EDA tools themselves are not included with Odatix. You need your own installation and licence. See Install EDA tools.
Working with the rest of Odatix
| Combine it with | Why |
|---|---|
| Architecture exploration | Supplies the configurations being synthesized — this feature is what makes exploring worth it. |
| RTL analysis | Run it first: seconds of elaboration save hours of synthesis on a broken configuration. |
| Fmax synthesis | Find the ceiling with fmax, then study behaviour below it with synth. |
| Place & route | Hand the netlist to a second tool for post-route numbers. |
| Simulation | Cycles from a testbench plus Fmax from a synthesis give real runtime, via derived metrics. |
| Explorer | Turns the resulting table into charts you can publish. |
Using it
From the configuration files and the CLI
Three files matter. Which designs to run:
nb_jobs: 8
architectures:
- Example_Counter_verilog/08bits # only the 8-bit configuration
- Example_ALU_sv/* # all configurations
- Example_Rom_Chisel + addr/* + data/* # every combination of every domain
Which devices or technologies to run on:
constraint_file: constraints.xdc
targets:
- xc7a100t-csg324-1
- xcku035-fbva676-3-e
And which frequencies, in the design’s own settings — globally, per target, or per configuration:
custom_freq_synthesis:
lower_bound: 100
upper_bound: 400
step: 100
Then run, overriding the frequency set on the command line when you want a one-off:
odatix synth --tool vivado
odatix synth --tool vivado --from 100 --to 500 --step 50
odatix synth --tool openlane --at 50 --at 100 --at 150
odatix synth --tool vivado --flow power_opt --until pnr
odatix synth --tool design_compiler -j auto -d -S nightly # detached session
Every key is in the architecture, run settings and target file references; every option in the commands reference.
From the GUI
odatix-gui → Run Jobs → Custom Frequency Synthesis walks the same
path: pick the tool (its card shows the available flows, and the steps you can
stop at), pick the targets, set the frequency range, the designs and the number
of parallel jobs, and launch. The page writes the same settings files before
enqueueing, and drops you on the Monitor — where a run started from a terminal
shows up too, since there is one daemon for both.
Where to go next
- Tutorial — Custom-frequency synthesis, on the bundled examples.
- Reference — Architecture settings · Run settings files · Target files · Tool definitions
- Guides — Commands · Tools and flows
- Next feature — Maximum frequency search.