100 lines
3.5 KiB
Systemverilog
100 lines
3.5 KiB
Systemverilog
|
|
//==============================================================
|
||
|
|
// Test pin control unit
|
||
|
|
//==============================================================
|
||
|
|
`timescale 100 ns/ 100 ns
|
||
|
|
|
||
|
|
module test_pin_control;
|
||
|
|
|
||
|
|
// ----------------- CONTROL ----------------
|
||
|
|
logic fFetch_sig=0;
|
||
|
|
logic fMRead_sig=0;
|
||
|
|
logic fMWrite_sig=0;
|
||
|
|
logic fIORead_sig=0;
|
||
|
|
logic fIOWrite_sig=0;
|
||
|
|
logic T1_sig=0;
|
||
|
|
logic T2_sig=0;
|
||
|
|
logic T3_sig=0;
|
||
|
|
logic T4_sig=0;
|
||
|
|
|
||
|
|
// ----------------- STATES ----------------
|
||
|
|
wire bus_ab_pin_we_sig;
|
||
|
|
wire bus_db_pin_oe_sig;
|
||
|
|
wire bus_db_pin_re_sig;
|
||
|
|
|
||
|
|
// ----------------- TEST -------------------
|
||
|
|
initial begin
|
||
|
|
// Initial condition
|
||
|
|
#1 assert(bus_ab_pin_we_sig==0 && bus_db_pin_oe_sig==0 && bus_db_pin_re_sig==0);
|
||
|
|
|
||
|
|
// Activate formula for each signal
|
||
|
|
fFetch_sig = 1;
|
||
|
|
T1_sig = 1;
|
||
|
|
#1 assert(bus_ab_pin_we_sig==1 && bus_db_pin_oe_sig==0 && bus_db_pin_re_sig==0);
|
||
|
|
T1_sig = 0;
|
||
|
|
T3_sig = 1;
|
||
|
|
#1 assert(bus_ab_pin_we_sig==1 && bus_db_pin_oe_sig==0 && bus_db_pin_re_sig==0);
|
||
|
|
fFetch_sig = 0;
|
||
|
|
T1_sig = 0;
|
||
|
|
T3_sig = 0;
|
||
|
|
#1 assert(bus_ab_pin_we_sig==0 && bus_db_pin_oe_sig==0 && bus_db_pin_re_sig==0);
|
||
|
|
// Read phase
|
||
|
|
fMRead_sig = 1;
|
||
|
|
#1 assert(bus_ab_pin_we_sig==0 && bus_db_pin_oe_sig==0 && bus_db_pin_re_sig==0);
|
||
|
|
T1_sig = 1;
|
||
|
|
#1 assert(bus_ab_pin_we_sig==1 && bus_db_pin_oe_sig==0 && bus_db_pin_re_sig==0);
|
||
|
|
// Write phase
|
||
|
|
fMRead_sig = 0;
|
||
|
|
fMWrite_sig = 1;
|
||
|
|
fIORead_sig = 0;
|
||
|
|
fIOWrite_sig = 0;
|
||
|
|
#1 assert(bus_ab_pin_we_sig==1 && bus_db_pin_oe_sig==0 && bus_db_pin_re_sig==0);
|
||
|
|
// IO Read phase
|
||
|
|
fMRead_sig = 0;
|
||
|
|
fMWrite_sig = 0;
|
||
|
|
fIORead_sig = 1;
|
||
|
|
fIOWrite_sig = 0;
|
||
|
|
#1 assert(bus_ab_pin_we_sig==1 && bus_db_pin_oe_sig==0 && bus_db_pin_re_sig==0);
|
||
|
|
// IO Write phase
|
||
|
|
fMRead_sig = 0;
|
||
|
|
fMWrite_sig = 0;
|
||
|
|
fIORead_sig = 0;
|
||
|
|
fIOWrite_sig = 1;
|
||
|
|
#1 assert(bus_ab_pin_we_sig==1 && bus_db_pin_oe_sig==0 && bus_db_pin_re_sig==0);
|
||
|
|
fIOWrite_sig = 0;
|
||
|
|
#1 assert(bus_ab_pin_we_sig==0 && bus_db_pin_oe_sig==0 && bus_db_pin_re_sig==0);
|
||
|
|
|
||
|
|
// Test bus pin control
|
||
|
|
T2_sig = 1;
|
||
|
|
fMWrite_sig = 1;
|
||
|
|
#1 assert(bus_ab_pin_we_sig==1 && bus_db_pin_oe_sig==1 && bus_db_pin_re_sig==0);
|
||
|
|
fMWrite_sig = 0;
|
||
|
|
fIORead_sig = 1;
|
||
|
|
#1 assert(bus_ab_pin_we_sig==1 && bus_db_pin_oe_sig==0 && bus_db_pin_re_sig==0);
|
||
|
|
T3_sig = 1;
|
||
|
|
#1 assert(bus_ab_pin_we_sig==1 && bus_db_pin_oe_sig==0 && bus_db_pin_re_sig==1);
|
||
|
|
|
||
|
|
#1 $display("End of test");
|
||
|
|
end
|
||
|
|
|
||
|
|
//--------------------------------------------------------------
|
||
|
|
// Instantiate pin control
|
||
|
|
//--------------------------------------------------------------
|
||
|
|
|
||
|
|
pin_control pin_control_inst
|
||
|
|
(
|
||
|
|
.fFetch(fFetch_sig) , // input fFetch_sig
|
||
|
|
.fMRead(fMRead_sig) , // input fMRead_sig
|
||
|
|
.fMWrite(fMWrite_sig) , // input fMWrite_sig
|
||
|
|
.fIORead(fIORead_sig) , // input fIORead_sig
|
||
|
|
.fIOWrite(fIOWrite_sig) , // input fIOWrite_sig
|
||
|
|
.T1(T1_sig) , // input T1_sig
|
||
|
|
.T2(T2_sig) , // input T2_sig
|
||
|
|
.T3(T3_sig) , // input T3_sig
|
||
|
|
.T4(T4_sig) , // input T4_sig
|
||
|
|
.bus_ab_pin_we(bus_ab_pin_we_sig) , // output bus_ab_pin_we_sig
|
||
|
|
.bus_db_pin_oe(bus_db_pin_oe_sig) , // output bus_db_pin_oe_sig
|
||
|
|
.bus_db_pin_re(bus_db_pin_re_sig) // output bus_db_pin_re_sig
|
||
|
|
);
|
||
|
|
|
||
|
|
endmodule
|