From 2039752740a6ed3fe09d4e070f0af9f9edbe2f4c Mon Sep 17 00:00:00 2001 From: David Harris <david_harris@hmc.edu> Date: Mon, 13 Dec 2021 07:57:38 -0800 Subject: [PATCH] Simplified ALU and source multiplexers pass tests --- wally-pipelined/regression/sim-wally | 2 +- wally-pipelined/regression/sim-wally-batch | 2 +- wally-pipelined/src/ebu/amoalu.sv | 2 ++ wally-pipelined/src/ieu/comparator.sv | 2 +- wally-pipelined/src/ieu/controller.sv | 6 +++--- wally-pipelined/testbench/common/sdModel.sv | 4 ++-- wally-pipelined/testbench/tests.vh | 1 + 7 files changed, 11 insertions(+), 8 deletions(-) diff --git a/wally-pipelined/regression/sim-wally b/wally-pipelined/regression/sim-wally index 0c1182563..d3071bd15 100755 --- a/wally-pipelined/regression/sim-wally +++ b/wally-pipelined/regression/sim-wally @@ -1,2 +1,2 @@ -vsim -do "do wally-pipelined.do rv32g arch32i" +vsim -do "do wally-pipelined.do rv64g arch64i" diff --git a/wally-pipelined/regression/sim-wally-batch b/wally-pipelined/regression/sim-wally-batch index 4b627b768..ff9444507 100755 --- a/wally-pipelined/regression/sim-wally-batch +++ b/wally-pipelined/regression/sim-wally-batch @@ -1,3 +1,3 @@ vsim -c <<! -do wally-pipelined-batch.do rv32g arch32f +do wally-pipelined-batch.do rv64g arch64i ! diff --git a/wally-pipelined/src/ebu/amoalu.sv b/wally-pipelined/src/ebu/amoalu.sv index 45f419665..2700dbc34 100644 --- a/wally-pipelined/src/ebu/amoalu.sv +++ b/wally-pipelined/src/ebu/amoalu.sv @@ -25,6 +25,8 @@ `include "wally-config.vh" +// *** this should probably be moved into the LSU because it is instantiated in the D$ + module amoalu ( input logic [`XLEN-1:0] srca, srcb, input logic [6:0] funct, diff --git a/wally-pipelined/src/ieu/comparator.sv b/wally-pipelined/src/ieu/comparator.sv index 8178d3380..141172744 100644 --- a/wally-pipelined/src/ieu/comparator.sv +++ b/wally-pipelined/src/ieu/comparator.sv @@ -37,7 +37,7 @@ module comparator #(parameter WIDTH=32) ( // subtraction assign bbar = ~b; - assign {carry, diff} = a + bbar; + assign {carry, diff} = a + bbar + 1; // condition code flags based on add/subtract output assign zero = (diff == 0); diff --git a/wally-pipelined/src/ieu/controller.sv b/wally-pipelined/src/ieu/controller.sv index 90ab5af60..02e380a47 100644 --- a/wally-pipelined/src/ieu/controller.sv +++ b/wally-pipelined/src/ieu/controller.sv @@ -145,9 +145,9 @@ module controller( else ControlsD = `CTRLW'b0_000_00_00_000_0_0_0_0_0_0_0_0_0_00_1; // non-implemented instruction //7'b1010011: ControlsD = `CTRLW'b0_000_00_00_101_0_00_0_0_0_0_0_0_0_00_1; // FP - 7'b1100011: ControlsD = `CTRLW'b0_010_00_00_000_1_0_0_0_0_0_0_0_0_00_0; // beq - 7'b1100111: ControlsD = `CTRLW'b1_000_00_00_000_0_0_1_1_0_0_0_0_0_00_0; // jalr - 7'b1101111: ControlsD = `CTRLW'b1_011_00_00_000_0_0_1_1_0_0_0_0_0_00_0; // jal + 7'b1100011: ControlsD = `CTRLW'b0_010_11_00_000_1_0_0_0_0_0_0_0_0_00_0; // branches + 7'b1100111: ControlsD = `CTRLW'b1_000_01_00_000_0_0_1_1_0_0_0_0_0_00_0; // jalr + 7'b1101111: ControlsD = `CTRLW'b1_011_11_00_000_0_0_1_1_0_0_0_0_0_00_0; // jal 7'b1110011: if (Funct3D == 3'b000) ControlsD = `CTRLW'b0_000_00_00_000_0_0_0_0_0_0_1_0_0_00_0; // privileged; decoded further in priveleged modules else diff --git a/wally-pipelined/testbench/common/sdModel.sv b/wally-pipelined/testbench/common/sdModel.sv index a6c36f1fd..741d741e0 100644 --- a/wally-pipelined/testbench/common/sdModel.sv +++ b/wally-pipelined/testbench/common/sdModel.sv @@ -118,6 +118,8 @@ module sdModel reg [3:0] crcDat_in; wire [15:0] crcDat_out [3:0]; + integer sdModel_file_desc; + genvar i; generate for(i=0; i<4; i=i+1) begin:CRC_16_gen @@ -1050,8 +1052,6 @@ module sdModel endcase // case (dataState) end // always @ (negedge sdClk) - integer sdModel_file_desc; - initial begin sdModel_file_desc = $fopen("sd_model.log"); diff --git a/wally-pipelined/testbench/tests.vh b/wally-pipelined/testbench/tests.vh index a12f96991..ec3a53157 100644 --- a/wally-pipelined/testbench/tests.vh +++ b/wally-pipelined/testbench/tests.vh @@ -586,6 +586,7 @@ string imperas32f[] = '{ string arch64i[] = '{ `RISCVARCHTEST, + "rv64i_m/I/beq-01", "47010", "rv64i_m/I/add-01", "9010", "rv64i_m/I/addi-01", "6010", "rv64i_m/I/addiw-01", "6010",