OpenCores
URL https://opencores.org/ocsvn/pcie_ds_dma/pcie_ds_dma/trunk

Subversion Repositories pcie_ds_dma

[/] [pcie_ds_dma/] [trunk/] [core/] [wishbone/] [testbecnh/] [dev_test_check/] [sim/] [ds_dma_test_check_burst_master_if.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dsmv
//////////////////////////////////////////////////////////////////////////////////
2
// Company:         ;)
3
// Engineer:        Kuzmi4
4
// 
5
// Create Date:     14:39:52 05/19/2010 
6
// Design Name:     
7
// Module Name:     ds_dma_test_check_burst_master_if
8
// Project Name:    DS_DMA
9
// Target Devices:  no
10
// Tool versions:   any with SV support
11
// Description:     
12
//                  
13
//
14
// Revision: 
15
// Revision 0.01 - File Created
16
//
17
//////////////////////////////////////////////////////////////////////////////////
18
 
19
interface ds_dma_test_check_burst_master_if # ( parameter time pt_Tdly = 1ns )
20
(
21
    input   i_clk
22
);
23
//////////////////////////////////////////////////////////////////////////////////
24
    //
25
    // WB IF
26
    logic   [11:0]  ov_wbs_burst_addr;
27
    logic   [63:0]  ov_wbs_burst_data;
28
    logic   [ 7:0]  ov_wbs_burst_sel;
29
    logic           o_wbs_burst_we;
30
    logic           o_wbs_burst_cyc;
31
    logic           o_wbs_burst_stb;
32
    logic   [ 2:0]  ov_wbs_burst_cti;
33
    logic   [ 1:0]  ov_wbs_burst_bte;
34
 
35
    logic           i_wbs_burst_ack;
36
    logic           i_wbs_burst_err;
37
    logic           i_wbs_burst_rty;
38
 
39
//////////////////////////////////////////////////////////////////////////////////
40
//
41
// Define Clocking block:
42
//
43
default clocking cb @(posedge i_clk);
44
    default input #(pt_Tdly) output #(pt_Tdly);
45
    output ov_wbs_burst_addr, ov_wbs_burst_data, ov_wbs_burst_sel, o_wbs_burst_we, o_wbs_burst_cyc, o_wbs_burst_stb, ov_wbs_burst_cti, ov_wbs_burst_bte;
46
    input i_wbs_burst_ack, i_wbs_burst_err, i_wbs_burst_rty;
47
endclocking
48
//////////////////////////////////////////////////////////////////////////////////
49
//
50
// Tasks:
51
//
52
// Init DATA_OUT
53
task    init;
54
    //
55
    ov_wbs_burst_addr   <= 0;
56
    ov_wbs_burst_data   <= 0;
57
    ov_wbs_burst_sel    <= 0;
58
    o_wbs_burst_we      <= 0;
59
    o_wbs_burst_cyc     <= 0;
60
    o_wbs_burst_stb     <= 0;
61
    ov_wbs_burst_cti    <= 0;
62
    ov_wbs_burst_bte    <= 0;
63
    //
64
endtask
65
//
66
task write_512_word (input [63:0] iv_start_data=0, input i_rnd=0);
67
    //
68
    int i=0, stb_counter=0;
69
    //
70
    @cb;
71
    cb.ov_wbs_burst_addr    <= 0;
72
    cb.ov_wbs_burst_sel     <= 0;
73
    cb.o_wbs_burst_we       <= 0; // CLR
74
    cb.o_wbs_burst_cyc      <= 0;
75
    cb.o_wbs_burst_stb      <= 0;
76
    cb.ov_wbs_burst_cti     <= 0;
77
    ov_wbs_burst_bte        <= 0;
78
    ov_wbs_burst_data       <= 0;
79
    @cb;
80
    cb.ov_wbs_burst_sel     <= '1;
81
    cb.o_wbs_burst_we       <= 1; // WR
82
    cb.o_wbs_burst_cyc      <= 1;
83
    cb.o_wbs_burst_stb      <= 1;
84
    cb.ov_wbs_burst_cti     <= 3'b001;
85
    ov_wbs_burst_bte        <= 2'b01;
86
    //
87
    i=0;
88
    stb_counter=0;
89
    cb.ov_wbs_burst_data    <= (i_rnd)? $urandom() : (iv_start_data+i);
90
    // 
91
    do
92
        begin   :   WR_DATA
93
 
94
            @cb;
95
            if (cb.i_wbs_burst_ack)
96
                begin   :   DATA_PUT
97
                    // 
98
                    cb.ov_wbs_burst_data    <= (i_rnd)? $urandom() : (iv_start_data+i+1);
99
                    i++;
100
                    // 
101
                    if (i==511) // EndOfBurst
102
                        cb.ov_wbs_burst_cti     <= 3'b111;
103
                end
104
            /**/
105
            if (stb_counter==15) // ==> Master DELAY in Transfer POINT
106
                begin   :   MASTER_DLY
107
                    cb.o_wbs_burst_stb      <= 0;
108
                    @cb;
109
                    @cb;
110
                    cb.o_wbs_burst_stb      <= 1;
111
                end
112
            stb_counter++;/**/
113
        end
114
    while (i<512/*+1*/);
115
    // CLR on EXIT
116
    cb.ov_wbs_burst_sel     <= 0;
117
    cb.o_wbs_burst_we       <= 0; // CLR
118
    cb.o_wbs_burst_cyc      <= 0;
119
    cb.o_wbs_burst_stb      <= 0;
120
    cb.ov_wbs_burst_cti     <= 0;
121
    ov_wbs_burst_bte        <= 0;
122
    ov_wbs_burst_data       <= 0;
123
    // 
124
endtask
125
//////////////////////////////////////////////////////////////////////////////////
126
//
127
// Functions:
128
//
129
 
130
//////////////////////////////////////////////////////////////////////////////////
131
endinterface

powered by: WebSVN 2.1.0

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