[verilog] a

Viewer

  1. `timescale 1ns / 1ps
  2.  
  3. //////////////////////////////////////////////////////////////////////////////////
  4. //Eric Chhour
  5. //CECS341 Lab 02
  6. //2/06/21
  7. //////////////////////////////////////////////////////////////////////////////////
  8.  
  9. module testBench;
  10.     //Reg=inputs, wire=outputs
  11.         reg [31:0] A_tb; 
  12.         reg [31:0] B_tb;
  13.         reg [3:0] ALUCntrl_tb;
  14.        
  15.         wire [31:0]ALU_Out_tb;
  16.         wire CarryFlag;
  17.     wire OverflowFlag;
  18.     wire NegativeFlag;
  19.     wire ZeroFlag;
  20.  
  21.         alu uut (.A(A_tb), 
  22.                  .B(B_tb),
  23.                  .ALUCntrl(ALUCntrl_tb), 
  24.                  .ALU_Out(ALU_Out_tb), 
  25.                  .C(CarryFlag), 
  26.                  .V(OverflowFlag), 
  27.                  .N(NegativeFlag), 
  28.                  .Z(ZeroFlag));
  29.        
  30.        
  31.         initial 
  32.         begin
  33.            $timeformat(-9, 1, " ns", 9);
  34.            $display("\n *********(CECS341LAB05*********  \n");
  35.        
  36.            //Test Case 1
  37.            A_tb = 32'hf0f0_3c3c; B_tb = 32'hbf0f_f5f5; ALUCntrl_tb=4'b0000;
  38.            #10 $display("Time=%t || A=%x | B=%x | ALU Cntrl=%4b | ALU Out = %x Carry Flag = %0b | Overflow Flag = %0b | Zero Flag = %0b | Negative Flag= %0b",
  39.            $time, A_tb, B_tb, ALUCntrl_tb, ALU_Out_tb, CarryFlag, OverflowFlag, ZeroFlag, NegativeFlag);
  40.            //Test Case 2
  41.            A_tb = 32'hf0f0_3c3c; B_tb = 32'hbf0f_f5f5; ALUCntrl_tb=4'b0001;
  42.            #10 $display("Time=%t || A=%x | B=%x | ALU Cntrl=%4b | ALU Out = %x Carry Flag = %0b | Overflow Flag = %0b | Zero Flag = %0b | Negative Flag= %0b",
  43.            $time, A_tb, B_tb, ALUCntrl_tb, ALU_Out_tb, CarryFlag, OverflowFlag, ZeroFlag, NegativeFlag);
  44.            //Test Case 3
  45.            A_tb = 32'hf0f0_3c3c; B_tb = 32'hbf0f_f5f5; ALUCntrl_tb=4'b0011;
  46.            #10 $display("Time=%t || A=%x | B=%x | ALU Cntrl=%4b | ALU Out = %x Carry Flag = %0b | Overflow Flag = %0b | Zero Flag = %0b | Negative Flag= %0b",
  47.            $time, A_tb, B_tb, ALUCntrl_tb, ALU_Out_tb, CarryFlag, OverflowFlag, ZeroFlag, NegativeFlag);
  48.            //Test Case 4
  49.            A_tb = 32'h00000001; B_tb = 32'hffffffff; ALUCntrl_tb=4'b0010;
  50.            #10 $display("Time=%t || A=%x | B=%x | ALU Cntrl=%4b | ALU Out = %x Carry Flag = %0b | Overflow Flag = %0b | Zero Flag = %0b | Negative Flag= %0b",
  51.            $time, A_tb, B_tb, ALUCntrl_tb, ALU_Out_tb, CarryFlag, OverflowFlag, ZeroFlag, NegativeFlag);
  52.            //Test Case 5
  53.            A_tb = 32'h6389754f; B_tb = 32'had5624e6; ALUCntrl_tb=4'b0010;
  54.            #10 $display("Time=%t || A=%x | B=%x | ALU Cntrl=%4b | ALU Out = %x Carry Flag = %0b | Overflow Flag = %0b | Zero Flag = %0b | Negative Flag= %0b",
  55.            $time, A_tb, B_tb, ALUCntrl_tb, ALU_Out_tb, CarryFlag, OverflowFlag, ZeroFlag, NegativeFlag);
  56.            //Test Case 6
  57.            A_tb = 32'hffffffff; B_tb = 32'hffffffff; ALUCntrl_tb=4'b0010;
  58.            #10 $display("Time=%t || A=%x | B=%x | ALU Cntrl=%4b | ALU Out = %x Carry Flag = %0b | Overflow Flag = %0b | Zero Flag = %0b | Negative Flag= %0b",
  59.            $time, A_tb, B_tb, ALUCntrl_tb, ALU_Out_tb, CarryFlag, OverflowFlag, ZeroFlag, NegativeFlag);
  60.            //Test Case 7
  61.             A_tb = 32'h6389754f; B_tb = 32'had5624e6; ALUCntrl_tb=4'b0010;
  62.            #10 $display("Time=%t || A=%x | B=%x | ALU Cntrl=%4b | ALU Out = %x Carry Flag = %0b | Overflow Flag = %0b | Zero Flag = %0b | Negative Flag= %0b",
  63.            $time, A_tb, B_tb, ALUCntrl_tb, ALU_Out_tb, CarryFlag, OverflowFlag, ZeroFlag, NegativeFlag);
  64.            //Test Case 8
  65.            A_tb = 32'hffffffff; B_tb = 32'hffffffff; ALUCntrl_tb=4'b0010;
  66.            #10 $display("Time=%t || A=%x | B=%x | ALU Cntrl=%4b | ALU Out = %x Carry Flag = %0b | Overflow Flag = %0b | Zero Flag = %0b | Negative Flag= %0b",
  67.            $time, A_tb, B_tb, ALUCntrl_tb, ALU_Out_tb, CarryFlag, OverflowFlag, ZeroFlag, NegativeFlag);
  68.            //Test Case 9
  69.            A_tb = 32'h00000000; B_tb = 32'h00000001; ALUCntrl_tb=4'b0110;
  70.            #10 $display("Time=%t || A=%x | B=%x | ALU Cntrl=%4b | ALU Out = %x Carry Flag = %0b | Overflow Flag = %0b | Zero Flag = %0b | Negative Flag= %0b",
  71.            $time, A_tb, B_tb, ALUCntrl_tb, ALU_Out_tb, CarryFlag, OverflowFlag, ZeroFlag, NegativeFlag);
  72.            //Test Case 10 
  73.            A_tb = 32'hf9684783; B_tb = 32'hf998d562; ALUCntrl_tb=4'b0110;
  74.            #10 $display("Time=%t || A=%x | B=%x | ALU Cntrl=%4b | ALU Out = %x Carry Flag = %0b | Overflow Flag = %0b | Zero Flag = %0b | Negative Flag= %0b",
  75.            $time, A_tb, B_tb, ALUCntrl_tb, ALU_Out_tb, CarryFlag, OverflowFlag, ZeroFlag, NegativeFlag);
  76.            //Test Case 11
  77.            A_tb = 32'hf0f03c3c; B_tb = 32'hbf0ff5f5; ALUCntrl_tb=4'b1100;
  78.            #10 $display("Time=%t || A=%x | B=%x | ALU Cntrl=%4b | ALU Out = %x Carry Flag = %0b | Overflow Flag = %0b | Zero Flag = %0b | Negative Flag= %0b",
  79.            $time, A_tb, B_tb, ALUCntrl_tb, ALU_Out_tb, CarryFlag, OverflowFlag, ZeroFlag, NegativeFlag);
  80.            //Test Case 12
  81.            A_tb = 32'h89bcde34; B_tb = 32'hc53bd687; ALUCntrl_tb=4'b0111;
  82.            #10 $display("Time=%t || A=%x | B=%x | ALU Cntrl=%4b | ALU Out = %x Carry Flag = %0b | Overflow Flag = %0b | Zero Flag = %0b | Negative Flag= %0b",
  83.            $time, A_tb, B_tb, ALUCntrl_tb, ALU_Out_tb, CarryFlag, OverflowFlag, ZeroFlag, NegativeFlag);
  84.            //Test Case 13
  85.            A_tb = 32'hf0f03c3c; B_tb = 32'hbf0fff5; ALUCntrl_tb=4'b1101;
  86.            #10 $display("Time=%t || A=%x | B=%x | ALU Cntrl=%4b | ALU Out = %x Carry Flag = %0b | Overflow Flag = %0b | Zero Flag = %0b | Negative Flag= %0b",
  87.            $time, A_tb, B_tb, ALUCntrl_tb, ALU_Out_tb, CarryFlag, OverflowFlag, ZeroFlag, NegativeFlag);
  88.            //Test Case 14
  89.            A_tb = 32'hf0f03c3c; B_tb = 32'hbf0ff5f5; ALUCntrl_tb=4'b1111;
  90.            #10 $display("Time=%t || A=%x | B=%x | ALU Cntrl=%4b | ALU Out = %x Carry Flag = %0b | Overflow Flag = %0b | Zero Flag = %0b | Negative Flag= %0b",
  91.            $time, A_tb, B_tb, ALUCntrl_tb, ALU_Out_tb, CarryFlag, OverflowFlag, ZeroFlag, NegativeFlag);
  92.            //Test Case 15
  93.            A_tb = 32'hf0f03c3c; B_tb = 32'hbf0ff5f5; ALUCntrl_tb=4'b1010;
  94.            #10 $display("Time=%t || A=%x | B=%x | ALU Cntrl=%4b | ALU Out = %x Carry Flag = %0b | Overflow Flag = %0b | Zero Flag = %0b | Negative Flag= %0b",
  95.            $time, A_tb, B_tb, ALUCntrl_tb, ALU_Out_tb, CarryFlag, OverflowFlag, ZeroFlag, NegativeFlag);
  96.            //Test Case 16
  97.            A_tb = 32'hf0f03c3c; B_tb = 32'hbf0ff5f5; ALUCntrl_tb=4'b1110;
  98.            #10 $display("Time=%t || A=%x | B=%x | ALU Cntrl=%4b | ALU Out = %x Carry Flag = %0b | Overflow Flag = %0b | Zero Flag = %0b | Negative Flag= %0b",
  99.            $time, A_tb, B_tb, ALUCntrl_tb, ALU_Out_tb, CarryFlag, OverflowFlag, ZeroFlag, NegativeFlag);
  100.            
  101.            $display("\n *************************************** \n");
  102.            
  103.            $finish;
  104.            end
  105.  
  106. endmodule
  107.  

Editor

You can edit this paste and save as new:


File Description
  • a
  • Paste Code
  • 26 Feb-2021
  • 6.22 Kb
You can Share it: