mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 11:42:30 +00:00 
			
		
		
		
	Merge pull request #1233 from YosysHQ/clifford/defer
Call "read_verilog" with -defer from "read"
This commit is contained in:
		
						commit
						acd8bc0a74
					
				
					 2 changed files with 21 additions and 49 deletions
				
			
		
							
								
								
									
										67
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										67
									
								
								README.md
									
										
									
									
									
								
							|  | @ -130,18 +130,15 @@ commands and ``help <command>`` to print details on the specified command: | ||||||
| 
 | 
 | ||||||
| 	yosys> help help | 	yosys> help help | ||||||
| 
 | 
 | ||||||
| reading the design using the Verilog frontend: | reading and elaborating the design using the Verilog frontend: | ||||||
| 
 | 
 | ||||||
| 	yosys> read_verilog tests/simple/fiedler-cooley.v | 	yosys> read -sv tests/simple/fiedler-cooley.v | ||||||
|  | 	yosys> hierarchy -top up3down5 | ||||||
| 
 | 
 | ||||||
| writing the design to the console in Yosys's internal format: | writing the design to the console in Yosys's internal format: | ||||||
| 
 | 
 | ||||||
| 	yosys> write_ilang | 	yosys> write_ilang | ||||||
| 
 | 
 | ||||||
| elaborate design hierarchy: |  | ||||||
| 
 |  | ||||||
| 	yosys> hierarchy |  | ||||||
| 
 |  | ||||||
| convert processes (``always`` blocks) to netlist elements and perform | convert processes (``always`` blocks) to netlist elements and perform | ||||||
| some simple optimizations: | some simple optimizations: | ||||||
| 
 | 
 | ||||||
|  | @ -163,51 +160,26 @@ write design netlist to a new Verilog file: | ||||||
| 
 | 
 | ||||||
| 	yosys> write_verilog synth.v | 	yosys> write_verilog synth.v | ||||||
| 
 | 
 | ||||||
| a similar synthesis can be performed using yosys command line options only: |  | ||||||
| 
 |  | ||||||
| 	$ ./yosys -o synth.v -p hierarchy -p proc -p opt \ |  | ||||||
| 	                     -p techmap -p opt tests/simple/fiedler-cooley.v |  | ||||||
| 
 |  | ||||||
| or using a simple synthesis script: | or using a simple synthesis script: | ||||||
| 
 | 
 | ||||||
| 	$ cat synth.ys | 	$ cat synth.ys | ||||||
| 	read_verilog tests/simple/fiedler-cooley.v | 	read -sv tests/simple/fiedler-cooley.v | ||||||
| 	hierarchy; proc; opt; techmap; opt | 	hierarchy -top up3down5 | ||||||
|  | 	proc; opt; techmap; opt | ||||||
| 	write_verilog synth.v | 	write_verilog synth.v | ||||||
| 
 | 
 | ||||||
| 	$ ./yosys synth.ys | 	$ ./yosys synth.ys | ||||||
| 
 | 
 | ||||||
| It is also possible to only have the synthesis commands but not the read/write |  | ||||||
| commands in the synthesis script: |  | ||||||
| 
 |  | ||||||
| 	$ cat synth.ys |  | ||||||
| 	hierarchy; proc; opt; techmap; opt |  | ||||||
| 
 |  | ||||||
| 	$ ./yosys -o synth.v tests/simple/fiedler-cooley.v synth.ys |  | ||||||
| 
 |  | ||||||
| The following very basic synthesis script should work well with all designs: |  | ||||||
| 
 |  | ||||||
| 	# check design hierarchy |  | ||||||
| 	hierarchy |  | ||||||
| 
 |  | ||||||
| 	# translate processes (always blocks) |  | ||||||
| 	proc; opt |  | ||||||
| 
 |  | ||||||
| 	# detect and optimize FSM encodings |  | ||||||
| 	fsm; opt |  | ||||||
| 
 |  | ||||||
| 	# implement memories (arrays) |  | ||||||
| 	memory; opt |  | ||||||
| 
 |  | ||||||
| 	# convert to gate logic |  | ||||||
| 	techmap; opt |  | ||||||
| 
 |  | ||||||
| If ABC is enabled in the Yosys build configuration and a cell library is given | If ABC is enabled in the Yosys build configuration and a cell library is given | ||||||
| in the liberty file ``mycells.lib``, the following synthesis script will | in the liberty file ``mycells.lib``, the following synthesis script will | ||||||
| synthesize for the given cell library: | synthesize for the given cell library: | ||||||
| 
 | 
 | ||||||
|  | 	# read design | ||||||
|  | 	read -sv tests/simple/fiedler-cooley.v | ||||||
|  | 	hierarchy -top up3down5 | ||||||
|  | 
 | ||||||
| 	# the high-level stuff | 	# the high-level stuff | ||||||
| 	hierarchy; proc; fsm; opt; memory; opt | 	proc; fsm; opt; memory; opt | ||||||
| 
 | 
 | ||||||
| 	# mapping to internal cell library | 	# mapping to internal cell library | ||||||
| 	techmap; opt | 	techmap; opt | ||||||
|  | @ -222,7 +194,8 @@ synthesize for the given cell library: | ||||||
| 	clean | 	clean | ||||||
| 
 | 
 | ||||||
| If you do not have a liberty file but want to test this synthesis script, | If you do not have a liberty file but want to test this synthesis script, | ||||||
| you can use the file ``examples/cmos/cmos_cells.lib`` from the yosys sources. | you can use the file ``examples/cmos/cmos_cells.lib`` from the yosys sources | ||||||
|  | as simple example. | ||||||
| 
 | 
 | ||||||
| Liberty file downloads for and information about free and open ASIC standard | Liberty file downloads for and information about free and open ASIC standard | ||||||
| cell libraries can be found here: | cell libraries can be found here: | ||||||
|  | @ -231,20 +204,18 @@ cell libraries can be found here: | ||||||
| - http://www.vlsitechnology.org/synopsys/vsclib013.lib | - http://www.vlsitechnology.org/synopsys/vsclib013.lib | ||||||
| 
 | 
 | ||||||
| The command ``synth`` provides a good default synthesis script (see | The command ``synth`` provides a good default synthesis script (see | ||||||
| ``help synth``).  If possible a synthesis script should borrow from ``synth``. | ``help synth``): | ||||||
| For example: |  | ||||||
| 
 | 
 | ||||||
| 	# the high-level stuff | 	read -sv tests/simple/fiedler-cooley.v | ||||||
| 	hierarchy | 	synth -top up3down5 | ||||||
| 	synth -run coarse |  | ||||||
| 
 | 
 | ||||||
| 	# mapping to internal cells | 	# mapping to target cells | ||||||
| 	techmap; opt -fast |  | ||||||
| 	dfflibmap -liberty mycells.lib | 	dfflibmap -liberty mycells.lib | ||||||
| 	abc -liberty mycells.lib | 	abc -liberty mycells.lib | ||||||
| 	clean | 	clean | ||||||
| 
 | 
 | ||||||
| Yosys is under construction. A more detailed documentation will follow. | The command ``prep`` provides a good default word-level synthesis script, as | ||||||
|  | used in SMT-based formal verification. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| Unsupported Verilog-2005 Features | Unsupported Verilog-2005 Features | ||||||
|  |  | ||||||
|  | @ -2484,7 +2484,7 @@ struct ReadPass : public Pass { | ||||||
| 				args[0] = "verific"; | 				args[0] = "verific"; | ||||||
| 			} else { | 			} else { | ||||||
| 				args[0] = "read_verilog"; | 				args[0] = "read_verilog"; | ||||||
| 				args.erase(args.begin()+1, args.begin()+2); | 				args[1] = "-defer"; | ||||||
| 			} | 			} | ||||||
| 			Pass::call(design, args); | 			Pass::call(design, args); | ||||||
| 			return; | 			return; | ||||||
|  | @ -2498,6 +2498,7 @@ struct ReadPass : public Pass { | ||||||
| 				if (args[1] == "-formal") | 				if (args[1] == "-formal") | ||||||
| 					args.insert(args.begin()+1, std::string()); | 					args.insert(args.begin()+1, std::string()); | ||||||
| 				args[1] = "-sv"; | 				args[1] = "-sv"; | ||||||
|  | 				args.insert(args.begin()+1, "-defer"); | ||||||
| 			} | 			} | ||||||
| 			Pass::call(design, args); | 			Pass::call(design, args); | ||||||
| 			return; | 			return; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue