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] - Blame information for rev 7

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 7 kuzmi4
//////////////////////////////////////////////////////////////////////////////////
2
// Company:
3
// Engineer:        IK
4
//
5
// Create Date:     11:35:01 03/21/2013
6
// Design Name:
7
// Module Name:     tb
8
// Project Name:
9
// Target Devices:
10
// Tool versions:
11
// Description:
12
//
13
//
14
// Revision:
15
// Revision 0.01 - File Created,
16
//
17
//////////////////////////////////////////////////////////////////////////////////
18
`timescale 1ns / 1ps
19
 
20
module tb;
21
//////////////////////////////////////////////////////////////////////////////////
22
//
23
parameter   p_Tclk  =   5ns; // 200MHz
24
parameter   p_Trst  =   120ns;
25
 
26
//////////////////////////////////////////////////////////////////////////////////
27
    // SYS_CON
28
    reg     s_sys_clk;
29
    reg     s_rst;
30
 
31
 
32
//////////////////////////////////////////////////////////////////////////////////
33
//
34
//
35
//
36
always
37
begin   :   SYS_CLK
38
    #(p_Tclk / 2.0) s_sys_clk <= !s_sys_clk;
39
end
40
 
41
initial
42
begin   :   init_POR
43
    //
44
 
45
    // clr
46
    s_sys_clk = 0;
47
    s_rst = 0;
48
 
49
    // Final
50
end
51
//////////////////////////////////////////////////////////////////////////////////
52
//
53
// Instantiate DUT
54
//
55
mblite_top              dut
56
(
57
//SYS_CON
58
.sys_diff_clock_clk_p   ( s_sys_clk), // 200MHz clock input from board
59
.sys_diff_clock_clk_n   (!s_sys_clk),
60
// LEG
61
.led_8bits_tri_o        (),
62
// UART
63
.rs232_uart_rxd         (1'b1),
64
.rs232_uart_txd         ()
65
);
66
//////////////////////////////////////////////////////////////////////////////////
67
//
68
// UART BFM
69
//
70
uart_rx_if U_RXD (dut.rs232_uart_txd);
71
 
72
initial
73
begin   :   UART_RX
74
    U_RXD.init();
75
    #(p_Trst);
76
    forever
77
        U_RXD.rxd();
78
end
79
//////////////////////////////////////////////////////////////////////////////////
80
//
81
//
82
//
83
initial
84
begin   :   GPIO_POLL
85
    #(p_Trst);
86
    forever
87
        begin   :   WRK
88
            @(dut.led_8bits_tri_o);
89
            $display("[%t]: %m: dut-gpio=%x", $time, dut.led_8bits_tri_o);
90
        end
91
end
92
//////////////////////////////////////////////////////////////////////////////////
93
//
94
// {BREAK ON CPU-EXIT}
95
//
96
`ifndef GATE_LEVEL
97
initial
98
begin   :   _CPU // !!!RTL-sim
99
    #(p_Trst);
100
    do @(posedge dut.s_clk_50);
101
    while (dut.u0.U_MBLITE.imem.dat_o != 32'hB8000000);
102
    #100us; // tx byte via UART-115200
103
    $display("[%t]: %m: BREAK ON CPU-EXIT", $time);
104
    $stop;
105
end
106
`else
107
initial
108
begin   :   _GPIO // !!!GATE-sim
109
    // dec var
110
    time s_time;
111
    logic [7:0] sv_gpio;
112
    //
113
    s_time = $time;
114
    sv_gpio = dut.led_8bits_tri_o;
115
    do begin : _POLL
116
        // dly
117
        @(posedge s_sys_clk);
118
        // chk-upd
119
        if (sv_gpio !== dut.led_8bits_tri_o) // gpio-activity
120
            begin   :   _UPD
121
                sv_gpio = dut.led_8bits_tri_o;
122
                s_time = $time;
123
            end
124
        else // no activity
125
            begin   :   _CHK
126
                if (($time - s_time) > 1ms) // t-out
127
                    break;
128
            end
129
    end while(1);
130
    //
131
    $display("[%t]: %m: BREAK ON GPIO-TIMEOUT", $time);
132
    $stop;
133
end
134
`endif // GATE_LEVEL
135
//////////////////////////////////////////////////////////////////////////////////
136
//
137
// TB Tasks
138
//
139
task dut_arst;
140
    // simple async
141
    s_rst <= 1; #(p_Tclk);
142
    s_rst <= 0;
143
    // Final
144
endtask : dut_arst
145
 
146
default clocking cb @(s_sys_clk);
147
endclocking : cb
148
 
149
//////////////////////////////////////////////////////////////////////////////////
150
endmodule

powered by: WebSVN 2.1.0

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