mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	Add flooring modulo operator
The $div and $mod cells use truncating division semantics (rounding towards 0), as defined by e.g. Verilog. Another rounding mode, flooring (rounding towards negative infinity), can be used in e.g. VHDL. The new $modfloor cell provides this flooring modulo (also known as "remainder" in several languages, but this name is ambiguous). This commit also fixes the handling of $mod in opt_expr, which was previously optimized as if it was $modfloor.
This commit is contained in:
		
							parent
							
								
									0d99522b3c
								
							
						
					
					
						commit
						17163cf43a
					
				
					 23 changed files with 280 additions and 37 deletions
				
			
		|  | @ -585,6 +585,7 @@ struct FirrtlWorker | |||
| 					firrtl_is_signed = a_signed | b_signed; | ||||
| 					firrtl_width = a_width; | ||||
| 				} else if (cell->type == ID($mod)) { | ||||
| 					// "rem" = truncating modulo
 | ||||
| 					primop = "rem"; | ||||
| 					firrtl_width = min(a_width, b_width); | ||||
| 				} else if (cell->type.in(ID($and), ID($_AND_))) { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue