From 392f1f7a275620e0073281613842f03294871b86 Mon Sep 17 00:00:00 2001 From: Riley King-Saunders Date: Tue, 15 Sep 2026 21:29:47 +1000 Subject: [PATCH] Updated shifter testbench to work with 2^n widths rather than bitwidths. --- tests/shifter_tb.sv | 52 ++++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/tests/shifter_tb.sv b/tests/shifter_tb.sv index 2a43af6..105216c 100644 --- a/tests/shifter_tb.sv +++ b/tests/shifter_tb.sv @@ -1,62 +1,62 @@ `include "shifter.sv" -module shifter_tb #(width=8)(); +module shifter_tb #(width=4)(); logic [2:0] op; - logic [width-1:0] Y; - logic [width-1:0] A_in; - logic [$clog2(width)-1:0] B_in; + logic [2**width-1:0] Y; + logic [2**width-1:0] A_in; + logic [2**width-1:0] B_in; logic [width-1:0] C_in; logic [2:0] ops[6]; - logic [width-1:0] A[6]; - logic [$clog2(width)-1:0] B[6]; + logic [2**width-1:0] A[6]; + logic [2**width-1:0] B[6]; logic [width-1:0] C[6]; - logic [width-1:0] Y_exp[6]; + logic [2**width-1:0] Y_exp[6]; - shifter #(width) dut(op, A_in,C_in,B_in,Y); + shifter #(width) dut(op, A_in,B_in,C_in,Y); integer error_count; initial begin // Test left shift by C ops[0] = 3'b000; - A[0] = {{(width-1){1'b0}}, {1'b1}}; + A[0] = {{(2**width-1){1'b0}}, {1'b1}}; C[0] = {{(width-1){1'b0}}, {1'b1}}; - B[0] = {width{1'b0}}; - Y_exp[0] = {{(width-2){1'b0}}, {2'b10}}; + B[0] = {2**width{1'b0}}; + Y_exp[0] = {{(2**width-2){1'b0}}, {2'b10}}; // Test left shift by B ops[1] = 3'b100; - A[1] = {{(width-1){1'b0}}, {1'b1}}; + A[1] = {{(2**width-1){1'b0}}, {1'b1}}; C[1] = {{(width-1){1'b0}}, {1'b1}}; - B[1] = {{($clog2(width)-2){1'b0}}, 2'b10}; - Y_exp[1] = {{(width-3){1'b0}}, {3'b100}}; + B[1] = {{(2**width-2){1'b0}}, 2'b10}; + Y_exp[1] = {{(2**width-3){1'b0}}, {3'b100}}; // Test Logical right shift by C ops[2] = 3'b001; - A[2] = {{(width-2){1'b0}}, {2'b10}}; + A[2] = {{(2**width-2){1'b0}}, {2'b10}}; C[2] = {{(width-1){1'b0}}, {1'b1}}; - B[2] = {width{1'b0}}; - Y_exp[2] = {{(width-1){1'b0}}, {1'b1}}; + B[2] = {2**width{1'b0}}; + Y_exp[2] = {{(2**width-1){1'b0}}, {1'b1}}; // Test Logical right shift by B ops[3] = 3'b101; - A[3] = {{(width-1){1'b0}}, {2'b10}}; + A[3] = {{(2**width-1){1'b0}}, {2'b10}}; C[3] = {{(width-1){1'b0}}, {1'b1}}; - B[3] = {{($clog2(width)-2){1'b0}}, 2'b10}; - Y_exp[3] = {{(width-1){1'b0}}, {1'b0}}; + B[3] = {{(2**width-2){1'b0}}, 2'b10}; + Y_exp[3] = {{(2**width-1){1'b0}}, {1'b0}}; // Test arithmetic shift right by C ops[4] = 3'b011; - A[4] = {{(width-1){1'b1}}, 1'b0}; // -2 + A[4] = {{(2**width-1){1'b1}}, 1'b0}; // -2 C[4] = {{(width-1){1'b0}}, 1'b1}; // 1 - B[4] = {{(width-2){1'b0}}, 2'b10}; // 2 - Y_exp[4] = {width{1'b1}}; // -1 + B[4] = {{(2**width-2){1'b0}}, 2'b10}; // 2 + Y_exp[4] = {2**width{1'b1}}; // -1 // Test arithmetic shift right by B ops[5] = 3'b111; - A[5] = {{(width-2){1'b1}}, 2'b00}; // -4 + A[5] = {{(2**width-2){1'b1}}, 2'b00}; // -4 C[5] = {{(width-1){1'b0}}, 1'b1}; // 1 - B[5] = {{(width-2){1'b0}}, 2'b10}; // 2 - Y_exp[5] = {width{1'b1}}; // -1 + B[5] = {{(2**width-2){1'b0}}, 2'b10}; // 2 + Y_exp[5] = {2**width{1'b1}}; // -1 error_count = 0; $display("Beginning Shifter tests");