mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 19:52:31 +00:00 
			
		
		
		
	Stop trying to be too smart by prematurely optimising
This commit is contained in:
		
							parent
							
								
									35aaa8d73a
								
							
						
					
					
						commit
						27e5bf5aad
					
				
					 3 changed files with 14 additions and 38 deletions
				
			
		|  | @ -146,17 +146,8 @@ module _80_mul (A, B, Y); | |||
| 				//       reduction' approach also exists... | ||||
| 				if (i == 0) | ||||
| 					assign partial_sum[i] = partial[i]; | ||||
| 				else begin | ||||
| 					// Rewrite the following statement explicitly in order | ||||
| 					//   to save on a call to 'opt_expr -fine' which would | ||||
| 					//   optimise away the '<<' op and trim size of adder | ||||
| 					//assign partial_sum[i] = (partial[i] << i*(`DSP_A_MAXWIDTH_PARTIAL-sign_headroom)) + partial_sum[i-1]; | ||||
| 					if (A_SIGNED && B_SIGNED) | ||||
| 						assign partial_sum[i][Y_WIDTH-1:i*(`DSP_A_MAXWIDTH_PARTIAL-sign_headroom)] = partial[i] + $signed(partial_sum[i-1][Y_WIDTH-1:i*(`DSP_A_MAXWIDTH_PARTIAL-sign_headroom)]); | ||||
| 					else | ||||
| 						assign partial_sum[i][Y_WIDTH-1:i*(`DSP_A_MAXWIDTH_PARTIAL-sign_headroom)] = partial[i] + partial_sum[i-1][Y_WIDTH-1:i*(`DSP_A_MAXWIDTH_PARTIAL-sign_headroom)]; | ||||
| 					assign partial_sum[i][i*(`DSP_A_MAXWIDTH_PARTIAL-sign_headroom)-1:0] = partial_sum[i-1][i*(`DSP_A_MAXWIDTH_PARTIAL-sign_headroom)-1:0]; | ||||
| 				end | ||||
| 				else | ||||
| 					assign partial_sum[i] = (partial[i] << (* mul2dsp *) i*(`DSP_A_MAXWIDTH_PARTIAL-sign_headroom)) + (* mul2dsp *) partial_sum[i-1]; | ||||
| 			end | ||||
| 
 | ||||
| 			\$__mul #( | ||||
|  | @ -170,12 +161,7 @@ module _80_mul (A, B, Y); | |||
| 				.B(B), | ||||
| 				.Y(last_partial) | ||||
| 			); | ||||
| 			//assign partial_sum[n] = (last_partial << n*(`DSP_A_MAXWIDTH_PARTIAL-sign_headroom)) + partial_sum[n-1]; | ||||
| 			if (A_SIGNED && B_SIGNED) | ||||
| 				assign partial_sum[n][Y_WIDTH-1:n*(`DSP_A_MAXWIDTH_PARTIAL-sign_headroom)] = last_partial + $signed(partial_sum[n-1][Y_WIDTH-1:n*(`DSP_A_MAXWIDTH_PARTIAL-sign_headroom)]); | ||||
| 			else | ||||
| 				assign partial_sum[n][Y_WIDTH-1:n*(`DSP_A_MAXWIDTH_PARTIAL-sign_headroom)] = last_partial + partial_sum[n-1][Y_WIDTH-1:n*(`DSP_A_MAXWIDTH_PARTIAL-sign_headroom)]; | ||||
| 			assign partial_sum[n][n*(`DSP_A_MAXWIDTH_PARTIAL-sign_headroom)-1:0] = partial_sum[n-1][n*(`DSP_A_MAXWIDTH_PARTIAL-sign_headroom)-1:0]; | ||||
| 			assign partial_sum[n] = (last_partial << (* mul2dsp *) n*(`DSP_A_MAXWIDTH_PARTIAL-sign_headroom)) + (* mul2dsp *) partial_sum[n-1]; | ||||
| 			assign Y = partial_sum[n]; | ||||
| 		end | ||||
| 		else if (B_WIDTH > `DSP_B_MAXWIDTH) begin | ||||
|  | @ -211,17 +197,8 @@ module _80_mul (A, B, Y); | |||
| 				//       reduction' approach also exists... | ||||
| 				if (i == 0) | ||||
| 					assign partial_sum[i] = partial[i]; | ||||
| 				else begin | ||||
| 					// Rewrite the following statement explicitly in order | ||||
| 					//   to save on a call to 'opt_expr -fine' which would | ||||
| 					//   optimise away the '<<' op and trim size of adder | ||||
| 					//assign partial_sum[i] = (partial[i] << i*(`DSP_B_MAXWIDTH_PARTIAL-sign_headroom)) + partial_sum[i-1]; | ||||
| 					if (A_SIGNED && B_SIGNED) | ||||
| 						assign partial_sum[i][Y_WIDTH-1:i*(`DSP_B_MAXWIDTH_PARTIAL-sign_headroom)] = partial[i] + $signed(partial_sum[i-1][Y_WIDTH-1:i*(`DSP_B_MAXWIDTH_PARTIAL-sign_headroom)]); | ||||
| 					else | ||||
| 						assign partial_sum[i][Y_WIDTH-1:i*(`DSP_B_MAXWIDTH_PARTIAL-sign_headroom)] = partial[i] + partial_sum[i-1][Y_WIDTH-1:i*(`DSP_B_MAXWIDTH_PARTIAL-sign_headroom)]; | ||||
| 					assign partial_sum[i][i*(`DSP_B_MAXWIDTH_PARTIAL-sign_headroom)-1:0] = partial_sum[i-1][i*(`DSP_B_MAXWIDTH_PARTIAL-sign_headroom)-1:0]; | ||||
| 				end | ||||
| 				else | ||||
| 					assign partial_sum[i] = (partial[i] << i*(`DSP_B_MAXWIDTH_PARTIAL-sign_headroom)) + partial_sum[i-1]; | ||||
| 			end | ||||
| 
 | ||||
| 			\$__mul #( | ||||
|  | @ -235,12 +212,7 @@ module _80_mul (A, B, Y); | |||
| 				.B(B[B_WIDTH-1 -: last_B_WIDTH]), | ||||
| 				.Y(last_partial) | ||||
| 			); | ||||
| 			//assign partial_sum[n] = (last_partial << n*(`DSP_B_MAXWIDTH_PARTIAL-sign_headroom)) + partial_sum[n-1]; | ||||
| 			if (A_SIGNED && B_SIGNED) | ||||
| 				assign partial_sum[n][Y_WIDTH-1:n*(`DSP_B_MAXWIDTH_PARTIAL-sign_headroom)] = last_partial + $signed(partial_sum[n-1][Y_WIDTH-1:n*(`DSP_B_MAXWIDTH_PARTIAL-sign_headroom)]); | ||||
| 			else | ||||
| 				assign partial_sum[n][Y_WIDTH-1:n*(`DSP_B_MAXWIDTH_PARTIAL-sign_headroom)] = last_partial + partial_sum[n-1][Y_WIDTH-1:n*(`DSP_B_MAXWIDTH_PARTIAL-sign_headroom)]; | ||||
| 			assign partial_sum[n][n*(`DSP_B_MAXWIDTH_PARTIAL-sign_headroom)-1:0] = partial_sum[n-1][n*(`DSP_B_MAXWIDTH_PARTIAL-sign_headroom)-1:0]; | ||||
| 			assign partial_sum[n] = (last_partial << n*(`DSP_B_MAXWIDTH_PARTIAL-sign_headroom)) + partial_sum[n-1]; | ||||
| 			assign Y = partial_sum[n]; | ||||
| 		end | ||||
| 		else begin | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue