mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	Use attributes instead of params
This commit is contained in:
		
							parent
							
								
									9bfe924e17
								
							
						
					
					
						commit
						e301440a0b
					
				
					 2 changed files with 37 additions and 41 deletions
				
			
		|  | @ -646,12 +646,8 @@ void abc9_module(RTLIL::Design *design, RTLIL::Module *current_module, std::stri | |||
| 				cell->parameters = existing_cell->parameters; | ||||
| 				cell->attributes = existing_cell->attributes; | ||||
| 
 | ||||
| 				auto it = cell->parameters.find("\\$abc_flop_clk_pol"); | ||||
| 				if (it != cell->parameters.end()) | ||||
| 					cell->parameters.erase(it); | ||||
| 				it = cell->parameters.find("\\$abc_flop_en_pol"); | ||||
| 				if (it != cell->parameters.end()) | ||||
| 					cell->parameters.erase(it); | ||||
| 				cell->attributes.erase("\\abc_flop_clk_pol"); | ||||
| 				cell->attributes.erase("\\abc_flop_en_pol"); | ||||
| 			} | ||||
| 			else { | ||||
| 				cell->parameters = mapped_cell->parameters; | ||||
|  | @ -1265,14 +1261,32 @@ struct Abc9Pass : public Pass { | |||
| 						continue; | ||||
| 				} | ||||
| 
 | ||||
| 				auto jt = cell->parameters.find("\\$abc_flop_clk_pol"); | ||||
| 				auto jt = cell->attributes.find("\\abc_flop_clk_pol"); | ||||
| 				if (jt == cell->parameters.end()) | ||||
| 					log_error("'$abc_flop_clk_pol' parameter not found on module '%s'.\n", log_id(cell->type)); | ||||
| 				bool this_clk_pol = jt->second.as_bool(); | ||||
| 					log_error("'abc_flop_clk_pol' attribute not found on module '%s'.\n", log_id(cell->type)); | ||||
| 				bool this_clk_pol; | ||||
| 				if (jt->second.flags == RTLIL::ConstFlags::CONST_FLAG_STRING) { | ||||
| 					auto param = jt->second.decode_string(); | ||||
| 					auto kt = cell->parameters.find(param); | ||||
| 					if (kt == cell->parameters.end()) | ||||
| 						log_error("'abc_flop_clk_pol' value '%s' is not a parameter on module '%s'.\n", param.c_str(), log_id(cell->type)); | ||||
| 					this_clk_pol = kt->second.as_bool(); | ||||
| 				} | ||||
| 				else | ||||
| 					this_clk_pol = jt->second.as_bool(); | ||||
| 				jt = cell->parameters.find("\\$abc_flop_en_pol"); | ||||
| 				if (jt == cell->parameters.end()) | ||||
| 					log_error("'$abc_flop_en_pol' parameter not found on module '%s'.\n", log_id(cell->type)); | ||||
| 				bool this_en_pol = jt->second.as_bool(); | ||||
| 					log_error("'abc_flop_en_pol' attribute not found on module '%s'.\n", log_id(cell->type)); | ||||
| 				bool this_en_pol; | ||||
| 				if (jt->second.flags == RTLIL::ConstFlags::CONST_FLAG_STRING) { | ||||
| 					auto param = jt->second.decode_string(); | ||||
| 					auto kt = cell->parameters.find(param); | ||||
| 					if (kt == cell->parameters.end()) | ||||
| 						log_error("'abc_flop_en_pol' value '%s' is not a parameter on module '%s'.\n", param.c_str(), log_id(cell->type)); | ||||
| 					this_en_pol = kt->second.as_bool(); | ||||
| 				} | ||||
| 				else | ||||
| 					this_en_pol = jt->second.as_bool(); | ||||
| 
 | ||||
| 				const auto &data = it->second; | ||||
| 				key = clkdomain_t(this_clk_pol, assign_map(cell->getPort(data.first)), this_en_pol, assign_map(cell->getPort(data.second))); | ||||
|  |  | |||
|  | @ -26,13 +26,12 @@ module FDRE (output reg Q, input C, CE, D, R); | |||
|   parameter [0:0] IS_D_INVERTED = 1'b0; | ||||
|   parameter [0:0] IS_R_INVERTED = 1'b0; | ||||
|   wire \$nextQ ; | ||||
|   (* abc_flop_clk_pol="!IS_C_INVERTED", abc_flop_en_pol=1 *) | ||||
|   \$__ABC_FDRE #( | ||||
|     .INIT(INIT), | ||||
|     .IS_C_INVERTED(IS_C_INVERTED), | ||||
|     .IS_D_INVERTED(IS_D_INVERTED), | ||||
|     .IS_R_INVERTED(IS_R_INVERTED), | ||||
|     .\$abc_flop_clk_pol (!IS_C_INVERTED), | ||||
|     .\$abc_flop_en_pol (1'b1) | ||||
|     .IS_R_INVERTED(IS_R_INVERTED) | ||||
|   ) _TECHMAP_REPLACE_ ( | ||||
|     .D(D), .Q(\$nextQ ), .\$pastQ (Q), .C(C), .CE(CE), .R(R) | ||||
|   ); | ||||
|  | @ -41,9 +40,8 @@ endmodule | |||
| module FDRE_1 (output reg Q, input C, CE, D, R); | ||||
|   parameter [0:0] INIT = 1'b0; | ||||
|   wire \$nextQ ; | ||||
|   \$__ABC_FDRE_1 #(.INIT(|0), | ||||
|     .\$abc_flop_clk_pol (1'b1), | ||||
|     .\$abc_flop_en_pol (1'b1) | ||||
|   (* abc_flop_clk_pol=1, abc_flop_en_pol=1 *) | ||||
|   \$__ABC_FDRE_1 #(.INIT(|0) | ||||
|   ) _TECHMAP_REPLACE_ ( | ||||
|     .D(D), .Q(\$nextQ ), .\$pastQ (Q), .C(C), .CE(CE), .R(R) | ||||
|   ); | ||||
|  | @ -56,13 +54,12 @@ module FDCE (output reg Q, input C, CE, D, CLR); | |||
|   parameter [0:0] IS_D_INVERTED = 1'b0; | ||||
|   parameter [0:0] IS_CLR_INVERTED = 1'b0; | ||||
|   wire \$nextQ , \$currQ ; | ||||
|   (* abc_flop_clk_pol="!IS_C_INVERTED", abc_flop_en_pol=1 *) | ||||
|   \$__ABC_FDCE #( | ||||
|     .INIT(INIT), | ||||
|     .IS_C_INVERTED(IS_C_INVERTED), | ||||
|     .IS_D_INVERTED(IS_D_INVERTED), | ||||
|     .IS_CLR_INVERTED(IS_CLR_INVERTED), | ||||
|     .\$abc_flop_clk_pol (!IS_C_INVERTED), | ||||
|     .\$abc_flop_en_pol (1'b1) | ||||
|     .IS_CLR_INVERTED(IS_CLR_INVERTED) | ||||
|   ) _TECHMAP_REPLACE_ ( | ||||
|     .D(D), .Q(\$nextQ ), .\$pastQ (Q), .C(C), .CE(CE), .CLR(CLR) | ||||
|   ); | ||||
|  | @ -72,10 +69,9 @@ endmodule | |||
| module FDCE_1 (output reg Q, input C, CE, D, CLR); | ||||
|   parameter [0:0] INIT = 1'b0; | ||||
|   wire \$nextQ , \$currQ ; | ||||
|   (* abc_flop_clk_pol=1, abc_flop_en_pol=1 *) | ||||
|   \$__ABC_FDCE_1 #( | ||||
|     .INIT(INIT), | ||||
|     .\$abc_flop_clk_pol (1'b1), | ||||
|     .\$abc_flop_en_pol (1'b1) | ||||
|     .INIT(INIT) | ||||
|   ) _TECHMAP_REPLACE_ ( | ||||
|     .D(D), .Q(\$nextQ ), .\$pastQ (Q), .C(C), .CE(CE), .CLR(CLR) | ||||
|   ); | ||||
|  | @ -89,13 +85,12 @@ module FDPE (output reg Q, input C, CE, D, PRE); | |||
|   parameter [0:0] IS_D_INVERTED = 1'b0; | ||||
|   parameter [0:0] IS_PRE_INVERTED = 1'b0; | ||||
|   wire \$nextQ , \$currQ ; | ||||
|   (* abc_flop_clk_pol="!IS_C_INVERTED", abc_flop_en_pol=1 *) | ||||
|   \$__ABC_FDPE #( | ||||
|     .INIT(INIT), | ||||
|     .IS_C_INVERTED(IS_C_INVERTED), | ||||
|     .IS_D_INVERTED(IS_D_INVERTED), | ||||
|     .IS_PRE_INVERTED(IS_PRE_INVERTED), | ||||
|     .\$abc_flop_clk_pol (!IS_C_INVERTED), | ||||
|     .\$abc_flop_en_pol (1'b1) | ||||
|     .IS_PRE_INVERTED(IS_PRE_INVERTED) | ||||
|   ) _TECHMAP_REPLACE_ ( | ||||
|     .D(D), .Q(\$nextQ ), .\$pastQ (Q), .C(C), .CE(CE), .PRE(PRE) | ||||
|   ); | ||||
|  | @ -105,10 +100,9 @@ endmodule | |||
| module FDPE_1 (output reg Q, input C, CE, D, PRE); | ||||
|   parameter [0:0] INIT = 1'b0; | ||||
|   wire \$nextQ , \$currQ ; | ||||
|   (* abc_flop_clk_pol=1, abc_flop_en_pol=1 *) | ||||
|   \$__ABC_FDPE_1 #( | ||||
|     .INIT(INIT), | ||||
|     .\$abc_flop_clk_pol (1'b1), | ||||
|     .\$abc_flop_en_pol (1'b1) | ||||
|     .INIT(INIT) | ||||
|   ) _TECHMAP_REPLACE_ ( | ||||
|     .D(D), .Q(\$nextQ ), .\$pastQ (Q), .C(C), .CE(CE), .PRE(PRE) | ||||
|   ); | ||||
|  | @ -134,8 +128,6 @@ module \$__ABC_FDRE ((* abc_flop_q *)   output Q, | |||
|   parameter [0:0] IS_C_INVERTED = 1'b0; | ||||
|   parameter [0:0] IS_D_INVERTED = 1'b0; | ||||
|   parameter [0:0] IS_R_INVERTED = 1'b0; | ||||
|   parameter \$abc_flop_clk_pol = ~IS_C_INVERTED; | ||||
|   parameter \$abc_flop_en_pol = 1'b1; | ||||
|   assign Q = (R ^ IS_R_INVERTED) ? 1'b0 : (CE ? (D ^ IS_D_INVERTED) : \$pastQ ); | ||||
| endmodule | ||||
| 
 | ||||
|  | @ -146,8 +138,6 @@ module \$__ABC_FDRE_1 ((* abc_flop_q *)   output Q, | |||
|                        (* abc_flop_d *)   input D, | ||||
|                        input R, \$pastQ ); | ||||
|   parameter [0:0] INIT = 1'b0; | ||||
|   parameter \$abc_flop_clk_pol = 1'b0; | ||||
|   parameter \$abc_flop_en_pol = 1'b1; | ||||
|   assign Q = R ? 1'b0 : (CE ? D : \$pastQ ); | ||||
| endmodule | ||||
| 
 | ||||
|  | @ -161,8 +151,6 @@ module \$__ABC_FDCE ((* abc_flop_q *)   output Q, | |||
|   parameter [0:0] IS_C_INVERTED = 1'b0; | ||||
|   parameter [0:0] IS_D_INVERTED = 1'b0; | ||||
|   parameter [0:0] IS_CLR_INVERTED = 1'b0; | ||||
|   parameter \$abc_flop_clk_pol = ~IS_C_INVERTED; | ||||
|   parameter \$abc_flop_en_pol = 1'b1; | ||||
|   assign Q = (CE && !(CLR ^ IS_CLR_INVERTED)) ? (D ^ IS_D_INVERTED) : \$pastQ ; | ||||
| endmodule | ||||
| 
 | ||||
|  | @ -173,8 +161,6 @@ module \$__ABC_FDCE_1 ((* abc_flop_q *)   output Q, | |||
|                        (* abc_flop_d *)   input D, | ||||
|                        input CLR, \$pastQ ); | ||||
|   parameter [0:0] INIT = 1'b0; | ||||
|   parameter \$abc_flop_clk_pol = 1'b0; | ||||
|   parameter \$abc_flop_en_inv = 1'b1; | ||||
|   assign Q = (CE && !CLR) ? D : \$pastQ ; | ||||
| endmodule | ||||
| 
 | ||||
|  | @ -188,8 +174,6 @@ module \$__ABC_FDPE ((* abc_flop_q *)   output Q, | |||
|   parameter [0:0] IS_C_INVERTED = 1'b0; | ||||
|   parameter [0:0] IS_D_INVERTED = 1'b0; | ||||
|   parameter [0:0] IS_PRE_INVERTED = 1'b0; | ||||
|   parameter \$abc_flop_clk_pol = ~IS_C_INVERTED; | ||||
|   parameter \$abc_flop_en_pol = 1'b1; | ||||
|   assign Q = (CE && !(PRE ^ IS_PRE_INVERTED)) ? (D ^ IS_D_INVERTED) : \$pastQ ; | ||||
| endmodule | ||||
| 
 | ||||
|  | @ -200,8 +184,6 @@ module \$__ABC_FDPE_1 ((* abc_flop_q *)   output Q, | |||
|                        (* abc_flop_d *)   input D, | ||||
|                        input PRE, \$pastQ ); | ||||
|   parameter [0:0] INIT = 1'b0; | ||||
|   parameter \$abc_flop_clk_pol = 1'b0; | ||||
|   parameter \$abc_flop_en_pol = 1'b1; | ||||
|   assign Q = (CE && !PRE) ? D : \$pastQ ; | ||||
| endmodule | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue