mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	Merge pull request #4546 from NachtSpyder04/main
[Docs]:Add new cell type help messages
This commit is contained in:
		
						commit
						d901b28d2c
					
				
					 1 changed files with 159 additions and 0 deletions
				
			
		|  | @ -371,6 +371,12 @@ endmodule | ||||||
| 
 | 
 | ||||||
| // --------------------------------------------------------
 | // --------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
|  | //  |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | ||||||
|  | //-
 | ||||||
|  | //-     $shl (A, B, Y)
 | ||||||
|  | //-
 | ||||||
|  | //- A logical shift-left operation. This corresponds to the Verilog '<<' operator.
 | ||||||
|  | //-
 | ||||||
| module \$shl (A, B, Y); | module \$shl (A, B, Y); | ||||||
| 
 | 
 | ||||||
| parameter A_SIGNED = 0; | parameter A_SIGNED = 0; | ||||||
|  | @ -395,6 +401,12 @@ endmodule | ||||||
| 
 | 
 | ||||||
| // --------------------------------------------------------
 | // --------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
|  | //  |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | ||||||
|  | //-
 | ||||||
|  | //-     $shr (A, B, Y)
 | ||||||
|  | //-
 | ||||||
|  | //- A logical shift-right operation. This corresponds to the Verilog '>>' operator.
 | ||||||
|  | //-
 | ||||||
| module \$shr (A, B, Y); | module \$shr (A, B, Y); | ||||||
| 
 | 
 | ||||||
| parameter A_SIGNED = 0; | parameter A_SIGNED = 0; | ||||||
|  | @ -419,6 +431,13 @@ endmodule | ||||||
| 
 | 
 | ||||||
| // --------------------------------------------------------
 | // --------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
|  | //  |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | ||||||
|  | //-
 | ||||||
|  | //-     $sshl (A, B, Y)
 | ||||||
|  | //-
 | ||||||
|  | //- An arithmatic shift-left operation. 
 | ||||||
|  | //- This corresponds to the Verilog '<<<' operator.
 | ||||||
|  | //-
 | ||||||
| module \$sshl (A, B, Y); | module \$sshl (A, B, Y); | ||||||
| 
 | 
 | ||||||
| parameter A_SIGNED = 0; | parameter A_SIGNED = 0; | ||||||
|  | @ -443,6 +462,13 @@ endmodule | ||||||
| 
 | 
 | ||||||
| // --------------------------------------------------------
 | // --------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
|  | //  |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | ||||||
|  | //-
 | ||||||
|  | //-     $sshr (A, B, Y)
 | ||||||
|  | //-
 | ||||||
|  | //- An arithmatic shift-right operation.
 | ||||||
|  | //- This corresponds to the Verilog '>>>' operator.
 | ||||||
|  | //-
 | ||||||
| module \$sshr (A, B, Y); | module \$sshr (A, B, Y); | ||||||
| 
 | 
 | ||||||
| parameter A_SIGNED = 0; | parameter A_SIGNED = 0; | ||||||
|  | @ -639,6 +665,13 @@ endmodule | ||||||
| 
 | 
 | ||||||
| // --------------------------------------------------------
 | // --------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
|  | //  |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | ||||||
|  | //-
 | ||||||
|  | //-     $lt (A, B, Y)
 | ||||||
|  | //-
 | ||||||
|  | //- A less-than comparison between inputs 'A' and 'B'. 
 | ||||||
|  | //- This corresponds to the Verilog '<' operator.
 | ||||||
|  | //-
 | ||||||
| module \$lt (A, B, Y); | module \$lt (A, B, Y); | ||||||
| 
 | 
 | ||||||
| parameter A_SIGNED = 0; | parameter A_SIGNED = 0; | ||||||
|  | @ -663,6 +696,13 @@ endmodule | ||||||
| 
 | 
 | ||||||
| // --------------------------------------------------------
 | // --------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
|  | //  |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | ||||||
|  | //-
 | ||||||
|  | //-     $le (A, B, Y)
 | ||||||
|  | //-
 | ||||||
|  | //- A less-than-or-equal-to comparison between inputs 'A' and 'B'. 
 | ||||||
|  | //- This corresponds to the Verilog '<=' operator.
 | ||||||
|  | //-
 | ||||||
| module \$le (A, B, Y); | module \$le (A, B, Y); | ||||||
| 
 | 
 | ||||||
| parameter A_SIGNED = 0; | parameter A_SIGNED = 0; | ||||||
|  | @ -687,6 +727,13 @@ endmodule | ||||||
| 
 | 
 | ||||||
| // --------------------------------------------------------
 | // --------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
|  | //  |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | ||||||
|  | //-
 | ||||||
|  | //-     $eq (A, B, Y)
 | ||||||
|  | //-
 | ||||||
|  | //- An equality comparison between inputs 'A' and 'B'. 
 | ||||||
|  | //- This corresponds to the Verilog '==' operator.
 | ||||||
|  | //-
 | ||||||
| module \$eq (A, B, Y); | module \$eq (A, B, Y); | ||||||
| 
 | 
 | ||||||
| parameter A_SIGNED = 0; | parameter A_SIGNED = 0; | ||||||
|  | @ -711,6 +758,13 @@ endmodule | ||||||
| 
 | 
 | ||||||
| // --------------------------------------------------------
 | // --------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
|  | //  |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | ||||||
|  | //-
 | ||||||
|  | //-     $ne (A, B, Y)
 | ||||||
|  | //-
 | ||||||
|  | //- An inequality comparison between inputs 'A' and 'B'. 
 | ||||||
|  | //- This corresponds to the Verilog '!=' operator.
 | ||||||
|  | //-
 | ||||||
| module \$ne (A, B, Y); | module \$ne (A, B, Y); | ||||||
| 
 | 
 | ||||||
| parameter A_SIGNED = 0; | parameter A_SIGNED = 0; | ||||||
|  | @ -735,6 +789,15 @@ endmodule | ||||||
| 
 | 
 | ||||||
| // --------------------------------------------------------
 | // --------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
|  | //  |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | ||||||
|  | //-
 | ||||||
|  | //-     $eqx (A, B, Y)
 | ||||||
|  | //-
 | ||||||
|  | //- An exact equality comparison between inputs 'A' and 'B'. 
 | ||||||
|  | //- This corresponds to the Verilog '===' operator.
 | ||||||
|  | //- Unlike equality comparison that can give 'x' as output, 
 | ||||||
|  | //- an exact equality comparison will strictly give '0' or '1' as output.
 | ||||||
|  | //-
 | ||||||
| module \$eqx (A, B, Y); | module \$eqx (A, B, Y); | ||||||
| 
 | 
 | ||||||
| parameter A_SIGNED = 0; | parameter A_SIGNED = 0; | ||||||
|  | @ -759,6 +822,15 @@ endmodule | ||||||
| 
 | 
 | ||||||
| // --------------------------------------------------------
 | // --------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
|  | //  |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | ||||||
|  | //-
 | ||||||
|  | //-     $nex (A, B, Y)
 | ||||||
|  | //-
 | ||||||
|  | //- An exact inequality comparison between inputs 'A' and 'B'. 
 | ||||||
|  | //- This corresponds to the Verilog '!==' operator.
 | ||||||
|  | //- Unlike inequality comparison that can give 'x' as output, 
 | ||||||
|  | //- an exact inequality comparison will strictly give '0' or '1' as output.
 | ||||||
|  | //-
 | ||||||
| module \$nex (A, B, Y); | module \$nex (A, B, Y); | ||||||
| 
 | 
 | ||||||
| parameter A_SIGNED = 0; | parameter A_SIGNED = 0; | ||||||
|  | @ -783,6 +855,13 @@ endmodule | ||||||
| 
 | 
 | ||||||
| // --------------------------------------------------------
 | // --------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
|  | //  |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | ||||||
|  | //-
 | ||||||
|  | //-     $ge (A, B, Y)
 | ||||||
|  | //-
 | ||||||
|  | //- A greater-than-or-equal-to comparison between inputs 'A' and 'B'.
 | ||||||
|  | //- This corresponds to the Verilog '>=' operator.
 | ||||||
|  | //-
 | ||||||
| module \$ge (A, B, Y); | module \$ge (A, B, Y); | ||||||
| 
 | 
 | ||||||
| parameter A_SIGNED = 0; | parameter A_SIGNED = 0; | ||||||
|  | @ -807,6 +886,13 @@ endmodule | ||||||
| 
 | 
 | ||||||
| // --------------------------------------------------------
 | // --------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
|  | //  |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | ||||||
|  | //-
 | ||||||
|  | //-     $gt (A, B, Y)
 | ||||||
|  | //-
 | ||||||
|  | //- A greater-than comparison between inputs 'A' and 'B'. 
 | ||||||
|  | //- This corresponds to the Verilog '>' operator.
 | ||||||
|  | //-
 | ||||||
| module \$gt (A, B, Y); | module \$gt (A, B, Y); | ||||||
| 
 | 
 | ||||||
| parameter A_SIGNED = 0; | parameter A_SIGNED = 0; | ||||||
|  | @ -831,6 +917,12 @@ endmodule | ||||||
| 
 | 
 | ||||||
| // --------------------------------------------------------
 | // --------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
|  | //  |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | ||||||
|  | //-
 | ||||||
|  | //-     $add (A, B, Y)
 | ||||||
|  | //-
 | ||||||
|  | //-  Addition of inputs 'A' and 'B'. This corresponds to the Verilog '+' operator.
 | ||||||
|  | //-
 | ||||||
| module \$add (A, B, Y); | module \$add (A, B, Y); | ||||||
| 
 | 
 | ||||||
| parameter A_SIGNED = 0; | parameter A_SIGNED = 0; | ||||||
|  | @ -855,6 +947,13 @@ endmodule | ||||||
| 
 | 
 | ||||||
| // --------------------------------------------------------
 | // --------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
|  | //  |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | ||||||
|  | //-
 | ||||||
|  | //-     $sub (A, B, Y)
 | ||||||
|  | //-
 | ||||||
|  | //- Subtraction between inputs 'A' and 'B'.
 | ||||||
|  | //- This corresponds to the Verilog '-' operator.
 | ||||||
|  | //-
 | ||||||
| module \$sub (A, B, Y); | module \$sub (A, B, Y); | ||||||
| 
 | 
 | ||||||
| parameter A_SIGNED = 0; | parameter A_SIGNED = 0; | ||||||
|  | @ -879,6 +978,13 @@ endmodule | ||||||
| 
 | 
 | ||||||
| // --------------------------------------------------------
 | // --------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
|  | //  |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | ||||||
|  | //-
 | ||||||
|  | //-     $mul (A, B, Y)
 | ||||||
|  | //-
 | ||||||
|  | //- Multiplication of inputs 'A' and 'B'.
 | ||||||
|  | //- This corresponds to the Verilog '*' operator.
 | ||||||
|  | //-
 | ||||||
| module \$mul (A, B, Y); | module \$mul (A, B, Y); | ||||||
| 
 | 
 | ||||||
| parameter A_SIGNED = 0; | parameter A_SIGNED = 0; | ||||||
|  | @ -1191,6 +1297,14 @@ endgenerate | ||||||
| endmodule | endmodule | ||||||
| 
 | 
 | ||||||
| // --------------------------------------------------------
 | // --------------------------------------------------------
 | ||||||
|  | 
 | ||||||
|  | //  |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | ||||||
|  | //-
 | ||||||
|  | //-     $pow (A, B, Y)
 | ||||||
|  | //-
 | ||||||
|  | //- Exponentiation of an input (Y = A ** B). 
 | ||||||
|  | //- This corresponds to the Verilog '**' operator.
 | ||||||
|  | //-
 | ||||||
| `ifndef SIMLIB_NOPOW | `ifndef SIMLIB_NOPOW | ||||||
| 
 | 
 | ||||||
| module \$pow (A, B, Y); | module \$pow (A, B, Y); | ||||||
|  | @ -1222,6 +1336,12 @@ endmodule | ||||||
| `endif | `endif | ||||||
| // --------------------------------------------------------
 | // --------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
|  | //  |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | ||||||
|  | //-
 | ||||||
|  | //-     $logic_not (A, Y)
 | ||||||
|  | //-
 | ||||||
|  | //- A logical inverter. This corresponds to the Verilog unary prefix '!' operator.
 | ||||||
|  | //-
 | ||||||
| module \$logic_not (A, Y); | module \$logic_not (A, Y); | ||||||
| 
 | 
 | ||||||
| parameter A_SIGNED = 0; | parameter A_SIGNED = 0; | ||||||
|  | @ -1243,6 +1363,12 @@ endmodule | ||||||
| 
 | 
 | ||||||
| // --------------------------------------------------------
 | // --------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
|  | //  |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | ||||||
|  | //-
 | ||||||
|  | //-     $logic_and (A, B, Y)
 | ||||||
|  | //-
 | ||||||
|  | //- A logical AND. This corresponds to the Verilog '&&' operator.
 | ||||||
|  | //-
 | ||||||
| module \$logic_and (A, B, Y); | module \$logic_and (A, B, Y); | ||||||
| 
 | 
 | ||||||
| parameter A_SIGNED = 0; | parameter A_SIGNED = 0; | ||||||
|  | @ -1267,6 +1393,12 @@ endmodule | ||||||
| 
 | 
 | ||||||
| // --------------------------------------------------------
 | // --------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
|  | //  |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | ||||||
|  | //-
 | ||||||
|  | //-     $logic_or (A, B, Y)
 | ||||||
|  | //-
 | ||||||
|  | //- A logical OR. This corresponds to the Verilog '||' operator.
 | ||||||
|  | //-
 | ||||||
| module \$logic_or (A, B, Y); | module \$logic_or (A, B, Y); | ||||||
| 
 | 
 | ||||||
| parameter A_SIGNED = 0; | parameter A_SIGNED = 0; | ||||||
|  | @ -1306,6 +1438,12 @@ endmodule | ||||||
| 
 | 
 | ||||||
| // --------------------------------------------------------
 | // --------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
|  | //  |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | ||||||
|  | //-
 | ||||||
|  | //-     $concat (A, B, Y)
 | ||||||
|  | //-
 | ||||||
|  | //- Concatenation of inputs into a single output ( Y = {B, A} ).
 | ||||||
|  | //-
 | ||||||
| module \$concat (A, B, Y); | module \$concat (A, B, Y); | ||||||
| 
 | 
 | ||||||
| parameter A_WIDTH = 0; | parameter A_WIDTH = 0; | ||||||
|  | @ -1321,6 +1459,12 @@ endmodule | ||||||
| 
 | 
 | ||||||
| // --------------------------------------------------------
 | // --------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
|  | //  |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | ||||||
|  | //-
 | ||||||
|  | //-     $mux (A, B, S, Y)
 | ||||||
|  | //-
 | ||||||
|  | //- Multiplexer i.e selecting between two inputs based on select signal.
 | ||||||
|  | //-
 | ||||||
| module \$mux (A, B, S, Y); | module \$mux (A, B, S, Y); | ||||||
| 
 | 
 | ||||||
| parameter WIDTH = 0; | parameter WIDTH = 0; | ||||||
|  | @ -1396,6 +1540,13 @@ endmodule | ||||||
| 
 | 
 | ||||||
| // --------------------------------------------------------
 | // --------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
|  | //  |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | ||||||
|  | //-
 | ||||||
|  | //-     $demux (A, S, Y)
 | ||||||
|  | //-
 | ||||||
|  | //- Demultiplexer i.e routing single input to several outputs based on select signal.
 | ||||||
|  | //- Unselected outputs are driven to zero.
 | ||||||
|  | //-
 | ||||||
| module \$demux (A, S, Y); | module \$demux (A, S, Y); | ||||||
| 
 | 
 | ||||||
| parameter WIDTH = 1; | parameter WIDTH = 1; | ||||||
|  | @ -1460,6 +1611,14 @@ endmodule | ||||||
| 
 | 
 | ||||||
| // --------------------------------------------------------
 | // --------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
|  | //  |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 | ||||||
|  | //-
 | ||||||
|  | //-     $tribuf (A, EN, Y)
 | ||||||
|  | //-
 | ||||||
|  | //- A tri-state buffer. 
 | ||||||
|  | //- This buffer conditionally drives the output with the value of the input
 | ||||||
|  | //- based on the enable signal.
 | ||||||
|  | //-
 | ||||||
| module \$tribuf (A, EN, Y); | module \$tribuf (A, EN, Y); | ||||||
| 
 | 
 | ||||||
| parameter WIDTH = 0; | parameter WIDTH = 0; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue