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

Subversion Repositories sgmii

[/] [sgmii/] [trunk/] [src/] [mAltGX/] [mAlt8b10benc_tb.v] - Blame information for rev 13

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 13 jefflieu
`define NO_PLI
2
`timescale 1ns / 1ns
3
 
4
module tb;
5
 
6
initial begin
7
  $display("***********************************************************");
8
  $display("title:  tb.demo_enc");
9
  $display("desc:   demonstration testbench");
10
  $display("        (c) Altera Inc. ALL RIGHTS RESERVED           ");
11
  $display("        www.altera.com                                ");
12
  $display("***********************************************************");
13
  $display("PURPOSE: Demonstrate basic function and provide hookup example.");
14
  $display("PURPOSE: Note: no error checking is performed.");
15
  $display("METHOD:  A generator emits several random data and control values.");
16
  $display("***********************************************************");
17
end
18
 
19
/**********************************************************************/
20
// DEFINES AND INCLUDES
21
/**********************************************************************/
22
 
23
`define TBID "tb.demo_enc"
24
 
25
reg  clk;
26
reg  reset_n;
27
reg  enc_idle_ins;
28
reg  enc_kin;
29
reg  enc_enable;
30
reg [7:0] enc_datain;
31
reg  enc_rdin;
32
reg  enc_rdforce;
33
 
34
wire  enc_kerr;
35
wire [9:0] enc_dataout;
36
wire  enc_valid;
37
wire  enc_rdout;
38
wire  enc_rdcascade;
39
 
40
mAlt8b10benc mAlt8b10benc(
41
 .clk (clk) // input 
42
,.reset_n (reset_n) // input 
43
,.idle_ins (enc_idle_ins) // input 
44
,.kin (enc_kin) // input 
45
,.ena (enc_enable) // input 
46
,.datain (enc_datain) // input [7:0]
47
,.rdin (enc_rdin) // input 
48
,.rdforce (enc_rdforce) // input 
49
,.kerr (enc_kerr) // output 
50
,.dataout (enc_dataout) // output [9:0]
51
,.valid (enc_valid) // output 
52
,.rdout (enc_rdout) // output 
53
,.rdcascade (enc_rdcascade) // output 
54
);
55
 
56
initial begin
57
        enc_enable = 1;
58
        enc_rdforce = 0;
59
        enc_rdin = 0;
60
        enc_idle_ins = 0;
61
        @(posedge clk) {enc_kin, enc_datain} <= 9'b1_101_11100;
62
        while (!reset_n) @(posedge clk);
63
        repeat (5)
64
                @(posedge clk) {enc_kin, enc_datain} <= 9'b1_101_11100;
65
        @(posedge clk) {enc_kin, enc_datain} <= 9'h8;
66
        @(posedge clk) {enc_kin, enc_datain} <= 9'h82;
67
        @(posedge clk) {enc_kin, enc_datain} <= 9'hb2;
68
        @(posedge clk) {enc_kin, enc_datain} <= 9'hb1;
69
        @(posedge clk) {enc_kin, enc_datain} <= 9'hc2;
70
        @(posedge clk) {enc_kin, enc_datain} <= 9'h6a;
71
        @(posedge clk) {enc_kin, enc_datain} <= 9'h7f;
72
        @(posedge clk) {enc_kin, enc_datain} <= 9'h93;
73
        @(posedge clk) {enc_kin, enc_datain} <= 9'ha;
74
        @(posedge clk) {enc_kin, enc_datain} <= 9'h6e;
75
        @(posedge clk) {enc_kin, enc_datain} <= 9'h18;
76
        @(posedge clk) {enc_kin, enc_datain} <= 9'b1_100_11100;
77
        @(posedge clk) {enc_kin, enc_datain} <= 9'hfc;
78
        @(posedge clk) {enc_kin, enc_datain} <= 9'h5;
79
        @(posedge clk) {enc_kin, enc_datain} <= 9'h2c;
80
        @(posedge clk) {enc_kin, enc_datain} <= 9'h9b;
81
        @(posedge clk) {enc_kin, enc_datain} <= 9'he2;
82
        @(posedge clk) {enc_kin, enc_datain} <= 9'hfe;
83
        @(posedge clk) {enc_kin, enc_datain} <= 9'hb;
84
        @(posedge clk) {enc_kin, enc_datain} <= 9'hcd;
85
        @(posedge clk) {enc_kin, enc_datain} <= 9'h28;
86
        @(posedge clk) {enc_kin, enc_datain} <= 9'h73;
87
        @(posedge clk) {enc_kin, enc_datain} <= 9'h9;
88
        @(posedge clk) {enc_kin, enc_datain} <= 9'hd2;
89
        @(posedge clk) {enc_kin, enc_datain} <= 9'h93;
90
        @(posedge clk) {enc_kin, enc_datain} <= 9'h32;
91
        @(posedge clk) {enc_kin, enc_datain} <= 9'b1_101_11100;
92
        @(posedge clk) {enc_kin, enc_datain} <= 9'he9;
93
        @(posedge clk) {enc_kin, enc_datain} <= 9'hea;
94
        @(posedge clk) {enc_kin, enc_datain} <= 9'h55;
95
        @(posedge clk) {enc_kin, enc_datain} <= 9'hde;
96
        @(posedge clk) {enc_kin, enc_datain} <= 9'hdb;
97
        @(posedge clk) {enc_kin, enc_datain} <= 9'b1_111_10111;
98
        @(posedge clk) {enc_kin, enc_datain} <= 9'h24;
99
        @(posedge clk) {enc_kin, enc_datain} <= 9'h11;
100
        @(posedge clk) {enc_kin, enc_datain} <= 9'h67;
101
        @(posedge clk) {enc_kin, enc_datain} <= 9'h96;
102
        @(posedge clk) {enc_kin, enc_datain} <= 9'h52;
103
        @(posedge clk) {enc_kin, enc_datain} <= 9'h47;
104
        @(posedge clk) {enc_kin, enc_datain} <= 9'h42;
105
        @(posedge clk) {enc_kin, enc_datain} <= 9'b1_110_11100;
106
        @(posedge clk) {enc_kin, enc_datain} <= 9'hfa;
107
        @(posedge clk) {enc_kin, enc_datain} <= 9'hfc;
108
        @(posedge clk) {enc_kin, enc_datain} <= 9'hec;
109
        @(posedge clk) {enc_kin, enc_datain} <= 9'h17;
110
        @(posedge clk) {enc_kin, enc_datain} <= 9'he3;
111
        @(posedge clk) {enc_kin, enc_datain} <= 9'b1_111_11110;
112
        @(posedge clk) {enc_kin, enc_datain} <= 9'b1_111_11101;
113
        @(posedge clk) {enc_kin, enc_datain} <= 9'h5d;
114
        @(posedge clk) {enc_kin, enc_datain} <= 9'hd2;
115
        @(posedge clk) {enc_kin, enc_datain} <= 9'h66;
116
        @(posedge clk) {enc_kin, enc_datain} <= 9'he1;
117
        @(posedge clk) {enc_kin, enc_datain} <= 9'h56;
118
        @(posedge clk) {enc_kin, enc_datain} <= 9'h56;
119
        @(posedge clk) {enc_kin, enc_datain} <= 9'b1_111_11100;
120
        @(posedge clk) {enc_kin, enc_datain} <= 9'h2b;
121
        @(posedge clk) {enc_kin, enc_datain} <= 9'h80;
122
        @(posedge clk) {enc_kin, enc_datain} <= 9'b1_011_11100;
123
        @(posedge clk) {enc_kin, enc_datain} <= 9'h7c;
124
        @(posedge clk) {enc_kin, enc_datain} <= 9'ha7;
125
        @(posedge clk) {enc_kin, enc_datain} <= 9'hed;
126
        @(posedge clk) {enc_kin, enc_datain} <= 9'hc9;
127
        @(posedge clk) {enc_kin, enc_datain} <= 9'h3a;
128
        @(posedge clk) {enc_kin, enc_datain} <= 9'b1_111_11111;
129
        @(posedge clk) {enc_kin, enc_datain} <= 9'ha0;
130
        @(posedge clk) {enc_kin, enc_datain} <= 9'h12;
131
        @(posedge clk) {enc_kin, enc_datain} <= 9'heb;
132
        @(posedge clk) {enc_kin, enc_datain} <= 9'h91;
133
        @(posedge clk) {enc_kin, enc_datain} <= 9'h8d;
134
        @(posedge clk) {enc_kin, enc_datain} <= 9'hc;
135
        @(posedge clk) {enc_kin, enc_datain} <= 9'h19;
136
        @(posedge clk) {enc_kin, enc_datain} <= 9'h10;
137
        @(posedge clk) {enc_kin, enc_datain} <= 9'hb1;
138
        @(posedge clk) {enc_kin, enc_datain} <= 9'h6c;
139
        @(posedge clk) {enc_kin, enc_datain} <= 9'b1_010_11100;
140
        @(posedge clk) {enc_kin, enc_datain} <= 9'h65;
141
        @(posedge clk) {enc_kin, enc_datain} <= 9'h80;
142
        @(posedge clk) {enc_kin, enc_datain} <= 9'h8b;
143
        @(posedge clk) {enc_kin, enc_datain} <= 9'h30;
144
        @(posedge clk) {enc_kin, enc_datain} <= 9'h96;
145
        $display("%0t insert idles", $time);
146
        enc_idle_ins = 1; enc_enable <= 0;
147
        repeat (4) @(posedge clk);
148
        $display("%0t stop inserting idles", $time);
149
        enc_enable <= 1;
150
        @(posedge clk) {enc_kin, enc_datain} <= 9'h15;
151
        @(posedge clk) {enc_kin, enc_datain} <= 9'h7c;
152
        @(posedge clk) {enc_kin, enc_datain} <= 9'b1_111_11011;
153
        @(posedge clk) {enc_kin, enc_datain} <= 9'hc2;
154
        @(posedge clk) {enc_kin, enc_datain} <= 9'hae;
155
        @(posedge clk) {enc_kin, enc_datain} <= 9'h9c;
156
        @(posedge clk) {enc_kin, enc_datain} <= 9'h13;
157
        @(posedge clk) {enc_kin, enc_datain} <= 9'h0;
158
        @(posedge clk) {enc_kin, enc_datain} <= 9'b1_001_11100;
159
        @(posedge clk) {enc_kin, enc_datain} <= 9'h57;
160
        @(posedge clk) {enc_kin, enc_datain} <= 9'h4f;
161
        @(posedge clk) {enc_kin, enc_datain} <= 9'h1f;
162
        @(posedge clk) {enc_kin, enc_datain} <= 9'hb7;
163
        @(posedge clk) {enc_kin, enc_datain} <= 9'h73;
164
        @(posedge clk) {enc_kin, enc_datain} <= 9'hc1;
165
        @(posedge clk) {enc_kin, enc_datain} <= 9'had;
166
        @(posedge clk) {enc_kin, enc_datain} <= 9'hea;
167
        @(posedge clk) {enc_kin, enc_datain} <= 9'b1_000_1100;
168
        @(posedge clk) {enc_kin, enc_datain} <= 9'h5a;
169
        @(posedge clk) {enc_kin, enc_datain} <= 9'h71;
170
        @(posedge clk) {enc_kin, enc_datain} <= 9'h6d;
171
        @(posedge clk) {enc_kin, enc_datain} <= 9'b1_000_11100;
172
        @(posedge clk) {enc_kin, enc_datain} <= 9'h42;
173
        @(posedge clk) {enc_kin, enc_datain} <= 9'h27;
174
        @(posedge clk) {enc_kin, enc_datain} <= 9'h57;
175
        @(posedge clk) {enc_kin, enc_datain} <= 9'h4d;
176
        $display("%0t turn off enc_enable", $time);
177
        enc_enable <= 0;
178
        repeat (4) @(posedge clk);
179
        $display("%0t turn on enc_enable", $time);
180
        enc_enable <= 1;
181
        @(posedge clk) {enc_kin, enc_datain} <= 9'h46;
182
        @(posedge clk) {enc_kin, enc_datain} <= 9'h26;
183
        @(posedge clk) {enc_kin, enc_datain} <= 9'hae;
184
        @(posedge clk) {enc_kin, enc_datain} <= 9'h9c;
185
        @(posedge clk) {enc_kin, enc_datain} <= 9'h13;
186
        @(posedge clk) {enc_kin, enc_datain} <= 9'h0;
187
        @(posedge clk) {enc_kin, enc_datain} <= 9'b1_001_11100;
188
        @(posedge clk) {enc_kin, enc_datain} <= 9'h57;
189
        @(posedge clk) {enc_kin, enc_datain} <= 9'h4f;
190
        @(posedge clk) {enc_kin, enc_datain} <= 9'h1f;
191
        @(posedge clk) {enc_kin, enc_datain} <= 9'hb7;
192
        @(posedge clk) {enc_kin, enc_datain} <= 9'h73;
193
        @(posedge clk) {enc_kin, enc_datain} <= 9'hf3;
194
        $display("$$$ Exit status for testbench tb.demo_enc :  TESTBENCH_PASSED ");
195
        $finish;
196
 
197
end
198
 
199
// clock generator (100 MHz)
200
initial begin
201
        clk <= 0;
202
        forever begin
203
                #10;
204
                clk = !clk;
205
        end
206
end
207
 
208
// reset task
209
initial begin
210
        reset_n <= 0;
211
        repeat (10) @(posedge clk);
212
        reset_n <= 1;
213
end
214
 
215
// logging task
216
 
217
always @(posedge clk) begin
218
        $display("%0t enc_enable = %b enc_datain = %x, enc_kin = %b, enc_dataout = %x",
219
                $time, enc_enable, enc_datain, enc_kin, enc_dataout);
220
end
221
endmodule

powered by: WebSVN 2.1.0

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