mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	only pass in relevant comparator flag to ALU
This commit is contained in:
		
							parent
							
								
									1e88ec7eac
								
							
						
					
					
						commit
						2c6359b097
					
				@ -37,7 +37,7 @@ module alu #(parameter WIDTH=32) (
 | 
			
		||||
  input  logic [1:0]       BSelect,     // Binary encoding of if it's a ZBA_ZBB_ZBC_ZBS instruction
 | 
			
		||||
  input  logic [2:0]       ZBBSelect,   // ZBB mux select signal
 | 
			
		||||
  input  logic [2:0]       Funct3,      // For BMU decoding
 | 
			
		||||
  input  logic [1:0]       CompFlags,   // Comparator flags
 | 
			
		||||
  input  logic             CompLT,      // Less-Than flag from comparator
 | 
			
		||||
  input  logic [2:0]       BALUControl, // ALU Control signals for B instructions in Execute Stage
 | 
			
		||||
  output logic [WIDTH-1:0] Result,      // ALU result
 | 
			
		||||
  output logic [WIDTH-1:0] Sum);        // Sum of operands
 | 
			
		||||
@ -90,7 +90,7 @@ module alu #(parameter WIDTH=32) (
 | 
			
		||||
  // Final Result B instruction select mux
 | 
			
		||||
  if (`ZBC_SUPPORTED | `ZBS_SUPPORTED | `ZBA_SUPPORTED | `ZBB_SUPPORTED) begin : bitmanipalu
 | 
			
		||||
    bitmanipalu #(WIDTH) balu(.A, .B, .W64, .BSelect, .ZBBSelect, 
 | 
			
		||||
      .Funct3, .CompFlags, .BALUControl, .ALUResult, .FullResult,
 | 
			
		||||
      .Funct3, .CompLT, .BALUControl, .ALUResult, .FullResult,
 | 
			
		||||
      .CondMaskB, .CondShiftA, .Result);
 | 
			
		||||
  end else begin
 | 
			
		||||
    assign Result = ALUResult;
 | 
			
		||||
 | 
			
		||||
@ -35,7 +35,7 @@ module bitmanipalu #(parameter WIDTH=32) (
 | 
			
		||||
  input  logic [1:0]       BSelect,                 // Binary encoding of if it's a ZBA_ZBB_ZBC_ZBS instruction
 | 
			
		||||
  input  logic [2:0]       ZBBSelect,               // ZBB mux select signal
 | 
			
		||||
  input  logic [2:0]       Funct3,                  // Funct3 field of opcode indicates operation to perform
 | 
			
		||||
  input  logic [1:0]       CompFlags,               // Comparator flags
 | 
			
		||||
  input  logic             CompLT,                  // Less-Than flag from comparator
 | 
			
		||||
  input  logic [2:0]       BALUControl,             // ALU Control signals for B instructions in Execute Stage
 | 
			
		||||
  input  logic [WIDTH-1:0] ALUResult, FullResult,   // ALUResult, FullResult signals
 | 
			
		||||
  output logic [WIDTH-1:0] CondMaskB,               // B is conditionally masked for ZBS instructions
 | 
			
		||||
@ -84,7 +84,7 @@ module bitmanipalu #(parameter WIDTH=32) (
 | 
			
		||||
 | 
			
		||||
  // ZBB Unit
 | 
			
		||||
  if (`ZBB_SUPPORTED) begin: zbb
 | 
			
		||||
    zbb #(WIDTH) ZBB(.A, .RevA, .B, .W64, .lt(CompFlags[0]), .ZBBSelect, .ZBBResult);
 | 
			
		||||
    zbb #(WIDTH) ZBB(.A, .RevA, .B, .W64, .lt(CompLT), .ZBBSelect, .ZBBResult);
 | 
			
		||||
  end else assign ZBBResult = 0;
 | 
			
		||||
 | 
			
		||||
  // Result Select Mux
 | 
			
		||||
 | 
			
		||||
@ -114,7 +114,7 @@ module datapath (
 | 
			
		||||
  comparator #(`XLEN) comp(ForwardedSrcAE, ForwardedSrcBE, BranchSignedE, FlagsE);
 | 
			
		||||
  mux2  #(`XLEN)  srcamux(ForwardedSrcAE, PCE, ALUSrcAE, SrcAE);
 | 
			
		||||
  mux2  #(`XLEN)  srcbmux(ForwardedSrcBE, ImmExtE, ALUSrcBE, SrcBE);
 | 
			
		||||
  alu   #(`XLEN)  alu(SrcAE, SrcBE, W64E, SubArithE, ALUSelectE, BSelectE, ZBBSelectE, Funct3E, FlagsE, BALUControlE, ALUResultE, IEUAdrE);
 | 
			
		||||
  alu   #(`XLEN)  alu(SrcAE, SrcBE, W64E, SubArithE, ALUSelectE, BSelectE, ZBBSelectE, Funct3E, FlagsE[0], BALUControlE, ALUResultE, IEUAdrE);
 | 
			
		||||
  mux2 #(`XLEN)   altresultmux(ImmExtE, PCLinkE, JumpE, AltResultE);
 | 
			
		||||
  mux2 #(`XLEN)   ieuresultmux(ALUResultE, AltResultE, ALUResultSrcE, IEUResultE);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user