mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-30 19:22:31 +00:00 
			
		
		
		
	
							parent
							
								
									846c79b312
								
							
						
					
					
						commit
						b4d76309e1
					
				
					 2 changed files with 13 additions and 4 deletions
				
			
		|  | @ -2619,7 +2619,16 @@ void RTLIL::Cell::setParam(RTLIL::IdString paramname, RTLIL::Const value) | ||||||
| 
 | 
 | ||||||
| const RTLIL::Const &RTLIL::Cell::getParam(RTLIL::IdString paramname) const | const RTLIL::Const &RTLIL::Cell::getParam(RTLIL::IdString paramname) const | ||||||
| { | { | ||||||
| 	return parameters.at(paramname); | 	static const RTLIL::Const empty; | ||||||
|  | 	const auto &it = parameters.find(paramname); | ||||||
|  | 	if (it != parameters.end()) | ||||||
|  | 		return it->second; | ||||||
|  | 	if (module && module->design) { | ||||||
|  | 		RTLIL::Module *m = module->design->module(type); | ||||||
|  | 		if (m) | ||||||
|  | 			return m->parameter_default_values.at(paramname, empty); | ||||||
|  | 	} | ||||||
|  | 	return empty; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void RTLIL::Cell::sort() | void RTLIL::Cell::sort() | ||||||
|  |  | ||||||
|  | @ -209,7 +209,7 @@ lut_sigin_done: | ||||||
| 					continue; | 					continue; | ||||||
| 				LutData lut_d = it_D->second.first; | 				LutData lut_d = it_D->second.first; | ||||||
| 				Cell *cell_d = it_D->second.second; | 				Cell *cell_d = it_D->second.second; | ||||||
| 				if (cell->hasParam(ID(IS_D_INVERTED)) && cell->getParam(ID(IS_D_INVERTED)).as_bool()) { | 				if (cell->getParam(ID(IS_D_INVERTED)).as_bool()) { | ||||||
| 					// Flip all bits in the LUT.
 | 					// Flip all bits in the LUT.
 | ||||||
| 					for (int i = 0; i < GetSize(lut_d.first); i++) | 					for (int i = 0; i < GetSize(lut_d.first); i++) | ||||||
| 						lut_d.first.bits[i] = (lut_d.first.bits[i] == State::S1) ? State::S0 : State::S1; | 						lut_d.first.bits[i] = (lut_d.first.bits[i] == State::S1) ? State::S0 : State::S1; | ||||||
|  | @ -249,7 +249,7 @@ lut_sigin_done: | ||||||
| 				if (has_s) { | 				if (has_s) { | ||||||
| 					SigBit sig_S = sigmap(cell->getPort(ID::S)); | 					SigBit sig_S = sigmap(cell->getPort(ID::S)); | ||||||
| 					LutData lut_s = LutData(Const(2, 2), {sig_S}); | 					LutData lut_s = LutData(Const(2, 2), {sig_S}); | ||||||
| 					bool inv_s = cell->hasParam(ID(IS_S_INVERTED)) && cell->getParam(ID(IS_S_INVERTED)).as_bool(); | 					bool inv_s = cell->getParam(ID(IS_S_INVERTED)).as_bool(); | ||||||
| 					auto it_S = bit_to_lut.find(sig_S); | 					auto it_S = bit_to_lut.find(sig_S); | ||||||
| 					if (it_S != bit_to_lut.end()) | 					if (it_S != bit_to_lut.end()) | ||||||
| 						lut_s = it_S->second.first; | 						lut_s = it_S->second.first; | ||||||
|  | @ -271,7 +271,7 @@ lut_sigin_done: | ||||||
| 				if (has_r) { | 				if (has_r) { | ||||||
| 					SigBit sig_R = sigmap(cell->getPort(ID::R)); | 					SigBit sig_R = sigmap(cell->getPort(ID::R)); | ||||||
| 					LutData lut_r = LutData(Const(2, 2), {sig_R}); | 					LutData lut_r = LutData(Const(2, 2), {sig_R}); | ||||||
| 					bool inv_r = cell->hasParam(ID(IS_R_INVERTED)) && cell->getParam(ID(IS_R_INVERTED)).as_bool(); | 					bool inv_r = cell->getParam(ID(IS_R_INVERTED)).as_bool(); | ||||||
| 					auto it_R = bit_to_lut.find(sig_R); | 					auto it_R = bit_to_lut.find(sig_R); | ||||||
| 					if (it_R != bit_to_lut.end()) | 					if (it_R != bit_to_lut.end()) | ||||||
| 						lut_r = it_R->second.first; | 						lut_r = it_R->second.first; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue