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

Subversion Repositories amber

[/] [amber/] [trunk/] [hw/] [vlog/] [tb/] [debug_functions.vh] - Blame information for rev 82

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 csantifort
//////////////////////////////////////////////////////////////////
2
//                                                              //
3
//  Debug Functions                                             //
4
//                                                              //
5
//  This file is part of the Amber project                      //
6
//  http://www.opencores.org/project,amber                      //
7
//                                                              //
8
//  Description                                                 //
9
//  A bunch of non-synthesizable testbench functions            //
10
//                                                              //
11
//  Author(s):                                                  //
12
//      - Conor Santifort, csantifort.amber@gmail.com           //
13
//                                                              //
14
//////////////////////////////////////////////////////////////////
15
//                                                              //
16
// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
17
//                                                              //
18
// This source file may be used and distributed without         //
19
// restriction provided that this copyright statement is not    //
20
// removed from the file and that any derivative work contains  //
21
// the original copyright notice and the associated disclaimer. //
22
//                                                              //
23
// This source file is free software; you can redistribute it   //
24
// and/or modify it under the terms of the GNU Lesser General   //
25
// Public License as published by the Free Software Foundation; //
26
// either version 2.1 of the License, or (at your option) any   //
27
// later version.                                               //
28
//                                                              //
29
// This source is distributed in the hope that it will be       //
30
// useful, but WITHOUT ANY WARRANTY; without even the implied   //
31
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
32
// PURPOSE.  See the GNU Lesser General Public License for more //
33
// details.                                                     //
34
//                                                              //
35
// You should have received a copy of the GNU Lesser General    //
36
// Public License along with this source; if not, download it   //
37
// from http://www.opencores.org/lgpl.shtml                     //
38
//                                                              //
39
//////////////////////////////////////////////////////////////////
40
 
41
// Testbench Functions used in more than one module
42
 
43
 
44
function [31:0] hex_chars_to_32bits;
45
input [8*8-1:0] hex_chars;
46
begin
47
hex_chars_to_32bits[31:28] = hex_chars_to_4bits (hex_chars[8*8-1:7*8]);
48
hex_chars_to_32bits[27:24] = hex_chars_to_4bits (hex_chars[7*8-1:6*8]);
49
hex_chars_to_32bits[23:20] = hex_chars_to_4bits (hex_chars[6*8-1:5*8]);
50
hex_chars_to_32bits[19:16] = hex_chars_to_4bits (hex_chars[5*8-1:4*8]);
51
hex_chars_to_32bits[15:12] = hex_chars_to_4bits (hex_chars[4*8-1:3*8]);
52
hex_chars_to_32bits[11: 8] = hex_chars_to_4bits (hex_chars[3*8-1:2*8]);
53
hex_chars_to_32bits[ 7: 4] = hex_chars_to_4bits (hex_chars[2*8-1:1*8]);
54
hex_chars_to_32bits[ 3: 0] = hex_chars_to_4bits (hex_chars[1*8-1:  0]);
55
end
56
endfunction
57
 
58
 
59 61 csantifort
function [7:0] hex_chars_to_8bits;
60
input [8*2-1:0] hex_chars;
61
begin
62
hex_chars_to_8bits[ 7: 4] = hex_chars_to_4bits (hex_chars[2*8-1:1*8]);
63
hex_chars_to_8bits[ 3: 0] = hex_chars_to_4bits (hex_chars[1*8-1:  0]);
64
end
65
endfunction
66
 
67
 
68 2 csantifort
function [3:0] hex_chars_to_4bits;
69
input [7:0] hex_chars;
70
begin
71
case (hex_chars)
72
    "0" : hex_chars_to_4bits  = 4'h0;
73
    "1" : hex_chars_to_4bits  = 4'h1;
74
    "2" : hex_chars_to_4bits  = 4'h2;
75
    "3" : hex_chars_to_4bits  = 4'h3;
76
    "4" : hex_chars_to_4bits  = 4'h4;
77
    "5" : hex_chars_to_4bits  = 4'h5;
78
    "6" : hex_chars_to_4bits  = 4'h6;
79
    "7" : hex_chars_to_4bits  = 4'h7;
80
    "8" : hex_chars_to_4bits  = 4'h8;
81
    "9" : hex_chars_to_4bits  = 4'h9;
82
    "a" : hex_chars_to_4bits  = 4'ha;
83
    "b" : hex_chars_to_4bits  = 4'hb;
84
    "c" : hex_chars_to_4bits  = 4'hc;
85
    "d" : hex_chars_to_4bits  = 4'hd;
86
    "e" : hex_chars_to_4bits  = 4'he;
87
    "f" : hex_chars_to_4bits  = 4'hf;
88
    "A" : hex_chars_to_4bits  = 4'ha;
89
    "B" : hex_chars_to_4bits  = 4'hb;
90
    "C" : hex_chars_to_4bits  = 4'hc;
91
    "D" : hex_chars_to_4bits  = 4'hd;
92
    "E" : hex_chars_to_4bits  = 4'he;
93
    "F" : hex_chars_to_4bits  = 4'hf;
94
endcase
95
end
96
endfunction
97
 
98
 
99
function [120*8-1:0] align_line;
100
input [120*8-1:0] line;
101
begin
102
case (1'd1)
103
    line[1  *8-1:    0] == 8'd0 : align_line = 960'd0;
104
    line[2  *8-1:1  *8] == 8'd0 : align_line = {line[1  *8-1:  0], 952'd0};
105
    line[3  *8-1:2  *8] == 8'd0 : align_line = {line[2  *8-1:  0], 944'd0};
106
    line[4  *8-1:3  *8] == 8'd0 : align_line = {line[3  *8-1:  0], 936'd0};
107
    line[5  *8-1:4  *8] == 8'd0 : align_line = {line[4  *8-1:  0], 928'd0};
108
    line[6  *8-1:5  *8] == 8'd0 : align_line = {line[5  *8-1:  0], 920'd0};
109
    line[7  *8-1:6  *8] == 8'd0 : align_line = {line[6  *8-1:  0], 912'd0};
110
    line[8  *8-1:7  *8] == 8'd0 : align_line = {line[7  *8-1:  0], 904'd0};
111
    line[9  *8-1:8  *8] == 8'd0 : align_line = {line[8  *8-1:  0], 896'd0};
112
    line[10 *8-1:9  *8] == 8'd0 : align_line = {line[9  *8-1:  0], 888'd0};
113
    line[11 *8-1:10 *8] == 8'd0 : align_line = {line[10 *8-1:  0], 880'd0};
114
    line[12 *8-1:11 *8] == 8'd0 : align_line = {line[11 *8-1:  0], 872'd0};
115
    line[13 *8-1:12 *8] == 8'd0 : align_line = {line[12 *8-1:  0], 864'd0};
116
    line[14 *8-1:13 *8] == 8'd0 : align_line = {line[13 *8-1:  0], 856'd0};
117
    line[15 *8-1:14 *8] == 8'd0 : align_line = {line[14 *8-1:  0], 848'd0};
118
    line[16 *8-1:15 *8] == 8'd0 : align_line = {line[15 *8-1:  0], 840'd0};
119
    line[17 *8-1:16 *8] == 8'd0 : align_line = {line[16 *8-1:  0], 832'd0};
120
    line[18 *8-1:17 *8] == 8'd0 : align_line = {line[17 *8-1:  0], 824'd0};
121
    line[19 *8-1:18 *8] == 8'd0 : align_line = {line[18 *8-1:  0], 816'd0};
122
    line[20 *8-1:19 *8] == 8'd0 : align_line = {line[19 *8-1:  0], 808'd0};
123
    line[21 *8-1:20 *8] == 8'd0 : align_line = {line[20 *8-1:  0], 800'd0};
124
    line[22 *8-1:21 *8] == 8'd0 : align_line = {line[21 *8-1:  0], 792'd0};
125
    line[23 *8-1:22 *8] == 8'd0 : align_line = {line[22 *8-1:  0], 784'd0};
126
    line[24 *8-1:23 *8] == 8'd0 : align_line = {line[23 *8-1:  0], 776'd0};
127
    line[25 *8-1:24 *8] == 8'd0 : align_line = {line[24 *8-1:  0], 768'd0};
128
    line[26 *8-1:25 *8] == 8'd0 : align_line = {line[25 *8-1:  0], 760'd0};
129
    line[27 *8-1:26 *8] == 8'd0 : align_line = {line[26 *8-1:  0], 752'd0};
130
    line[28 *8-1:27 *8] == 8'd0 : align_line = {line[27 *8-1:  0], 744'd0};
131
    line[29 *8-1:28 *8] == 8'd0 : align_line = {line[28 *8-1:  0], 736'd0};
132
    line[30 *8-1:29 *8] == 8'd0 : align_line = {line[29 *8-1:  0], 728'd0};
133
    line[31 *8-1:30 *8] == 8'd0 : align_line = {line[30 *8-1:  0], 720'd0};
134
    line[32 *8-1:31 *8] == 8'd0 : align_line = {line[31 *8-1:  0], 712'd0};
135
    line[33 *8-1:32 *8] == 8'd0 : align_line = {line[32 *8-1:  0], 704'd0};
136
    line[34 *8-1:33 *8] == 8'd0 : align_line = {line[33 *8-1:  0], 696'd0};
137
    line[35 *8-1:34 *8] == 8'd0 : align_line = {line[34 *8-1:  0], 688'd0};
138
    line[36 *8-1:35 *8] == 8'd0 : align_line = {line[35 *8-1:  0], 680'd0};
139
    line[37 *8-1:36 *8] == 8'd0 : align_line = {line[36 *8-1:  0], 672'd0};
140
    line[38 *8-1:37 *8] == 8'd0 : align_line = {line[37 *8-1:  0], 664'd0};
141
    line[39 *8-1:38 *8] == 8'd0 : align_line = {line[38 *8-1:  0], 656'd0};
142
    line[40 *8-1:39 *8] == 8'd0 : align_line = {line[39 *8-1:  0], 648'd0};
143
    line[41 *8-1:40 *8] == 8'd0 : align_line = {line[40 *8-1:  0], 640'd0};
144
    line[42 *8-1:41 *8] == 8'd0 : align_line = {line[41 *8-1:  0], 632'd0};
145
    line[43 *8-1:42 *8] == 8'd0 : align_line = {line[42 *8-1:  0], 624'd0};
146
    line[44 *8-1:43 *8] == 8'd0 : align_line = {line[43 *8-1:  0], 616'd0};
147
    line[45 *8-1:44 *8] == 8'd0 : align_line = {line[44 *8-1:  0], 608'd0};
148
    line[46 *8-1:45 *8] == 8'd0 : align_line = {line[45 *8-1:  0], 600'd0};
149
    line[47 *8-1:46 *8] == 8'd0 : align_line = {line[46 *8-1:  0], 592'd0};
150
    line[48 *8-1:47 *8] == 8'd0 : align_line = {line[47 *8-1:  0], 584'd0};
151
    line[49 *8-1:48 *8] == 8'd0 : align_line = {line[48 *8-1:  0], 576'd0};
152
    line[50 *8-1:49 *8] == 8'd0 : align_line = {line[49 *8-1:  0], 568'd0};
153
    line[51 *8-1:50 *8] == 8'd0 : align_line = {line[50 *8-1:  0], 560'd0};
154
    line[52 *8-1:51 *8] == 8'd0 : align_line = {line[51 *8-1:  0], 552'd0};
155
    line[53 *8-1:52 *8] == 8'd0 : align_line = {line[52 *8-1:  0], 544'd0};
156
    line[54 *8-1:53 *8] == 8'd0 : align_line = {line[53 *8-1:  0], 536'd0};
157
    line[55 *8-1:54 *8] == 8'd0 : align_line = {line[54 *8-1:  0], 528'd0};
158
    line[56 *8-1:55 *8] == 8'd0 : align_line = {line[55 *8-1:  0], 520'd0};
159
    line[57 *8-1:56 *8] == 8'd0 : align_line = {line[56 *8-1:  0], 512'd0};
160
    line[58 *8-1:57 *8] == 8'd0 : align_line = {line[57 *8-1:  0], 504'd0};
161
    line[59 *8-1:58 *8] == 8'd0 : align_line = {line[58 *8-1:  0], 496'd0};
162
    line[60 *8-1:59 *8] == 8'd0 : align_line = {line[59 *8-1:  0], 488'd0};
163
    line[61 *8-1:60 *8] == 8'd0 : align_line = {line[60 *8-1:  0], 480'd0};
164
    line[62 *8-1:61 *8] == 8'd0 : align_line = {line[61 *8-1:  0], 472'd0};
165
    line[63 *8-1:62 *8] == 8'd0 : align_line = {line[62 *8-1:  0], 464'd0};
166
    line[64 *8-1:63 *8] == 8'd0 : align_line = {line[63 *8-1:  0], 456'd0};
167
    line[65 *8-1:64 *8] == 8'd0 : align_line = {line[64 *8-1:  0], 448'd0};
168
    line[66 *8-1:65 *8] == 8'd0 : align_line = {line[65 *8-1:  0], 440'd0};
169
    line[67 *8-1:66 *8] == 8'd0 : align_line = {line[66 *8-1:  0], 432'd0};
170
    line[68 *8-1:67 *8] == 8'd0 : align_line = {line[67 *8-1:  0], 424'd0};
171
    line[69 *8-1:68 *8] == 8'd0 : align_line = {line[68 *8-1:  0], 416'd0};
172
    line[70 *8-1:69 *8] == 8'd0 : align_line = {line[69 *8-1:  0], 408'd0};
173
    line[71 *8-1:70 *8] == 8'd0 : align_line = {line[70 *8-1:  0], 400'd0};
174
    line[72 *8-1:71 *8] == 8'd0 : align_line = {line[71 *8-1:  0], 392'd0};
175
    line[73 *8-1:72 *8] == 8'd0 : align_line = {line[72 *8-1:  0], 384'd0};
176
    line[74 *8-1:73 *8] == 8'd0 : align_line = {line[73 *8-1:  0], 376'd0};
177
    line[75 *8-1:74 *8] == 8'd0 : align_line = {line[74 *8-1:  0], 368'd0};
178
    line[76 *8-1:75 *8] == 8'd0 : align_line = {line[75 *8-1:  0], 360'd0};
179
    line[77 *8-1:76 *8] == 8'd0 : align_line = {line[76 *8-1:  0], 352'd0};
180
    line[78 *8-1:77 *8] == 8'd0 : align_line = {line[77 *8-1:  0], 344'd0};
181
    line[79 *8-1:78 *8] == 8'd0 : align_line = {line[78 *8-1:  0], 336'd0};
182
    line[80 *8-1:79 *8] == 8'd0 : align_line = {line[79 *8-1:  0], 328'd0};
183
    line[81 *8-1:80 *8] == 8'd0 : align_line = {line[80 *8-1:  0], 320'd0};
184
    line[82 *8-1:81 *8] == 8'd0 : align_line = {line[81 *8-1:  0], 312'd0};
185
    line[83 *8-1:82 *8] == 8'd0 : align_line = {line[82 *8-1:  0], 304'd0};
186
    line[84 *8-1:83 *8] == 8'd0 : align_line = {line[83 *8-1:  0], 296'd0};
187
    line[85 *8-1:84 *8] == 8'd0 : align_line = {line[84 *8-1:  0], 288'd0};
188
    line[86 *8-1:85 *8] == 8'd0 : align_line = {line[85 *8-1:  0], 280'd0};
189
    line[87 *8-1:86 *8] == 8'd0 : align_line = {line[86 *8-1:  0], 272'd0};
190
    line[88 *8-1:87 *8] == 8'd0 : align_line = {line[87 *8-1:  0], 264'd0};
191
    line[89 *8-1:88 *8] == 8'd0 : align_line = {line[88 *8-1:  0], 256'd0};
192
    line[90 *8-1:89 *8] == 8'd0 : align_line = {line[89 *8-1:  0], 248'd0};
193
    line[91 *8-1:90 *8] == 8'd0 : align_line = {line[90 *8-1:  0], 240'd0};
194
    line[92 *8-1:91 *8] == 8'd0 : align_line = {line[91 *8-1:  0], 232'd0};
195
    line[93 *8-1:92 *8] == 8'd0 : align_line = {line[92 *8-1:  0], 224'd0};
196
    line[94 *8-1:93 *8] == 8'd0 : align_line = {line[93 *8-1:  0], 216'd0};
197
    line[95 *8-1:94 *8] == 8'd0 : align_line = {line[94 *8-1:  0], 208'd0};
198
    line[96 *8-1:95 *8] == 8'd0 : align_line = {line[95 *8-1:  0], 200'd0};
199
    line[97 *8-1:96 *8] == 8'd0 : align_line = {line[96 *8-1:  0], 192'd0};
200
    line[98 *8-1:97 *8] == 8'd0 : align_line = {line[97 *8-1:  0], 184'd0};
201
    line[99 *8-1:98 *8] == 8'd0 : align_line = {line[98 *8-1:  0], 176'd0};
202
    line[100*8-1:99 *8] == 8'd0 : align_line = {line[99 *8-1:  0], 168'd0};
203
    line[101*8-1:100*8] == 8'd0 : align_line = {line[100*8-1:  0], 160'd0};
204
    line[102*8-1:101*8] == 8'd0 : align_line = {line[101*8-1:  0], 152'd0};
205
    line[103*8-1:102*8] == 8'd0 : align_line = {line[102*8-1:  0], 144'd0};
206
    line[104*8-1:103*8] == 8'd0 : align_line = {line[103*8-1:  0], 136'd0};
207
    line[105*8-1:104*8] == 8'd0 : align_line = {line[104*8-1:  0], 128'd0};
208
    line[106*8-1:105*8] == 8'd0 : align_line = {line[105*8-1:  0], 120'd0};
209
    line[107*8-1:106*8] == 8'd0 : align_line = {line[106*8-1:  0], 112'd0};
210
    line[108*8-1:107*8] == 8'd0 : align_line = {line[107*8-1:  0], 104'd0};
211
    line[109*8-1:108*8] == 8'd0 : align_line = {line[108*8-1:  0], 96'd0};
212
    line[110*8-1:109*8] == 8'd0 : align_line = {line[109*8-1:  0], 88'd0};
213
    line[111*8-1:110*8] == 8'd0 : align_line = {line[110*8-1:  0], 80'd0};
214
    line[112*8-1:111*8] == 8'd0 : align_line = {line[111*8-1:  0], 72'd0};
215
    line[113*8-1:112*8] == 8'd0 : align_line = {line[112*8-1:  0], 64'd0};
216
    line[114*8-1:113*8] == 8'd0 : align_line = {line[113*8-1:  0], 56'd0};
217
    line[115*8-1:114*8] == 8'd0 : align_line = {line[114*8-1:  0], 48'd0};
218
    line[116*8-1:115*8] == 8'd0 : align_line = {line[115*8-1:  0], 40'd0};
219
    line[117*8-1:116*8] == 8'd0 : align_line = {line[116*8-1:  0], 32'd0};
220
    line[118*8-1:117*8] == 8'd0 : align_line = {line[117*8-1:  0], 24'd0};
221
    line[119*8-1:118*8] == 8'd0 : align_line = {line[118*8-1:  0], 16'd0};
222
    line[120*8-1:119*8] == 8'd0 : align_line = {line[119*8-1:  0], 8'd0};
223
 
224
    default:                      align_line = 960'd0;
225
endcase
226
end
227
endfunction
228
 

powered by: WebSVN 2.1.0

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