OpenCores
URL https://opencores.org/ocsvn/1g_ethernet_dpi/1g_ethernet_dpi/trunk

Subversion Repositories 1g_ethernet_dpi

[/] [1g_ethernet_dpi/] [tags/] [vmblite_base/] [hw/] [src/] [tb/] [tb.sv] - Rev 7

Compare with Previous | Blame | View Log

//////////////////////////////////////////////////////////////////////////////////
// Company:         
// Engineer:        IK
// 
// Create Date:     11:35:01 03/21/2013 
// Design Name:     
// Module Name:     tb
// Project Name:    
// Target Devices:  
// Tool versions:   
// Description:     
//                  
//                  
// Revision: 
// Revision 0.01 - File Created, 
//
//////////////////////////////////////////////////////////////////////////////////
`timescale 1ns / 1ps

module tb;
//////////////////////////////////////////////////////////////////////////////////
//
parameter   p_Tclk  =   5ns; // 200MHz
parameter   p_Trst  =   120ns;

//////////////////////////////////////////////////////////////////////////////////
    // SYS_CON
    reg     s_sys_clk;
    reg     s_rst;
    
    
//////////////////////////////////////////////////////////////////////////////////
//
// 
//
always 
begin   :   SYS_CLK
    #(p_Tclk / 2.0) s_sys_clk <= !s_sys_clk;
end

initial
begin   :   init_POR
    // 
    
    // clr
    s_sys_clk = 0;
    s_rst = 0;
    
    // Final
end
//////////////////////////////////////////////////////////////////////////////////
//
// Instantiate DUT
//
mblite_top              dut
(
//SYS_CON
.sys_diff_clock_clk_p   ( s_sys_clk), // 200MHz clock input from board
.sys_diff_clock_clk_n   (!s_sys_clk),
// LEG
.led_8bits_tri_o        (),
// UART
.rs232_uart_rxd         (1'b1),
.rs232_uart_txd         ()
);
//////////////////////////////////////////////////////////////////////////////////
//
// UART BFM
//
uart_rx_if U_RXD (dut.rs232_uart_txd);

initial
begin   :   UART_RX
    U_RXD.init();
    #(p_Trst);
    forever
        U_RXD.rxd();
end
//////////////////////////////////////////////////////////////////////////////////
//
// 
//
initial
begin   :   GPIO_POLL
    #(p_Trst);
    forever
        begin   :   WRK
            @(dut.led_8bits_tri_o);
            $display("[%t]: %m: dut-gpio=%x", $time, dut.led_8bits_tri_o); 
        end
end
//////////////////////////////////////////////////////////////////////////////////
//
// {BREAK ON CPU-EXIT}
//
`ifndef GATE_LEVEL
initial
begin   :   _CPU // !!!RTL-sim
    #(p_Trst);
    do @(posedge dut.s_clk_50);
    while (dut.u0.U_MBLITE.imem.dat_o != 32'hB8000000);
    #100us; // tx byte via UART-115200
    $display("[%t]: %m: BREAK ON CPU-EXIT", $time); 
    $stop;
end
`else
initial
begin   :   _GPIO // !!!GATE-sim
    // dec var
    time s_time;
    logic [7:0] sv_gpio;
    // 
    s_time = $time;
    sv_gpio = dut.led_8bits_tri_o;
    do begin : _POLL
        // dly
        @(posedge s_sys_clk);
        // chk-upd
        if (sv_gpio !== dut.led_8bits_tri_o) // gpio-activity 
            begin   :   _UPD
                sv_gpio = dut.led_8bits_tri_o;
                s_time = $time;
            end
        else // no activity
            begin   :   _CHK
                if (($time - s_time) > 1ms) // t-out
                    break;
            end
    end while(1);
    // 
    $display("[%t]: %m: BREAK ON GPIO-TIMEOUT", $time); 
    $stop;
end
`endif // GATE_LEVEL
//////////////////////////////////////////////////////////////////////////////////
//
// TB Tasks
//
task dut_arst;
    // simple async
    s_rst <= 1; #(p_Tclk);
    s_rst <= 0;
    // Final
endtask : dut_arst

default clocking cb @(s_sys_clk);
endclocking : cb

//////////////////////////////////////////////////////////////////////////////////
endmodule

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.