mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 11:42:30 +00:00 
			
		
		
		
	Fix btor back-end shift handling
This commit is contained in:
		
							parent
							
								
									133a0f4978
								
							
						
					
					
						commit
						cc119b5232
					
				
					 2 changed files with 7 additions and 5 deletions
				
			
		|  | @ -114,7 +114,7 @@ struct BtorWorker | |||
| 		cell_recursion_guard.insert(cell); | ||||
| 		btorf_push(log_id(cell)); | ||||
| 
 | ||||
| 		if (cell->type.in("$add", "$sub", "$and", "$or", "$xor", "$xnor", "$shl", "$sshl", "$shr", "$sshr", | ||||
| 		if (cell->type.in("$add", "$sub", "$and", "$or", "$xor", "$xnor", "$shl", "$sshl", "$shr", "$sshr", "$shift", "$shiftx", | ||||
| 				"$_AND_", "$_NAND_", "$_OR_", "$_NOR_", "$_XOR_", "$_XNOR_")) | ||||
| 		{ | ||||
| 			string btor_op; | ||||
|  | @ -123,6 +123,7 @@ struct BtorWorker | |||
| 			if (cell->type.in("$shl", "$sshl")) btor_op = "sll"; | ||||
| 			if (cell->type == "$shr") btor_op = "srl"; | ||||
| 			if (cell->type == "$sshr") btor_op = "sra"; | ||||
| 			// if (cell->type.in("$shift", "$shiftx")) btor_op = "shift";
 | ||||
| 			if (cell->type.in("$and", "$_AND_")) btor_op = "and"; | ||||
| 			if (cell->type.in("$or", "$_OR_")) btor_op = "or"; | ||||
| 			if (cell->type.in("$xor", "$_XOR_")) btor_op = "xor"; | ||||
|  | @ -138,10 +139,11 @@ struct BtorWorker | |||
| 			bool a_signed = cell->hasParam("\\A_SIGNED") ? cell->getParam("\\A_SIGNED").as_bool() : false; | ||||
| 			bool b_signed = cell->hasParam("\\B_SIGNED") ? cell->getParam("\\B_SIGNED").as_bool() : false; | ||||
| 
 | ||||
| 			if (cell->type.in("$shl", "$shr")) { | ||||
| 				a_signed = false; | ||||
| 			if (cell->type.in("$shl", "$sshl", "$shr", "$sshr")) | ||||
| 				b_signed = false; | ||||
| 			} | ||||
| 
 | ||||
| 			if (cell->type == "$sshr" && !a_signed) | ||||
| 				btor_op = "srl"; | ||||
| 
 | ||||
| 			int sid = get_bv_sid(width); | ||||
| 			int nid_a = get_sig_nid(cell->getPort("\\A"), width, a_signed); | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ rm -rf test_cells.tmp | |||
| mkdir -p test_cells.tmp | ||||
| cd test_cells.tmp | ||||
| 
 | ||||
| ../../../yosys -p 'test_cell -n 5 -w test all /$alu /$fa /$lcu /$lut /$sop /$macc /$mul /$div /$mod /$shl /$shr /$sshl /$sshr /$shift /$shiftx' | ||||
| ../../../yosys -p 'test_cell -n 5 -w test all /$alu /$fa /$lcu /$lut /$sop /$macc /$mul /$div /$mod /$shift /$shiftx' | ||||
| 
 | ||||
| for fn in test_*.il; do | ||||
| 	../../../yosys -p " | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue