mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	Update mul.sv
This commit is contained in:
		
							parent
							
								
									08459c4cc4
								
							
						
					
					
						commit
						7c51dd18dd
					
				@ -29,9 +29,9 @@
 | 
				
			|||||||
module mul #(parameter XLEN) (
 | 
					module mul #(parameter XLEN) (
 | 
				
			||||||
  input  logic                clk, reset,
 | 
					  input  logic                clk, reset,
 | 
				
			||||||
  input  logic                StallM, FlushM,
 | 
					  input  logic                StallM, FlushM,
 | 
				
			||||||
  input  logic [XLEN-1:0]    ForwardedSrcAE, ForwardedSrcBE, // source A and B from after Forwarding mux
 | 
					  input  logic [XLEN-1:0]     ForwardedSrcAE, ForwardedSrcBE, // source A and B from after Forwarding mux
 | 
				
			||||||
  input  logic [2:0]          Funct3E,                        // type of multiply
 | 
					  input  logic [2:0]          Funct3E,                        // type of multiply
 | 
				
			||||||
  output logic [XLEN*2-1:0]  ProdM                           // double-widthproduct
 | 
					  output logic [XLEN*2-1:0]   ProdM                           // double-widthproduct
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Number systems
 | 
					  // Number systems
 | 
				
			||||||
@ -48,12 +48,12 @@ module mul #(parameter XLEN) (
 | 
				
			|||||||
  // Signed * Unsigned   = P' + ( PA - PB)*2^(XLEN-1) - PP*2^(2XLEN-2)
 | 
					  // Signed * Unsigned   = P' + ( PA - PB)*2^(XLEN-1) - PP*2^(2XLEN-2)
 | 
				
			||||||
  // Unsigned * Unsigned = P' + ( PA + PB)*2^(XLEN-1) + PP*2^(2XLEN-2)
 | 
					  // Unsigned * Unsigned = P' + ( PA + PB)*2^(XLEN-1) + PP*2^(2XLEN-2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  logic [XLEN-1:0]   Aprime, Bprime;                       // lower bits of source A and B
 | 
					  logic [XLEN-1:0]    Aprime, Bprime;                       // lower bits of source A and B
 | 
				
			||||||
  logic               MULH, MULHSU;                         // type of multiply
 | 
					  logic               MULH, MULHSU;                         // type of multiply
 | 
				
			||||||
  logic [XLEN-2:0]   PA, PB;                               // product of msb and lsbs
 | 
					  logic [XLEN-2:0]    PA, PB;                               // product of msb and lsbs
 | 
				
			||||||
  logic               PP;                                   // product of msbs
 | 
					  logic               PP;                                   // product of msbs
 | 
				
			||||||
  logic [XLEN*2-1:0] PP1E, PP2E, PP3E, PP4E;               // partial products
 | 
					  logic [XLEN*2-1:0]  PP1E, PP2E, PP3E, PP4E;               // partial products
 | 
				
			||||||
  logic [XLEN*2-1:0] PP1M, PP2M, PP3M, PP4M;               // registered partial proudcts
 | 
					  logic [XLEN*2-1:0]  PP1M, PP2M, PP3M, PP4M;               // registered partial proudcts
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
  //////////////////////////////
 | 
					  //////////////////////////////
 | 
				
			||||||
  // Execute Stage: Compute partial products
 | 
					  // Execute Stage: Compute partial products
 | 
				
			||||||
@ -90,4 +90,3 @@ module mul #(parameter XLEN) (
 | 
				
			|||||||
  // add up partial products; this multi-input add implies CSAs and a final CPA
 | 
					  // add up partial products; this multi-input add implies CSAs and a final CPA
 | 
				
			||||||
  assign ProdM = PP1M + PP2M + PP3M + PP4M; //ForwardedSrcAE * ForwardedSrcBE;
 | 
					  assign ProdM = PP1M + PP2M + PP3M + PP4M; //ForwardedSrcAE * ForwardedSrcBE;
 | 
				
			||||||
 endmodule
 | 
					 endmodule
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user