mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 11:42:30 +00:00 
			
		
		
		
	Added proper dumping of signed/unsigned parameters to verilog backend
This commit is contained in:
		
							parent
							
								
									0ef22c7609
								
							
						
					
					
						commit
						41205afc39
					
				
					 1 changed files with 6 additions and 4 deletions
				
			
		|  | @ -149,7 +149,7 @@ bool is_reg_wire(RTLIL::SigSpec sig, std::string ®_name) | ||||||
| 	return true; | 	return true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void dump_const(FILE *f, RTLIL::Const &data, int width = -1, int offset = 0, bool no_decimal = false) | void dump_const(FILE *f, RTLIL::Const &data, int width = -1, int offset = 0, bool no_decimal = false, bool set_signed = false) | ||||||
| { | { | ||||||
| 	if (width < 0) | 	if (width < 0) | ||||||
| 		width = data.bits.size() - offset; | 		width = data.bits.size() - offset; | ||||||
|  | @ -163,10 +163,11 @@ void dump_const(FILE *f, RTLIL::Const &data, int width = -1, int offset = 0, boo | ||||||
| 				if (data.bits[i] == RTLIL::S1) | 				if (data.bits[i] == RTLIL::S1) | ||||||
| 					val |= 1 << (i - offset); | 					val |= 1 << (i - offset); | ||||||
| 			} | 			} | ||||||
| 			fprintf(f, "%s32'sd%u", val < 0 ? "-" : "", abs(val)); | 			// fprintf(f, "%s32'sd%u", val < 0 ? "-" : "", abs(val));
 | ||||||
|  | 			fprintf(f, "%d", val); | ||||||
| 		} else { | 		} else { | ||||||
| 	dump_bits: | 	dump_bits: | ||||||
| 			fprintf(f, "%d'b", width); | 			fprintf(f, "%d'%sb", width, set_signed ? "s" : ""); | ||||||
| 			if (width == 0) | 			if (width == 0) | ||||||
| 				fprintf(f, "0"); | 				fprintf(f, "0"); | ||||||
| 			for (int i = offset+width-1; i >= offset; i--) { | 			for (int i = offset+width-1; i >= offset; i--) { | ||||||
|  | @ -638,7 +639,8 @@ void dump_cell(FILE *f, std::string indent, RTLIL::Cell *cell) | ||||||
| 			if (it != cell->parameters.begin()) | 			if (it != cell->parameters.begin()) | ||||||
| 				fprintf(f, ","); | 				fprintf(f, ","); | ||||||
| 			fprintf(f, "\n%s  .%s(", indent.c_str(), id(it->first).c_str()); | 			fprintf(f, "\n%s  .%s(", indent.c_str(), id(it->first).c_str()); | ||||||
| 			dump_const(f, it->second); | 			bool is_signed = cell->signed_parameters.count(it->first) > 0; | ||||||
|  | 			dump_const(f, it->second, -1, 0, !is_signed, is_signed); | ||||||
| 			fprintf(f, ")"); | 			fprintf(f, ")"); | ||||||
| 		} | 		} | ||||||
| 		fprintf(f, "\n%s" ")", indent.c_str()); | 		fprintf(f, "\n%s" ")", indent.c_str()); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue