mirror of https://github.com/openXC7/prjxray.git
231 lines
9.2 KiB
ReStructuredText
231 lines
9.2 KiB
ReStructuredText
Glossary
|
|
========================
|
|
|
|
.. glossary::
|
|
|
|
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.
|
|
|
|
basic element
|
|
BEL
|
|
basic logic element
|
|
BLE
|
|
Basic elements (BELs) or basic logic element (BLEs)
|
|
are the basic logic units in an :term:`FPGA`, including
|
|
carry or fast adders (:term:`CFAs <cfa>`), flip flops (:term:`FFs <ff>`),
|
|
lookup tables (:term:`LUTs <lut>`), multiplexers (:term:`MUXes <mux>`), and
|
|
other element types. Note: Programmable interconnects (:term:`PIPs <pip>`)
|
|
are not counted as BELs.
|
|
|
|
BELs come in two forms:
|
|
|
|
* Basic BEL - A logic unit which does things.
|
|
* Routing BEL - A unit which is statically configured at routing time.
|
|
|
|
|
|
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.
|
|
|
|
Block RAM
|
|
Block RAM is inbuilt, configurable memory on an :term:`FPGA`, able to store
|
|
more data than the :term:`flip flops <ff>`. The block RAM can function as
|
|
dual or single-port memory. Xilinx 7 series devices offer a number of 36 Kb
|
|
block RAMs, each with two independently controlled 18 Kb RAMs. The number of
|
|
block RAMs available depends on the specific device.
|
|
|
|
CFA
|
|
A carry or fast adder (CFA) is a logic element on the :term:`FPGA` that
|
|
performs fast arithmetic operations.
|
|
|
|
Clock
|
|
A clock is a square-wave timing signal (50% on, 50% off) generated by an
|
|
external oscillator and passed into the :term:`FPGA`. The clock frequency
|
|
drives the sequential logic elements in the FPGA, most importantly
|
|
the :term:`flip flops <ff>`. For example, the FPGA may use a
|
|
50 megahertz clock. An FGPA can use one or more clocks and can thus have
|
|
one or more :term:`clock domains <clock domain>`.
|
|
|
|
Clock backbone
|
|
Clock spine
|
|
In Xilinx 7 series devices, the clock backbone or clock spine divides the
|
|
:term:`clock regions <clock region>` on the device into two sides, the left
|
|
and the right side.
|
|
|
|
Clock domain
|
|
Portion of the device controlled by one :term:`clock`. A clock domain is
|
|
part of a :term:`horizontal clock row` to one side of the global
|
|
:term:`clock spine`. The term also often refers to the
|
|
:term:`tiles <tile>` that are associated with these clocks.
|
|
|
|
Clock region
|
|
Portion of a device including up to 12 :term:`clock domains <clock domain>`.
|
|
A clock region is situated to the left or right of the global clock spine,
|
|
and is 50 :term:`CLBs <clb>` tall on Xilinx 7 series devices. The clock
|
|
region includes all synchronous elements in the 50 CLBs and one I/O bank,
|
|
with a :term:`horizontal clock row` at its center.
|
|
|
|
Column
|
|
A term used in :term:`bitstream` configuration to denote
|
|
a collection of :term:`tiles <tile>`, physically organized as
|
|
a vertical line, and configured by the same set of configuration frames.
|
|
Logic columns span 50 tiles vertically and 2 tiles horizontally
|
|
(pairs of logic tiles and interconnect tiles).
|
|
|
|
Configurable logic block
|
|
CLB
|
|
A configurable logic block (CLB) is the configurable logic unit of an
|
|
:term:`FPGA`. Also called a **logic cell**. A CLB is a combination of basic
|
|
logic elements (:term:`BELs <bel>`).
|
|
|
|
Database
|
|
Text files containing meaningful labels for bit positions within
|
|
:term:`segments <segment>`.
|
|
|
|
Fabric sub region
|
|
FSR
|
|
Another name for :term:`clock region`.
|
|
|
|
Flip flop
|
|
FF
|
|
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
|
|
The fundamental unit of :term:`bitstream` configuration data consisting of
|
|
101 :term:`words <word>`.
|
|
Each frame has a 32-bit frame address and 101 payload words, 32 bits each.
|
|
The 50th payload word is an EEC.
|
|
The 7 LSB bits of the frame address are the frame index within the
|
|
configuration :term:`column` (called *minor frame address* in the Xilinx
|
|
documentation). The rest of the frame address identifies the configuration
|
|
column (called *base frame address* in Project X-Ray nomenclature).
|
|
|
|
The bits in an individual frame are spread out over the entire column.
|
|
For example, in a logic column with 50 tiles, the first tile is configured
|
|
with the first two words in each frame, the next tile with the next two
|
|
words, and so on.
|
|
|
|
Frame base address
|
|
The first configuration frame address for a :term:`column`. A frame base
|
|
address has always the 7 LSB bits cleared.
|
|
|
|
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`.
|
|
|
|
Half
|
|
Portion of a device defined by a virtual line dividing the two sets of
|
|
global :term:`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).
|
|
|
|
Horizontal clock row
|
|
HROW
|
|
Portion of a device including 12 horizontal :term:`clocks <clock>` and the
|
|
50 interconnect and function tiles associated with them. A :term:`half`
|
|
contains one or more horizontal clock rows and each half may have a
|
|
different number of rows.
|
|
|
|
I/O block
|
|
One of the configurable input/output blocks that connect the :term:`FPGA`
|
|
to external devices.
|
|
|
|
Interconnect tile
|
|
INT
|
|
An interconnect tile (`INT_L`, `INT_R`) is used to connect other tiles to
|
|
the fabric. It is also frequently called a switch box.
|
|
|
|
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.
|
|
|
|
PIP
|
|
Programmable interconnect point
|
|
A programmable interconnect point (PIP) is a connection point between two
|
|
wires in a tile that may be enabled or disabled by the configuration.
|
|
|
|
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.
|
|
|
|
Region of interest
|
|
ROI
|
|
Region of interest (ROI) is used in *Project X-Ray* to denote a
|
|
rectangular region on the :term:`FPGA` that is the focus of our study.
|
|
The current region of interest is `SLICE_X12Y100:SLICE_X27Y149`
|
|
on a `xc7a50tfgg484-1` chip.
|
|
|
|
Routing fabric
|
|
The :term:`wires <wire>` and programmable interconnects (:term:`PIPs <pip>`)
|
|
connecting the logic blocks in an :term:`FPGA`.
|
|
|
|
Segment
|
|
All configuration bits for a horizontal slice of a :term:`column`.
|
|
This corresponds to two ranges: a range of :term:`frames <frame>`
|
|
and a range of :term:`words <word>` within frames. A segment of a logic
|
|
column is 36 frames wide and 2 words high.
|
|
|
|
Site
|
|
Portion of a tile where :term:`BELs <bel>` can be placed. The
|
|
:term:`slices <slice>` in a :term:`CLB` tile are sites.
|
|
|
|
Slice
|
|
Portion of a :term:`tile` that contains :term:`BELs <bel>`.
|
|
A `CLBLL_L/CLBLL_R` tile contains two `SLICEL` slices.
|
|
A `CLBLM_L/CLBLM_R` tile contains one `SLICEL` slice and one `SLICEM` slice.
|
|
`SLICEL` and `SLICEM` are the most common types of slice, containing the
|
|
:term:`LUTs <lut>` and :term:`flip flops <ff>` that are the basic logic
|
|
units of the FPGA.
|
|
|
|
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 Vivado TCL scripts
|
|
querying the Vivado design database.
|
|
|
|
Tile
|
|
Fundamental unit of physical structure containing a single type of
|
|
resource or function. A container for :term:`sites <site>` and
|
|
:term:`slices <slice>`. The FPGA chip is a grid of tiles.
|
|
|
|
The most important tile types are left and right interconnect tiles
|
|
(`INT_L` and `INT_R`) and left and right :term:`CLB` logic/memory tiles
|
|
(`CLBLL_L`, `CLBLL_R`, `CLBLM_L`, `CLBLM_R`).
|
|
|
|
Wire
|
|
Physical wire within a :term:`tile`.
|
|
|
|
Word
|
|
32 bits stored in big-endian order. Fundamental unit of :term:`bitstream`
|
|
format.
|