200K+ tool usages 50K+ downloads 38 tools, all free Intel Qualcomm Mediatek LG NVIDIA Samsung Broadcom NXP Huawei Texas Instruments AMD ARM Renesas Ciena 40+ more leading semiconductor companies Free for commercial and academic use 200K+ tool usages 50K+ downloads 38 tools, all free Intel Qualcomm Mediatek LG NVIDIA Samsung Broadcom NXP Huawei Texas Instruments AMD ARM Renesas Ciena 40+ more leading semiconductor companies Free for commercial and academic use

CAD Reference Flows

FECAD: a free front-end flow for simulation, static checks, synthesis, equivalence checking and DV regression

FECAD is the EDAUtils front-end CAD reference flow. It generates the Makefiles and configuration that drive RTL simulation, static checks, synthesis, equivalence checking and DV regression across a hierarchy of soft IPs, hard IPs, VIPs and SoCs, and it records which test proves which requirement.

FECAD does not replace your EDA tools. It sits above them: you describe the design and its dependencies once, and the flow generates the per-step Makefiles that call the tools you already use.

Download FECAD Flow (Linux binaries) →
FECAD flow: scaffold the IP, generate file lists and makefiles, then run simulation, static checks, synthesis and equivalence checking, ending in summaries and a traceability report
Scaffold once, generate the build, then every flow domain runs from the same configuration.

The design flow

StepWhat runsGenerated by
Project and design setupFlow root, tool versions, IP directory and dependenciescreate_structures, generate_ip_dependencies
Flow configurationFile lists, waivers, constraintsgenerate_flat_filelists, get_config_value
RTL generationConnected RTL from IP metadataBaya
Compile and elaborateANVL (anvl, anvh)generate_misc_makefile
SimulationIcarus Verilog, VCSgenerate_sim_makefile
Static checks and lintingVerilatorgenerate_static_check_makefile
SynthesisYosysgenerate_synthesis_makefile
Equivalence checkYosysgenerate_eq_check_makefile
ReleaseIPQC gate, then RTL releasereport_summary_*

The DV flow

DV environment and build setup pull in the VIPs and the released RTL, compile to a.out or simv, then run the regression in parallel. Logs are parsed into a summary and a coverage report.

$ generate_dv_makefile
$ dvregress -exe ./simv -model my_model -designconfig DUT_1 \
            -testplan adder_ip/testplan/DUT_1.yml -parse_log

The testplan compiles into the Tests.list format the runner already reads, and the compiled list is written into the regression directory so you can see exactly what ran. -override KEY=VAL beats the testplan value for every row.

Requirement to test traceability

A requirement is only useful if you can say which test proves it. FECAD records that chain in three plain YAML files inside the IP, with no server involved and nothing leaving your network.

<ip>/req/<area>.yml        requirements
<ip>/testreq/<area>.yml    test requirements
<ip>/testplan/<DUT>.yml    testplan rows, one per test

Every entry carries an id that is unique across the IP; testplan rows reference test requirements, which reference requirements. traceability_report walks the chain and reports it. The bundled adder_ip/ is a complete worked example of all three files.

Reporting

  • report_summary_sim_icarus - simulation pass and fail summary
  • report_summary_static_checks_verilator - lint and static check summary
  • report_summary_synthesis_yosys - synthesis results
  • report_summary_anvl - compile and elaboration results
  • parse_log - turns raw tool logs into structured results
  • traceability_report - requirement to test coverage

Install

$ tar xzf fecadflow-<version>.tar.gz
$ cd fecadflow-<version>
$ ./install.sh [install_dir]        # default: ~/fecadflow

The installer checks for Python 3.8 or newer, installs the small set of Python dependencies, copies the bundle into place and writes env/setup/set_path. Every fecadflow command checks for a signed license file, so copy the edautils.lic issued to you into $INSTALL_DIR/edautils.lic.

Run the end-to-end example

$ bash $INSTALL_DIR/examples/run_end_to_end.sh

This scaffolds a small sample IP, a clock divider, with create_structures, then drives it through every flow domain. It takes well under a minute, and the script is the same command sequence you would run by hand for a real IP.

Flow domainToolWhat it does
simIcarus VerilogCompiles the RTL with iverilog
static_checksVerilatorLints the RTL with --lint-only
synthesisYosysSynthesizes RTL to a gate netlist
eq_checkYosysEquivalence-checks RTL against the synthesized netlist
miscANVLCompile and elaborate; skipped automatically when anvl is not installed

Scaffold your own IP

$ cd $EDAUTILS_RTL_PROJECT_ROOT
$ create_structures -techno <techno> -name <your_ip> -full_structure true
$ cd <your_ip>
$ echo 'src/rtl/your_module.v' > filelists/<designconfig>/rtl.f

Then, for each flow domain you need:

$ cd <flow_domain>/<tool>
$ cp $EDAUTILS_FECAD_FLOW_ROOT/defaults/<flow_domain>/<tool>/Makefile .
$ make TECHNO=<techno> TRIAL_NAME=trial TOP_MODULE_NAME=<TOP> \
       DESIGN_CFG_NAME=<designconfig> OUTPUT_DIR=<out> genfilelists
$ make ... genmakefiles
$ make ... <tool>_compile

Run those as three separate make invocations

  • genmakefiles writes the file that the <tool>_compile target lives in.
  • make reads its includes once, at parse time, so make t1 t2 t3 in one command cannot see a target that did not exist when it started.
  • The symptom of getting this wrong is No rule to make target '<tool>_compile'.

Troubleshooting

SymptomCause and fix
Couldn't find valid licenseedautils.lic is missing or expired, or EDAUTILS_LICENSE_FILE points at the wrong path.
No rule to make target '<tool>_compile'The three make targets were run in one invocation. Run them separately, as above.
eq_check errors on an async-reset flip-flopSensitive to the installed Yosys version, not to your design.

Frequently asked questions

What is the FECAD flow?
FECAD is EDAUtils' front-end CAD reference flow. It generates the Makefiles and configuration that drive RTL simulation, static checks, synthesis, equivalence checking and DV regression across a hierarchy of soft IPs, hard IPs, VIPs and SoCs, and records requirement-to-test traceability in plain YAML files.
Which EDA tools does FECAD drive?
Icarus Verilog and VCS for simulation, Verilator for static checks and linting, Yosys for synthesis and equivalence checking, and ANVL (anvl/anvh) for compile and elaboration. The flow generates Makefiles for each step rather than replacing the tools.
How does requirement traceability work?
Three YAML files inside each IP: req/<area>.yml for requirements, testreq/<area>.yml for test requirements, and testplan/<DUT>.yml for testplan rows. Every entry carries a unique id, and testplan rows reference test requirements which reference requirements. Nothing reaches the network.
How do I run a regression?
dvregress -exe <path/to/simv> -model <model> -designconfig DUT_1 -testplan <ip>/testplan/DUT_1.yml -parse_log. The testplan compiles into the Tests.list format the runner already reads, written into the regression directory so you can see exactly what ran.
Is the FECAD source available?
Prebuilt Linux binaries are available for download. The Python source bundle is not distributed at this time.
What does FECAD cost?
Nothing. Like every EDAUtils tool it is free for commercial and academic use, with no license server.
Download FECAD Flow →

Trusted by design teams worldwide

The collection of tools and utilities fills a real void in EDA. The baya tool is exactly what we had been looking for to assemble large top-level modules in Verilog. The GUI and high-level TCL commands are intuitive, allowing designers to get started immediately.
Michael TrocinoIC Design Manager, Coherent Logix
Thanks for efficient tools which have been successfully used in our internal wireless design flow. Friendly support has been highly appreciated.
Claudine RaibautEDA Manager, Texas Instruments
Baya is a mature production quality tool with features and capabilities beyond those of tools provided by large EDA vendors. Its flexibility is a key reason we have chosen it for use in our Cloud-based platform.
David FritzCEO, Social Silicon
Kanai produced an excellent tool set, which is very useful for complex system-on-chip integration flows. We were skeptical in the beginning, but later got really impressed by the high quality and ease of use.
Boris V. KuznetsovCEO, SOCC
Thanks a lot for creating DesignPlayer and the huge Java class library behind it. Your strong support makes me confident to explore more details in future.
Rolf KemperManager, Mixed Signal Design, Renesas Electronics Europe
EDAUtils is one of the most comprehensive tools for SoC design and integration, and it is available for free. I included EDAUtils in the OpenTech Package as a featured application.
Jamil KhatibOpenTech Package
The VHDL2Verilog translator worked great, even handling the generate statements in the source VHDL. It met our needs exactly.
Jerry FrenkilVP of Engineering, NanoWatt Design
We use the Verilog Parser for developing FPGA CAD applications. The library is very stable and EDAUtils provided much helpful support to us.
Dustin PetersonUniversity of Tübingen
I like the IP-XACT tools and others that you have developed. The IP-XACT tools are great.
Amal KhailtashLead FPGA Designer, Ciena Communications
The netlist parser provides an easy to use and flexible environment for developing my own custom analysis tools. The best part has been the prompt and helpful support.
Gene Y. WuUniversity of Texas
We have been using the Verilog testbench generator in Unix. It is really useful in the coding process and easy to use. I would recommend their tools.
Lucas TeixeiraSMDH
That really helped me now. I got the job done at the right time.
S. KrishnanIntel
The collection of tools and utilities fills a real void in EDA. The baya tool is exactly what we had been looking for to assemble large top-level modules in Verilog. The GUI and high-level TCL commands are intuitive, allowing designers to get started immediately.
Michael TrocinoIC Design Manager, Coherent Logix
Thanks for efficient tools which have been successfully used in our internal wireless design flow. Friendly support has been highly appreciated.
Claudine RaibautEDA Manager, Texas Instruments
Baya is a mature production quality tool with features and capabilities beyond those of tools provided by large EDA vendors. Its flexibility is a key reason we have chosen it for use in our Cloud-based platform.
David FritzCEO, Social Silicon
Kanai produced an excellent tool set, which is very useful for complex system-on-chip integration flows. We were skeptical in the beginning, but later got really impressed by the high quality and ease of use.
Boris V. KuznetsovCEO, SOCC
Thanks a lot for creating DesignPlayer and the huge Java class library behind it. Your strong support makes me confident to explore more details in future.
Rolf KemperManager, Mixed Signal Design, Renesas Electronics Europe
EDAUtils is one of the most comprehensive tools for SoC design and integration, and it is available for free. I included EDAUtils in the OpenTech Package as a featured application.
Jamil KhatibOpenTech Package
The VHDL2Verilog translator worked great, even handling the generate statements in the source VHDL. It met our needs exactly.
Jerry FrenkilVP of Engineering, NanoWatt Design
We use the Verilog Parser for developing FPGA CAD applications. The library is very stable and EDAUtils provided much helpful support to us.
Dustin PetersonUniversity of Tübingen
I like the IP-XACT tools and others that you have developed. The IP-XACT tools are great.
Amal KhailtashLead FPGA Designer, Ciena Communications
The netlist parser provides an easy to use and flexible environment for developing my own custom analysis tools. The best part has been the prompt and helpful support.
Gene Y. WuUniversity of Texas
We have been using the Verilog testbench generator in Unix. It is really useful in the coding process and easy to use. I would recommend their tools.
Lucas TeixeiraSMDH
That really helped me now. I got the job done at the right time.
S. KrishnanIntel

Read all customer feedback →