mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 13:29:12 +00:00 
			
		
		
		
	Merge pull request #1488 from whitequark/flowmap-fixes
flowmap: fix a few crashes
This commit is contained in:
		
						commit
						ab0fb19cff
					
				
					 1 changed files with 3 additions and 2 deletions
				
			
		| 
						 | 
					@ -394,7 +394,7 @@ struct FlowGraph
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pair<pool<RTLIL::SigBit>, pool<RTLIL::SigBit>> edge_cut()
 | 
						pair<pool<RTLIL::SigBit>, pool<RTLIL::SigBit>> edge_cut()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		pool<RTLIL::SigBit> x, xi;
 | 
							pool<RTLIL::SigBit> x = {source}, xi; // X and X̅ in the paper
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		NodePrime source_prime = {source, true};
 | 
							NodePrime source_prime = {source, true};
 | 
				
			||||||
		pool<NodePrime> visited;
 | 
							pool<NodePrime> visited;
 | 
				
			||||||
| 
						 | 
					@ -437,6 +437,7 @@ struct FlowGraph
 | 
				
			||||||
		for (auto collapsed_node : collapsed[sink])
 | 
							for (auto collapsed_node : collapsed[sink])
 | 
				
			||||||
			xi.insert(collapsed_node);
 | 
								xi.insert(collapsed_node);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							log_assert(x[source] && !xi[source]);
 | 
				
			||||||
		log_assert(!x[sink] && xi[sink]);
 | 
							log_assert(!x[sink] && xi[sink]);
 | 
				
			||||||
		return {x, xi};
 | 
							return {x, xi};
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -1050,7 +1051,7 @@ struct FlowmapWorker
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				auto cut_inputs = cut_lut_at_gate(lut, lut_gate);
 | 
									auto cut_inputs = cut_lut_at_gate(lut, lut_gate);
 | 
				
			||||||
				pool<RTLIL::SigBit> gate_inputs = cut_inputs.first, other_inputs = cut_inputs.second;
 | 
									pool<RTLIL::SigBit> gate_inputs = cut_inputs.first, other_inputs = cut_inputs.second;
 | 
				
			||||||
				if (gate_inputs.empty() && (int)other_inputs.size() == order)
 | 
									if (gate_inputs.empty() && (int)other_inputs.size() >= order)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					if (debug_relax)
 | 
										if (debug_relax)
 | 
				
			||||||
						log("      Breaking would result in a (k+1)-LUT.\n");
 | 
											log("      Breaking would result in a (k+1)-LUT.\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue