mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 11:42:30 +00:00 
			
		
		
		
	Call 'wreduce' after mul2dsp to avoid unextend()
This commit is contained in:
		
							parent
							
								
									93363c94a2
								
							
						
					
					
						commit
						53ea5daa42
					
				
					 2 changed files with 5 additions and 5 deletions
				
			
		|  | @ -1,6 +1,5 @@ | |||
| pattern xilinx_dsp_pack | ||||
| 
 | ||||
| udata <std::function<SigSpec(const SigSpec&)>> unextend | ||||
| state <SigBit> clock | ||||
| state <SigSpec> sigA sigB sigC sigD sigM sigP | ||||
| state <IdString> postAddAB postAddMuxAB | ||||
|  | @ -25,7 +24,7 @@ match dsp | |||
| endmatch | ||||
| 
 | ||||
| code sigA sigB sigC sigD sigM clock | ||||
| 	unextend = [](const SigSpec &sig) { | ||||
| 	auto unextend = [](const SigSpec &sig) { | ||||
| 		int i; | ||||
| 		for (i = GetSize(sig)-1; i > 0; i--) | ||||
| 			if (sig[i] != sig[i-1]) | ||||
|  | @ -272,9 +271,9 @@ match postAdd | |||
| 	filter !ffMcemux || nusers(port(postAdd, AB)) == 3 | ||||
| 
 | ||||
| 	index <SigBit> port(postAdd, AB)[0] === sigP[0] | ||||
| 	filter GetSize(unextend(port(postAdd, AB))) <= GetSize(sigP) | ||||
| 	filter unextend(port(postAdd, AB)) == sigP.extract(0, GetSize(unextend(port(postAdd, AB)))) | ||||
| 	filter nusers(sigP.extract_end(GetSize(unextend(port(postAdd, AB))))) <= 1 | ||||
| 	filter GetSize(port(postAdd, AB)) <= GetSize(sigP) | ||||
| 	filter port(postAdd, AB) == sigP.extract(0, GetSize(port(postAdd, AB))) | ||||
| 	filter nusers(sigP.extract_end(GetSize(port(postAdd, AB)))) <= 1 | ||||
| 	set postAddAB AB | ||||
| 	optional | ||||
| endmatch | ||||
|  |  | |||
|  | @ -346,6 +346,7 @@ struct SynthXilinxPass : public ScriptPass | |||
| 						"-D DSP_A_MINWIDTH=2 -D DSP_B_MINWIDTH=2 " // Blocks Nx1 multipliers
 | ||||
| 						"-D DSP_Y_MINWIDTH=9 " // UG901 suggests small multiplies are those 4x4 and smaller
 | ||||
| 						"-D DSP_SIGNEDONLY=1 -D DSP_NAME=$__MUL25X18"); | ||||
| 				run("wreduce t:$add"); | ||||
| 				run("xilinx_dsp"); | ||||
| 				run("chtype -set $mul t:$__soft_mul"); | ||||
| 			} | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue