This is work-in-progress, since the utilities and wrappers developed in F4PGA are being redesigned (from shell to Python). Therefore, the terms and definitions shown below are subject to change. It is strongly suggested not to rely on the content below until this note is updated/removed.
An artifact is a result produced by a step when executed. Typically, artifacts are files and logs generated by the tools. However, within f4pga flows, (meta)data can be passed across steps without saving it to disk.
A Command-Line Interface (CLI) ➚ is an application that processes commands to a computer program in the form of lines of text, typically interactively (through a terminal) or in batch mode (through scripts). Most of the applications used in F4PGA are meant to be used through CLIs. Precisely, f4pga tools provide Python abstractions around the CLIs.
Within f4pga, a project configuration is the set of parameters needed for executing a flow on a given design. The configuration might be provided through a Python API, or through a file using declarative format (such as JSON, YAML, INI,…).
Set of parameters that allow users to select/specify certain physical characteristics of the FPGA device, such as the pins/pads or the logic standard to use.
FOSS Flows For FPGA (F4PGA), the name of the project as a whole.
A Workgroup under the CHIPS Alliance. See Community.
Python package providing utilities.
The main CLI entrypoint provided by the Python package.
Within f4pga, a flow is a directed graph ➚ of steps, which describes end-to-end sequences to achieve specific tasks. A flow might used as a step within another flow. In such cases, terms subflow or partial flow are used.
A Hardware Description Language (HDL) is a computer language used for describing hardware designs. HDLs in the scope of F4PGA include established (such as Verilog and VHDL ➚) or emerging software-inspired paradigms like Chisel ➚, SpinalHDL ➚, Migen ➚, or Amaranth ➚.
Project model: a generic description of an EDA project, independent of vendor and tools. It reflects multiple design variants, grouping of source files into file sets or linking testbenches to components or subsystems in a design.
The Python Tutorial » Modules ➚ are files containing Python statements and definitions (variables, functions, clases,…). The file name is the module name with the suffix
Relations between f4pga steps, dependencies and artifacts can get complex easily. On top of computing the topological sorting, f4pga checks the existence of the assets, and supports displaying the status.
A software application available as a CLI entrypoint, a shared library or an (interpreted) script.
Within f4pga, a tool is a Python abstraction that wraps a software application:
Toolchain ➚ is a generic term used to refer to a set of programming tools used consecutively to perform a complex software development task.