byuccl / bfasst

Tools for FPGA Assurance Flows
Apache License 2.0
12 stars 4 forks source link

example workflow example workflow example workflow

BFASST (BYU FPGA Assurance Tool)

The BFASST tool is a Python package located at bfasst/. The tool can be used to compose custom FPGA CAD flows. Many of these flows are already defined and can be found in bfasst/flows/flow_descriptions.yaml.

Example designs are located in the designs/ directory.

To run bfasst, use python scripts/run.py as follows:

Usage: 
  run_design.py [-h] [--flow_arguments FLOW_ARGUMENTS] flow_name_or_yaml_path [design ...]

positional arguments:
  flow_name_or_yaml_path              Name of the desired flow or path to a yaml file with a list of designs and the flow.
  design                              Design(s) to run the flow on (e.g. byu/alu byu/counter byu/uart to run all three designs through the flow)

options:
  -h, --help                          Show this help message and exit
  --flow_arguments FLOW_ARGUMENTS     Arguments to pass to the flow, as python dict (e.g. "{'num_runs': 10}" for error_injection flow)
  -j --jobs INT                       Specifies the number of jobs ninja can run in parallel (e.g. "python scripts/run.py basic/and3 -j 4")

Note that if a yaml file is specified, neither a design nor flow should be specified. Flow arguments and the jobs argument are optional; flows will always run with valid default arguments.

Install

Prerequisites

Tools

BFASST can be used to compose different CAD flows from severals tools. These tools are installed with BFASST. Before running any bfasst flows, always make sure you have activated the BFASST environment: . .venv/bin/activate (ran in the bfasst root directory).

WaFoVe

A Waveform Verification tool. In other words, a tool used to confirm that two Verilog designs are equivalent through analyzing their waveforms.

Fasm2Bels

Information found here: https://github.com/chipsalliance/f4pga-xc-fasm2bels/blob/master/README.md

RapidWright

Information found here: https://github.com/Xilinx/RapidWright/blob/master/README.md

Yosys

An open source synthesis tool. https://github.com/YosysHQ/yosys/blob/master/README.md

Conformal

The conformal plugin is currently designed to run conformal on a remote machine (CAEDM machine at BYU).

Project Structure

The project makes extensive use of the ninja_build_tool and chevron python package to accomplish the following:

For additional information about creating your own flows using ninja and chevron, see the project structure page.