mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			31 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			31 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.
 |