--mode eda). It uses the Eda license feature; a 180-day free trial starts automatically.Groups the indexed EDA categories into 18 canonical flow stages and emits a directed graph showing which procs/files own each stage and which transitions exist between stages. Captures the EDA-specific architecture in a way the generic call graph cannot, because the flow is staged (project_setup → synthesis → place → route → timing) rather than call-driven.
verification calls in a synthesis-stage codebase is suspicious)| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
filePattern | string | No | — | Substring match on file path |
minCalls | number | No | 1 | Drop stages with fewer than this many calls |
minTransition | number | No | 1 | Drop transitions with fewer than this many spanning callers |
membersLimit | number | No | 20 | Maximum members per stage in output |
The 18 flow stages, in canonical order:
| Stage | Categories grouped |
|---|---|
project_setup | quartus_project, quartus_package |
ip_composition | qsys_module, qsys_interface, qsys_parameter, qsys_fileset, qsys_instantiation, qsys_callback |
design_io | read_, write_ (HDL / SDC / DEF / etc.) |
configuration | quartus_assignment |
synthesis | synthesis (TOOL_FLOW commands) |
floorplan | floorplan |
placement | placement |
cts | cts |
routing | routing |
timing | timing, quartus_timing, query_clock, query_pin, query_register, … |
power | power |
physical | physical |
verification | verification |
openroad | sta::, gpl::, drt::*, … |
execution | quartus_execution |
reporting | quartus_report |
logging | quartus_messaging |
other | unmapped categories (defensive — should be rare) |
Show me the EDA flow architecture of this codebase.
Calls with no filters; surfaces all active stages, their top members, and the strongest cross-stage transitions.
What does the Agilex flow look like?
Sets filePattern: "fpga_family/agilex".
Show only flow couplings shared by 5+ procs.
Sets minTransition: 5 to filter out one-off transitions that aren't architectural patterns.
Hide tiny stages with fewer than 10 calls.
Sets minCalls: 10.
{
"total_calls": 3327,
"stages": [
{
"name": "ip_composition",
"call_count": 2531,
"member_count": 28,
"categories": {
"qsys_interface": 962,
"qsys_parameter": 619,
"...": 0
},
"members": [
{ "file": "...", "caller": "...", "call_count": 384 }
]
}
],
"transitions": [
{
"from": "project_setup",
"to": "logging",
"spanning_callers": 9
}
]
}
A transition from → to means at least spanning_callers distinct callers have calls in both stages. The transition list is sorted by spanning count (highest first).
ip_composition, the codebase is IP-component-heavy (_hw.tcl files); if configuration dominates, it's Quartus-script-heavy (*_design_files.tcl).spanning_callers ≥ 10 is structural; one with spanning_callers = 1 is incidental.verification calls in a synthesis codebase suggests missing test-bench glue. No timing calls suggests SDC isn't indexed (check that .sdc files are in scope).stellarion_find_eda_calls to drill into a stage's specific call sites.