mirror of https://github.com/YosysHQ/yosys.git
32 lines
1.3 KiB
ReStructuredText
32 lines
1.3 KiB
ReStructuredText
Control and data flow
|
|
=====================
|
|
|
|
.. todo:: less academic
|
|
|
|
The data- and control-flow of a typical synthesis tool is very similar to the
|
|
data- and control-flow of a typical compiler: different subsystems are called in
|
|
a predetermined order, each consuming the data generated by the last subsystem
|
|
and generating the data for the next subsystem (see :numref:`Fig. %s
|
|
<fig:approach_flow>`).
|
|
|
|
.. figure:: /_images/internals/approach_flow.*
|
|
:class: width-helper invert-helper
|
|
:name: fig:approach_flow
|
|
|
|
General data- and control-flow of a synthesis tool
|
|
|
|
The first subsystem to be called is usually called a frontend. It does not
|
|
process the data generated by another subsystem but instead reads the user
|
|
input—in the case of a HDL synthesis tool, the behavioural HDL code.
|
|
|
|
The subsystems that consume data from previous subsystems and produce data for
|
|
the next subsystems (usually in the same or a similar format) are called passes.
|
|
|
|
The last subsystem that is executed transforms the data generated by the last
|
|
pass into a suitable output format and writes it to a disk file. This subsystem
|
|
is usually called the backend.
|
|
|
|
In Yosys all frontends, passes and backends are directly available as commands
|
|
in the synthesis script. Thus the user can easily create a custom synthesis flow
|
|
just by calling passes in the right order in a synthesis script.
|