87 lines
2.1 KiB
Systemverilog
87 lines
2.1 KiB
Systemverilog
|
|
//==============================================================
|
||
|
|
// Test ALU state preparation for DAA instruction
|
||
|
|
//==============================================================
|
||
|
|
`timescale 100 ns/ 100 ns
|
||
|
|
|
||
|
|
module test_prep_daa;
|
||
|
|
|
||
|
|
// ----------------- INPUT -----------------
|
||
|
|
reg [3:0] low_sig; // Input data bus A (independent)
|
||
|
|
reg [3:0] high_sig; // Input data bus B (independent)
|
||
|
|
|
||
|
|
// ----------------- OUTPUT -----------------
|
||
|
|
wire low_gt_9_sig; // low bus > 9
|
||
|
|
wire high_gt_9_sig; // high bus > 9
|
||
|
|
wire high_eq_9_sig; // high bus == 9
|
||
|
|
|
||
|
|
// ----------------- TEST -------------------
|
||
|
|
`define CHECK \
|
||
|
|
assert(low_gt_9_sig==low_sig>9 && high_gt_9_sig==high_sig>9 && high_eq_9_sig==(high_sig==9));
|
||
|
|
|
||
|
|
initial begin
|
||
|
|
low_sig = 4'h0;
|
||
|
|
high_sig = 4'h0;
|
||
|
|
#1 `CHECK
|
||
|
|
low_sig = 4'h1;
|
||
|
|
high_sig = 4'h1;
|
||
|
|
#1 `CHECK
|
||
|
|
low_sig = 4'h2;
|
||
|
|
high_sig = 4'h2;
|
||
|
|
#1 `CHECK
|
||
|
|
low_sig = 4'h3;
|
||
|
|
high_sig = 4'h3;
|
||
|
|
#1 `CHECK
|
||
|
|
low_sig = 4'h4;
|
||
|
|
high_sig = 4'h4;
|
||
|
|
#1 `CHECK
|
||
|
|
low_sig = 4'h5;
|
||
|
|
high_sig = 4'h5;
|
||
|
|
#1 `CHECK
|
||
|
|
low_sig = 4'h6;
|
||
|
|
high_sig = 4'h6;
|
||
|
|
#1 `CHECK
|
||
|
|
low_sig = 4'h7;
|
||
|
|
high_sig = 4'h7;
|
||
|
|
#1 `CHECK
|
||
|
|
low_sig = 4'h8;
|
||
|
|
high_sig = 4'h8;
|
||
|
|
#1 `CHECK
|
||
|
|
low_sig = 4'h9;
|
||
|
|
high_sig = 4'h9;
|
||
|
|
#1 `CHECK
|
||
|
|
low_sig = 4'hA;
|
||
|
|
high_sig = 4'hA;
|
||
|
|
#1 `CHECK
|
||
|
|
low_sig = 4'hB;
|
||
|
|
high_sig = 4'hB;
|
||
|
|
#1 `CHECK
|
||
|
|
low_sig = 4'hC;
|
||
|
|
high_sig = 4'hC;
|
||
|
|
#1 `CHECK
|
||
|
|
low_sig = 4'hD;
|
||
|
|
high_sig = 4'hD;
|
||
|
|
#1 `CHECK
|
||
|
|
low_sig = 4'hE;
|
||
|
|
high_sig = 4'hE;
|
||
|
|
#1 `CHECK
|
||
|
|
low_sig = 4'hF;
|
||
|
|
high_sig = 4'hF;
|
||
|
|
#1 `CHECK
|
||
|
|
|
||
|
|
#1 $display("End of test");
|
||
|
|
end
|
||
|
|
|
||
|
|
//--------------------------------------------------------------
|
||
|
|
// Instantiate prep-DAA block
|
||
|
|
//--------------------------------------------------------------
|
||
|
|
alu_prep_daa alu_prep_daa_inst
|
||
|
|
(
|
||
|
|
.low(low_sig) , // input [3:0] low_sig
|
||
|
|
.high(high_sig) , // input [3:0] high_sig
|
||
|
|
.low_gt_9(low_gt_9_sig) , // output low_gt_9_sig
|
||
|
|
.high_eq_9(high_eq_9_sig) , // output high_eq_9_sig
|
||
|
|
.high_gt_9(high_gt_9_sig) // output high_gt_9_sig
|
||
|
|
);
|
||
|
|
|
||
|
|
endmodule
|