blob: 75d2aba3993b20abf5921445babf8334a7c83325 [file] [log] [blame]
Glossary
========================
.. glossary::
Arc
A programmable connection between two nodes. Most arcs are unidirectional buffers that connect
in one direction only, a few are bidirectional switch transistors (however these are mostly used in
situations where this is one useful direction anyway).
ASIC
An application-specific integrated circuit (ASIC) is a chip that is
designed and used for a specific purpose, such as video acceleration,
machine learning acceleration, and many more purposes. In contrast to
:term:`FPGAs <FPGA>`, the programming of an ASIC is fixed at the time of
manufacture.
Bitstream
Binary data that is directly loaded into an :term:`FPGA` to perform
configuration. Contains configuration :term:`frames <frame>` as well as
programming sequences and other commands required to load and activate same.
Database
Contains information about programmable configuration bits, arc enable bits,
and how wires are connected between tiles.
FF
Flip flop
A flip flop (FF) is a logic element on the :term:`FPGA` that stores state.
FPGA
A field-programmable gate array (FPGA) is a reprogrammable integrated
circuit, or chip. Reprogrammable means you can reconfigure the integrated
circuit for different types of computing. You define the configuration via a
hardware definition language (:term:`HDL`). The word "field" in
*field-programmable gate array* means the circuit is programmable
*in the field*, as opposed to during chip manufacture.
Frame
A frame contains a row of bits used to configure the FPGA, and is the basic unit
that a bitstream is split into. The number of bits per frame, and frames per device
varies for different ECP5 chips.
Fuzzer
Scripts and a makefile to generate one or more :term:`specimens <specimen>`
and then convert the data from those specimens into a :term:`database`.
General Routing
Routing that connects together nearby :term:`tiles <tile>` horizontally or vertically, spanning up
to about 15 tiles at most. Called "shortwires" in Lattice Diamond, but this also refers
to internal routing.
Global Routing
Routing that connects to all :term:`tiles <tile>` in a quadrant for logic, and all tiles
on an edge for IO. Normally used for routing clocks, or occasionally other high fanout
signals. Called "longwires" in Lattice Diamond.
Half
Portion of a device defined by a virtual line dividing the two sets of global
clock buffers present in a device. The two halves are referred to as
the top and bottom halves.
HDL
You use a hardware definition language (HDL) to describe the behavior of an
electronic circuit. Popular HDLs include Verilog (inspired by C) and VHDL
(inspired by Ada).
Internal Routing
Routing that does not leave a single :term:`tile`.
LUT
A lookup table (LUT) is a logic element on the :term:`FPGA`. LUTs function
as a ROM, apply combinatorial logic, and generate the output value for a
given set of inputs.
MUX
A multiplexer (MUX) is a multi-input, single-output switch controled by
logic.
Node
A routing node on the device. A node is a collection of :term:`wires <wire>`
spanning one or more :term:`tiles <tile>`.
Nodes that are local to a tile map 1:1 to a wire. A node that spans multiple
tiles maps to multiple wires, one in each tile it spans.
PnR
Place and route
Place and route (PnR) is the process of taking logic and placing it into
hardware logic elements on the :term:`FPGA`, and then routing the signals
between the placed elements.
Quadrant
The ECP5 FPGAs are arranged into four quadrants for the purpose of global signal
distribution, upper left (UL), upper right (UR), lower left (LL) and lower right (LR).
Routing fabric
The :term:`wires <wire>` and programmable interconnects (:term:`arcs <arc>`)
connecting the logic blocks in an :term:`FPGA`.
Site
Locations inside a tile that can contain an instance of a primitive.
Specimen
A :term:`bitstream` of a (usually auto-generated) design with additional
files containing information about the placed and routed design.
These additional files are usually generated using programs included with Diamond
to create debugging outputs.
Tile
Fundamental unit of physical structure containing a single type of
resource or function. The whole chip is a grid of tiles, however,
multiple tiles may exist at one grid location.
Wire
Physical wire within a :term:`tile`.