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

Subversion Repositories openmsp430

[/] [openmsp430/] [trunk/] [core/] [sim/] [rtl_sim/] [src/] [cpu_startup_asic.v] - Blame information for rev 202

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 134 olivier.gi
/*===========================================================================*/
2
/* Copyright (C) 2001 Authors                                                */
3
/*                                                                           */
4
/* This source file may be used and distributed without restriction provided */
5
/* that this copyright statement is not removed from the file and that any   */
6
/* derivative work contains the original copyright notice and the associated */
7
/* disclaimer.                                                               */
8
/*                                                                           */
9
/* This source file is free software; you can redistribute it and/or modify  */
10
/* it under the terms of the GNU Lesser General Public License as published  */
11
/* by the Free Software Foundation; either version 2.1 of the License, or    */
12
/* (at your option) any later version.                                       */
13
/*                                                                           */
14
/* This source is distributed in the hope that it will be useful, but WITHOUT*/
15
/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     */
16
/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public       */
17
/* License for more details.                                                 */
18
/*                                                                           */
19
/* You should have received a copy of the GNU Lesser General Public License  */
20
/* along with this source; if not, write to the Free Software Foundation,    */
21
/* Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA        */
22
/*                                                                           */
23
/*===========================================================================*/
24
/*                                 CPU STARTUP                               */
25
/*---------------------------------------------------------------------------*/
26
/* Test the CPU startup in ASIC mode:                                        */
27
/*                        - Check the CPU startup depending on the           */
28
/*                      CPU_EN / DBG_EN / RESET_N signal.                    */
29
/*                                                                           */
30
/* Author(s):                                                                */
31
/*             - Olivier Girard,    olgirard@gmail.com                       */
32
/*                                                                           */
33
/*---------------------------------------------------------------------------*/
34
/* $Rev: 19 $                                                                */
35
/* $LastChangedBy: olivier.girard $                                          */
36
/* $LastChangedDate: 2009-08-04 23:47:15 +0200 (Tue, 04 Aug 2009) $          */
37
/*===========================================================================*/
38
 
39
`define LONG_TIMEOUT
40
 
41
 
42
integer dco_clk_cnt;
43
always @(negedge dco_clk)
44
  dco_clk_cnt <= dco_clk_cnt+1;
45
 
46
integer mclk_cnt;
47
always @(negedge mclk)
48
  mclk_cnt <= mclk_cnt+1;
49
 
50
integer smclk_cnt;
51
always @(negedge smclk)
52
  smclk_cnt <= smclk_cnt+1;
53
 
54
integer aclk_cnt;
55
always @(negedge aclk)
56
  aclk_cnt <= aclk_cnt+1;
57
 
58
integer inst_cnt;
59
always @(inst_number)
60
  inst_cnt = inst_cnt+1;
61
 
62
integer test_nr;
63 202 olivier.gi
 
64 134 olivier.gi
initial
65
   begin
66
      $display(" ===============================================");
67
      $display("|                 START SIMULATION              |");
68
      $display(" ===============================================");
69
      repeat(5) @(posedge mclk);
70
      stimulus_done = 0;
71
 
72 180 olivier.gi
`ifdef ASIC_CLOCKING
73 134 olivier.gi
      //  ####  CPU_EN=0  ####  DBG_EN=0  ####  RESET_N=0  ####  //
74
      test_nr = 0;
75
 
76
      cpu_en  = 0;
77
      dbg_en  = 0;
78
      reset_n = 0;
79
 
80
      #(100*50);
81
      dco_clk_cnt  = 0;
82
      mclk_cnt     = 0;
83
      smclk_cnt    = 0;
84
      aclk_cnt     = 0;
85
      inst_cnt     = 0;
86
      #(100*50);
87
      if (dco_clk_cnt !== 0) tb_error("====== 0/0/0 TEST 1: DCO_CLK IS RUNNING =====");
88
      if (dco_enable  !== 0) tb_error("====== 0/0/0 TEST 2: DCO_ENABLE  IS SET =====");
89
      if (dco_wkup    !== 0) tb_error("====== 0/0/0 TEST 3: DCO_WKUP    IS SET =====");
90
      if (mclk_cnt    !== 0) tb_error("====== 0/0/0 TEST 4: MCLK    IS RUNNING =====");
91
      if (smclk_cnt   !== 0) tb_error("====== 0/0/0 TEST 5: SMCLK   IS RUNNING =====");
92
`ifdef OSCOFF_EN
93
      if (aclk_cnt    !== 0) tb_error("====== 0/0/0 TEST 6: ACLK    IS RUNNING =====");
94
      if (lfxt_enable !== 0) tb_error("====== 0/0/0 TEST 7: LFXT_ENABLE IS SET =====");
95
      if (lfxt_wkup   !== 0) tb_error("====== 0/0/0 TEST 8: LFXT_WKUP   IS SET =====");
96
`else
97
  `ifdef LFXT_DOMAIN
98
    `ifdef ACLK_DIVIDER
99
      if (aclk_cnt    !== 0) tb_error("====== 0/0/0 TEST 6: ACLK IS NOT RUNNING =====");
100
    `else
101
      if (aclk_cnt    <   3) tb_error("====== 0/0/0 TEST 6: ACLK IS RUNNING =====");
102
    `endif
103
  `else
104
      if (aclk_cnt    !== 0) tb_error("====== 0/0/0 TEST 6: ACLK IS RUNNING =====");
105
  `endif
106
      if (lfxt_enable !== 1) tb_error("====== 0/0/0 TEST 7: LFXT_ENABLE IS CLEARED =====");
107
      if (lfxt_wkup   !== 0) tb_error("====== 0/0/0 TEST 8: LFXT_WKUP   IS SET =====");
108
`endif
109
 
110
      if (inst_cnt    !== 0) tb_error("====== 0/0/0 TEST 9: CPU IS EXECUTING   =====");
111
      dco_clk_cnt  = 0;
112
      mclk_cnt     = 0;
113
      smclk_cnt    = 0;
114
      aclk_cnt     = 0;
115
      inst_cnt     = 0;
116
 
117
      cpu_en  = 0;
118
      dbg_en  = 0;
119
      reset_n = 0;
120
      #(100*50);
121
 
122
      //  ####  CPU_EN=0  ####  DBG_EN=0  ####  RESET_N=1  ####  //
123
      test_nr = 1;
124
 
125
      cpu_en  = 0;
126
      dbg_en  = 0;
127
      reset_n = 1;
128
 
129
      #(100*50);
130
      dco_clk_cnt  = 0;
131
      mclk_cnt     = 0;
132
      smclk_cnt    = 0;
133
      aclk_cnt     = 0;
134
      inst_cnt     = 0;
135
      #(100*50);
136
      if (dco_clk_cnt !== 0) tb_error("====== 0/0/1 TEST 1: DCO_CLK IS RUNNING =====");
137
      if (dco_enable  !== 0) tb_error("====== 0/0/1 TEST 2: DCO_ENABLE  IS SET =====");
138
      if (dco_wkup    !== 0) tb_error("====== 0/0/1 TEST 3: DCO_WKUP    IS SET =====");
139
      if (mclk_cnt    !== 0) tb_error("====== 0/0/1 TEST 4: MCLK    IS RUNNING =====");
140
      if (smclk_cnt   !== 0) tb_error("====== 0/0/1 TEST 5: SMCLK   IS RUNNING =====");
141
      if (inst_cnt    !== 0) tb_error("====== 0/0/1 TEST 6: CPU IS EXECUTING   =====");
142
`ifdef OSCOFF_EN
143
      if (aclk_cnt    !== 0) tb_error("====== 0/0/1 TEST 7: ACLK    IS RUNNING =====");
144
      if (lfxt_enable !== 0) tb_error("====== 0/0/1 TEST 8: LFXT_ENABLE IS SET =====");
145
      if (lfxt_wkup   !== 0) tb_error("====== 0/0/1 TEST 9: LFXT_WKUP   IS SET =====");
146
`else
147
  `ifdef LFXT_DOMAIN
148
    `ifdef ACLK_DIVIDER
149
      if (aclk_cnt    !== 0) tb_error("====== 0/0/1 TEST 7: ACLK IS NOT RUNNING =====");
150
    `else
151
      if (aclk_cnt    <   3) tb_error("====== 0/0/1 TEST 7: ACLK IS RUNNING =====");
152
    `endif
153
  `else
154
      if (aclk_cnt    !== 0) tb_error("====== 0/0/1 TEST 7: ACLK IS RUNNING =====");
155
  `endif
156
      if (lfxt_enable !== 1) tb_error("====== 0/0/1 TEST 8: LFXT_ENABLE IS CLEARED =====");
157
      if (lfxt_wkup   !== 0) tb_error("====== 0/0/1 TEST 9: LFXT_WKUP   IS SET =====");
158
`endif
159
      dco_clk_cnt  = 0;
160
      mclk_cnt     = 0;
161
      smclk_cnt    = 0;
162
      aclk_cnt     = 0;
163
      inst_cnt     = 0;
164
 
165
      cpu_en  = 0;
166
      dbg_en  = 0;
167
      reset_n = 0;
168
      #(100*50);
169
 
170
      //  ####  CPU_EN=0  ####  DBG_EN=1  ####  RESET_N=0  ####  //
171
      test_nr = 2;
172
 
173
      cpu_en  = 0;
174
      dbg_en  = 1;
175
      reset_n = 0;
176
 
177
      #(100*50);
178
      dco_clk_cnt  = 0;
179
      mclk_cnt     = 0;
180
      smclk_cnt    = 0;
181
      aclk_cnt     = 0;
182
      inst_cnt     = 0;
183
      #(100*50);
184
      if (dco_clk_cnt !== 0) tb_error("====== 0/1/0 TEST 1: DCO_CLK IS RUNNING =====");
185
      if (dco_enable  !== 0) tb_error("====== 0/1/0 TEST 2: DCO_ENABLE  IS SET =====");
186
      if (dco_wkup    !== 0) tb_error("====== 0/1/0 TEST 3: DCO_WKUP    IS SET =====");
187
      if (mclk_cnt    !== 0) tb_error("====== 0/1/0 TEST 4: MCLK    IS RUNNING =====");
188
      if (smclk_cnt   !== 0) tb_error("====== 0/1/0 TEST 5: SMCLK   IS RUNNING =====");
189
      if (inst_cnt    !== 0) tb_error("====== 0/1/0 TEST 6: CPU IS EXECUTING   =====");
190
`ifdef OSCOFF_EN
191
      if (aclk_cnt    !== 0) tb_error("====== 0/1/0 TEST 7: ACLK    IS RUNNING =====");
192
      if (lfxt_enable !== 0) tb_error("====== 0/1/0 TEST 8: LFXT_ENABLE IS SET =====");
193
      if (lfxt_wkup   !== 0) tb_error("====== 0/1/0 TEST 9: LFXT_WKUP   IS SET =====");
194
`else
195
  `ifdef LFXT_DOMAIN
196
    `ifdef ACLK_DIVIDER
197
      if (aclk_cnt    !== 0) tb_error("====== 0/1/0 TEST 7: ACLK IS NOT RUNNING =====");
198
    `else
199
      if (aclk_cnt    <   3) tb_error("====== 0/1/0 TEST 7: ACLK IS NOT RUNNING =====");
200
    `endif
201
  `else
202
      if (aclk_cnt    !== 0) tb_error("====== 0/1/0 TEST 7: ACLK IS RUNNING =====");
203
  `endif
204
      if (lfxt_enable !== 1) tb_error("====== 0/1/0 TEST 8: LFXT_ENABLE IS CLEARED =====");
205
      if (lfxt_wkup   !== 0) tb_error("====== 0/1/0 TEST 9: LFXT_WKUP   IS SET     =====");
206
`endif
207
      dco_clk_cnt  = 0;
208
      mclk_cnt     = 0;
209
      smclk_cnt    = 0;
210
      aclk_cnt     = 0;
211
      inst_cnt     = 0;
212
 
213
      cpu_en  = 0;
214
      dbg_en  = 0;
215
      reset_n = 0;
216
      #(100*50);
217
 
218
      //  ####  CPU_EN=1  ####  DBG_EN=0  ####  RESET_N=0  ####  //
219
      test_nr = 3;
220
 
221
      cpu_en  = 1;
222
      dbg_en  = 0;
223
      reset_n = 0;
224
 
225
      #(100*50);
226
      dco_clk_cnt  = 0;
227
      mclk_cnt     = 0;
228
      smclk_cnt    = 0;
229
      aclk_cnt     = 0;
230
      inst_cnt     = 0;
231
      #(100*50);
232
      if (dco_clk_cnt !== 100) tb_error("====== 1/0/0 TEST 1: DCO_CLK IS NOT RUNNING =====");
233
      if (dco_enable  !== 0)   tb_error("====== 1/0/0 TEST 2: DCO_ENABLE  IS SET     =====");
234
      if (dco_wkup    !== 1)   tb_error("====== 1/0/0 TEST 3: DCO_WKUP    IS CLEARED =====");
235
`ifdef SYNC_CPU_EN
236
      if (mclk_cnt    !== 0)   tb_error("====== 1/0/0 TEST 4: MCLK    IS RUNNING     =====");
237
      if (smclk_cnt   !== 0)   tb_error("====== 1/0/0 TEST 5: SMCLK   IS RUNNING     =====");
238
`else
239
      if (mclk_cnt    !== 100) tb_error("====== 1/0/0 TEST 4: MCLK    IS NOT RUNNING =====");
240
    `ifdef SMCLK_MUX
241
      if (smclk_cnt   !== 0)   tb_error("====== 1/0/0 TEST 5: SMCLK   IS NOT RUNNING =====");
242
    `else
243
      if (smclk_cnt   !== 100) tb_error("====== 1/0/0 TEST 5: SMCLK   IS NOT RUNNING =====");
244
    `endif
245
`endif
246
      if (inst_cnt    !== 0)   tb_error("====== 1/0/0 TEST 6: CPU IS EXECUTING       =====");
247
`ifdef ACLK_DIVIDER
248
      if (aclk_cnt    !== 0)   tb_error("====== 1/0/0 TEST 7: ACLK    IS RUNNING =====");
249
`else
250
      if (aclk_cnt    <   3)   tb_error("====== 1/0/0 TEST 7: ACLK    IS NOT RUNNING =====");
251
`endif
252
`ifdef OSCOFF_EN
253
      if (lfxt_enable !== 0)   tb_error("====== 1/0/0 TEST 8: LFXT_ENABLE IS SET     =====");
254
      if (lfxt_wkup   !== 1)   tb_error("====== 1/0/0 TEST 9: LFXT_WKUP   IS CLEARED =====");
255
`else
256
      if (lfxt_enable !== 1)   tb_error("====== 1/0/0 TEST 8: LFXT_ENABLE IS CLEARED =====");
257
      if (lfxt_wkup   !== 0)   tb_error("====== 1/0/0 TEST 9: LFXT_WKUP   IS SET     =====");
258
`endif
259
      dco_clk_cnt  = 0;
260
      mclk_cnt     = 0;
261
      smclk_cnt    = 0;
262
      aclk_cnt     = 0;
263
      inst_cnt     = 0;
264
 
265
      cpu_en  = 0;
266
      dbg_en  = 0;
267
      reset_n = 0;
268
      #(100*50);
269
 
270
      //  ####  CPU_EN=1  ####  DBG_EN=1  ####  RESET_N=0  ####  //
271
      test_nr = 4;
272
 
273
      cpu_en  = 1;
274
      dbg_en  = 1;
275
      reset_n = 0;
276
 
277
      #(100*50);
278
      dco_clk_cnt  = 0;
279
      mclk_cnt     = 0;
280
      smclk_cnt    = 0;
281
      aclk_cnt     = 0;
282
      inst_cnt     = 0;
283
      #(100*50);
284
      if (dco_clk_cnt !== 100) tb_error("====== 1/1/0 TEST 1 (simultaneous): DCO_CLK IS NOT RUNNING =====");
285
      if (dco_enable  !== 0)   tb_error("====== 1/1/0 TEST 2 (simultaneous): DCO_ENABLE  IS SET     =====");
286
      if (dco_wkup    !== 1)   tb_error("====== 1/1/0 TEST 3 (simultaneous): DCO_WKUP    IS CLEARED =====");
287
`ifdef SYNC_CPU_EN
288
      if (mclk_cnt    !== 0)   tb_error("====== 1/1/0 TEST 4 (simultaneous): MCLK    IS RUNNING     =====");
289
      if (smclk_cnt   !== 0)   tb_error("====== 1/1/0 TEST 5 (simultaneous): SMCLK   IS RUNNING     =====");
290
`else
291
      if (mclk_cnt    !== 100) tb_error("====== 1/1/0 TEST 4 (simultaneous): MCLK    IS NOT RUNNING =====");
292
    `ifdef SMCLK_MUX
293
      if (smclk_cnt   !== 0)   tb_error("====== 1/1/0 TEST 5 (simultaneous): SMCLK   IS NOT RUNNING =====");
294
    `else
295
      if (smclk_cnt   !== 100) tb_error("====== 1/1/0 TEST 5 (simultaneous): SMCLK   IS NOT RUNNING =====");
296
    `endif
297
`endif
298
      if (inst_cnt    !== 0)   tb_error("====== 1/1/0 TEST 6 (simultaneous): CPU IS EXECUTING       =====");
299
`ifdef ACLK_DIVIDER
300
      if (aclk_cnt    !== 0)   tb_error("====== 1/1/0 TEST 7 (simultaneous): ACLK    IS RUNNING =====");
301
`else
302
      if (aclk_cnt    <   3)   tb_error("====== 1/1/0 TEST 7 (simultaneous): ACLK    IS NOT RUNNING =====");
303
`endif
304
`ifdef OSCOFF_EN
305
      if (lfxt_enable !== 0)   tb_error("====== 1/1/0 TEST 8 (simultaneous): LFXT_ENABLE IS SET     =====");
306
      if (lfxt_wkup   !== 1)   tb_error("====== 1/1/0 TEST 9 (simultaneous): LFXT_WKUP   IS CLEARED =====");
307
`else
308
      if (lfxt_enable !== 1)   tb_error("====== 1/1/0 TEST 8 (simultaneous): LFXT_ENABLE IS CLEARED =====");
309
      if (lfxt_wkup   !== 0)   tb_error("====== 1/1/0 TEST 9 (simultaneous): LFXT_WKUP   IS SET     =====");
310
`endif
311
      dco_clk_cnt  = 0;
312
      mclk_cnt     = 0;
313
      smclk_cnt    = 0;
314
      aclk_cnt     = 0;
315
      inst_cnt     = 0;
316
 
317
      cpu_en  = 0;
318
      dbg_en  = 0;
319
      reset_n = 0;
320
      #(100*50);
321
 
322
      //  ####  CPU_EN=1  ####  DBG_EN=0  ####  RESET_N=1  ####  //
323
      test_nr = 5;
324
 
325
      cpu_en  = 1;
326
      dbg_en  = 0;
327
      reset_n = 1;
328
 
329
      #(200*50);
330
      dco_clk_cnt  = 0;
331
      mclk_cnt     = 0;
332
      smclk_cnt    = 0;
333
      aclk_cnt     = 0;
334
      inst_cnt     = 0;
335
      #(100*50);
336
      if (dco_clk_cnt !== 100) tb_error("====== 1/0/1 TEST 1 (simultaneous): DCO_CLK IS NOT RUNNING =====");
337
      if (dco_enable  !== 1)   tb_error("====== 1/0/1 TEST 2 (simultaneous): DCO_ENABLE  IS CLEARED =====");
338
      if (dco_wkup    !== 0)   tb_error("====== 1/0/1 TEST 3 (simultaneous): DCO_WKUP    IS SET     =====");
339
      if (mclk_cnt    !== 100) tb_error("====== 1/0/1 TEST 4 (simultaneous): MCLK    IS NOT RUNNING =====");
340
      if (smclk_cnt   !== 100) tb_error("====== 1/0/1 TEST 5 (simultaneous): SMCLK   IS NOT RUNNING =====");
341
      if (inst_cnt    === 0)   tb_error("====== 1/0/1 TEST 6 (simultaneous): CPU IS NOT EXECUTING   =====");
342
      if (aclk_cnt    <   3)   tb_error("====== 1/0/1 TEST 7 (simultaneous): ACLK    IS NOT RUNNING =====");
343
      if (lfxt_enable !== 1)   tb_error("====== 1/0/1 TEST 8 (simultaneous): LFXT_ENABLE IS CLEARED =====");
344
      if (lfxt_wkup   !== 0)   tb_error("====== 1/0/1 TEST 9 (simultaneous): LFXT_WKUP   IS SET     =====");
345
      dco_clk_cnt  = 0;
346
      mclk_cnt     = 0;
347
      smclk_cnt    = 0;
348
      aclk_cnt     = 0;
349
      inst_cnt     = 0;
350
 
351
      cpu_en  = 0;
352
      dbg_en  = 0;
353
      reset_n = 0;
354
      #(100*50);
355
 
356
      //  ####  CPU_EN=0  ####  DBG_EN=1  ####  RESET_N=1  ####  //
357
      test_nr = 6;
358
 
359
      cpu_en  = 0;
360
      dbg_en  = 1;
361
      reset_n = 1;
362
 
363
      #(100*50);
364
      dco_clk_cnt  = 0;
365
      mclk_cnt     = 0;
366
      smclk_cnt    = 0;
367
      aclk_cnt     = 0;
368
      inst_cnt     = 0;
369
      #(100*50);
370
      if (dco_clk_cnt !== 0) tb_error("====== 0/1/1 TEST 1 (simultaneous): DCO_CLK IS  RUNNING =====");
371
      if (dco_enable  !== 0) tb_error("====== 0/1/1 TEST 2 (simultaneous): DCO_ENABLE  IS SET  =====");
372
      if (dco_wkup    !== 0) tb_error("====== 0/1/1 TEST 3 (simultaneous): DCO_WKUP    IS SET  =====");
373
      if (mclk_cnt    !== 0) tb_error("====== 0/1/1 TEST 4 (simultaneous): MCLK    IS  RUNNING =====");
374
      if (smclk_cnt   !== 0) tb_error("====== 0/1/1 TEST 5 (simultaneous): SMCLK   IS  RUNNING =====");
375
      if (inst_cnt    !== 0) tb_error("====== 0/1/1 TEST 6 (simultaneous): CPU IS EXECUTING    =====");
376
`ifdef OSCOFF_EN
377
      if (aclk_cnt    !== 0) tb_error("====== 0/1/1 TEST 7 (simultaneous): ACLK    IS  RUNNING =====");
378
      if (lfxt_enable !== 0) tb_error("====== 0/1/1 TEST 8 (simultaneous): LFXT_ENABLE IS SET  =====");
379
`else
380
  `ifdef LFXT_DOMAIN
381
     `ifdef ACLK_DIVIDER
382
      if (aclk_cnt    !== 0) tb_error("====== 0/1/1 TEST 7 (simultaneous): ACLK IS NOT RUNNING =====");
383
    `else
384
      if (aclk_cnt    <   3) tb_error("====== 0/1/1 TEST 7 (simultaneous): ACLK IS NOT RUNNING =====");
385
    `endif
386
  `else
387
      if (aclk_cnt    !== 0) tb_error("====== 0/1/1 TEST 7 (simultaneous): ACLK IS RUNNING =====");
388
  `endif
389
      if (lfxt_enable !== 1) tb_error("====== 0/1/1 TEST 8 (simultaneous): LFXT_ENABLE IS CLEARED  =====");
390
`endif
391
      if (lfxt_wkup   !== 0) tb_error("====== 0/1/1 TEST 9 (simultaneous): LFXT_WKUP   IS SET  =====");
392
      dco_clk_cnt  = 0;
393
      mclk_cnt     = 0;
394
      smclk_cnt    = 0;
395
      aclk_cnt     = 0;
396
      inst_cnt     = 0;
397
 
398
      cpu_en  = 0;
399
      dbg_en  = 0;
400
      reset_n = 0;
401
      #(100*50);
402
 
403
      //  ####  CPU_EN=1  ####  DBG_EN=1  ####  RESET_N=1  ####  //
404
      test_nr = 7;
405
 
406
      cpu_en  = 1;
407
      dbg_en  = 1;
408
      reset_n = 1;
409
 
410
      #(150*50);
411
      dco_clk_cnt  = 0;
412
      mclk_cnt     = 0;
413
      smclk_cnt    = 0;
414
      aclk_cnt     = 0;
415
      inst_cnt     = 0;
416
      #(100*50);
417
      if (dco_clk_cnt !== 100) tb_error("====== 1/1/1 TEST 1 (simultaneous): DCO_CLK IS NOT RUNNING =====");
418
      if (mclk_cnt    !== 100) tb_error("====== 1/1/1 TEST 2 (simultaneous): MCLK    IS NOT RUNNING =====");
419
      if (smclk_cnt   !== 100) tb_error("====== 1/1/1 TEST 3 (simultaneous): SMCLK   IS NOT RUNNING =====");
420
      if (aclk_cnt    <   3)   tb_error("====== 1/1/1 TEST 4 (simultaneous): ACLK    IS NOT RUNNING =====");
421
      if (dco_enable  !== 1)   tb_error("====== 1/1/1 TEST 5 (simultaneous): DCO_ENABLE  IS CLEARED =====");
422
      if (dco_wkup    !== 0)   tb_error("====== 1/1/1 TEST 6 (simultaneous): DCO_WKUP    IS SET     =====");
423
      if (lfxt_enable !== 1)   tb_error("====== 1/1/1 TEST 7 (simultaneous): LFXT_ENABLE IS CLEARED =====");
424
      if (lfxt_wkup   !== 0)   tb_error("====== 1/1/1 TEST 8 (simultaneous): LFXT_WKUP   IS SET     =====");
425
      if (inst_cnt    !== 0)   tb_error("====== 1/1/1 TEST 9 (simultaneous): CPU IS EXECUTING       =====");
426
      dco_clk_cnt  = 0;
427
      mclk_cnt     = 0;
428
      smclk_cnt    = 0;
429
      aclk_cnt     = 0;
430
      inst_cnt     = 0;
431
 
432
      cpu_en  = 0;
433
      dbg_en  = 0;
434
      reset_n = 0;
435
      #(100*50);
436
 
437 202 olivier.gi
 
438 134 olivier.gi
      //  ####  CPU_EN=1  ####  DBG_EN=1  ####  RESET_N=1  ####  SEQUENCE 1: RESET_N -> CPU_EN -> DBG_EN
439
      test_nr = 8;
440
 
441
      reset_n = 1;
442
      #(150*50);
443
      cpu_en  = 1;
444
      #(150*50);
445
      dbg_en  = 1;
446
 
447
      #(150*50);
448
      dco_clk_cnt  = 0;
449
      mclk_cnt     = 0;
450
      smclk_cnt    = 0;
451
      aclk_cnt     = 0;
452
      inst_cnt     = 0;
453
      #(100*50);
454
      if (dco_clk_cnt !== 100) tb_error("====== 1/1/1 TEST 1 (sequence 1): DCO_CLK IS NOT RUNNING =====");
455
      if (mclk_cnt    !== 100) tb_error("====== 1/1/1 TEST 2 (sequence 1): MCLK    IS NOT RUNNING =====");
456
      if (smclk_cnt   !== 100) tb_error("====== 1/1/1 TEST 3 (sequence 1): SMCLK   IS NOT RUNNING =====");
457
      if (aclk_cnt    <   3)   tb_error("====== 1/1/1 TEST 4 (sequence 1): ACLK    IS NOT RUNNING =====");
458
      if (dco_enable  !== 1)   tb_error("====== 1/1/1 TEST 5 (sequence 1): DCO_ENABLE  IS CLEARED =====");
459
      if (dco_wkup    !== 0)   tb_error("====== 1/1/1 TEST 6 (sequence 1): DCO_WKUP    IS SET     =====");
460
      if (lfxt_enable !== 1)   tb_error("====== 1/1/1 TEST 7 (sequence 1): LFXT_ENABLE IS CLEARED =====");
461
      if (lfxt_wkup   !== 0)   tb_error("====== 1/1/1 TEST 8 (sequence 1): LFXT_WKUP   IS SET     =====");
462
      if (inst_cnt    === 0)   tb_error("====== 1/1/1 TEST 9 (sequence 1): CPU IS NOT EXECUTING   =====");
463
      dco_clk_cnt  = 0;
464
      mclk_cnt     = 0;
465
      smclk_cnt    = 0;
466
      aclk_cnt     = 0;
467
      inst_cnt     = 0;
468
 
469
      cpu_en  = 0;
470
      dbg_en  = 0;
471
      reset_n = 0;
472
      #(100*50);
473
 
474 202 olivier.gi
 
475 134 olivier.gi
      //  ####  CPU_EN=1  ####  DBG_EN=1  ####  RESET_N=1  ####  SEQUENCE 2: RESET_N -> DBG_EN -> CPU_EN
476
      test_nr = 9;
477
 
478
      reset_n = 1;
479
      #(150*50);
480
      dbg_en  = 1;
481
      #(150*50);
482
      cpu_en  = 1;
483
 
484
      #(200*50);
485
      dco_clk_cnt  = 0;
486
      mclk_cnt     = 0;
487
      smclk_cnt    = 0;
488
      aclk_cnt     = 0;
489
      inst_cnt     = 0;
490
      #(100*50);
491
      if (dco_clk_cnt !== 100) tb_error("====== 1/1/1 TEST 1 (sequence 2): DCO_CLK IS NOT RUNNING =====");
492
      if (mclk_cnt    !== 100) tb_error("====== 1/1/1 TEST 2 (sequence 2): MCLK    IS NOT RUNNING =====");
493
      if (smclk_cnt   !== 100) tb_error("====== 1/1/1 TEST 3 (sequence 2): SMCLK   IS NOT RUNNING =====");
494
      if (aclk_cnt    <   3)   tb_error("====== 1/1/1 TEST 4 (sequence 2): ACLK    IS NOT RUNNING =====");
495
      if (dco_enable  !== 1)   tb_error("====== 1/1/1 TEST 5 (sequence 2): DCO_ENABLE  IS CLEARED =====");
496
      if (dco_wkup    !== 0)   tb_error("====== 1/1/1 TEST 6 (sequence 2): DCO_WKUP    IS SET     =====");
497
      if (lfxt_enable !== 1)   tb_error("====== 1/1/1 TEST 7 (sequence 2): LFXT_ENABLE IS CLEARED =====");
498
      if (lfxt_wkup   !== 0)   tb_error("====== 1/1/1 TEST 8 (sequence 2): LFXT_WKUP   IS SET     =====");
499
      if (inst_cnt    !== 0)   tb_error("====== 1/1/1 TEST 9 (sequence 2): CPU IS EXECUTING       =====");
500
      dco_clk_cnt  = 0;
501
      mclk_cnt     = 0;
502
      smclk_cnt    = 0;
503
      aclk_cnt     = 0;
504
      inst_cnt     = 0;
505
 
506
      cpu_en  = 0;
507
      dbg_en  = 0;
508
      reset_n = 0;
509
      #(100*50);
510
 
511
      //  ####  CPU_EN=1  ####  DBG_EN=1  ####  RESET_N=1  ####  SEQUENCE 3: DBG_EN -> RESET_N -> CPU_EN
512
      test_nr = 10;
513
 
514
      dbg_en  = 1;
515
      #(150*50);
516
      reset_n = 1;
517
      #(150*50);
518
      cpu_en  = 1;
519
 
520
      #(200*50);
521
      dco_clk_cnt  = 0;
522
      mclk_cnt     = 0;
523
      smclk_cnt    = 0;
524
      aclk_cnt     = 0;
525
      inst_cnt     = 0;
526
      #(100*50);
527
      if (dco_clk_cnt !== 100) tb_error("====== 1/1/1 TEST 1 (sequence 3): DCO_CLK IS NOT RUNNING =====");
528
      if (mclk_cnt    !== 100) tb_error("====== 1/1/1 TEST 2 (sequence 3): MCLK    IS NOT RUNNING =====");
529
      if (smclk_cnt   !== 100) tb_error("====== 1/1/1 TEST 3 (sequence 3): SMCLK   IS NOT RUNNING =====");
530
      if (aclk_cnt    <   3)   tb_error("====== 1/1/1 TEST 4 (sequence 3): ACLK    IS NOT RUNNING =====");
531
      if (dco_enable  !== 1)   tb_error("====== 1/1/1 TEST 5 (sequence 3): DCO_ENABLE  IS CLEARED =====");
532
      if (dco_wkup    !== 0)   tb_error("====== 1/1/1 TEST 6 (sequence 3): DCO_WKUP    IS SET     =====");
533
      if (lfxt_enable !== 1)   tb_error("====== 1/1/1 TEST 7 (sequence 3): LFXT_ENABLE IS CLEARED =====");
534
      if (lfxt_wkup   !== 0)   tb_error("====== 1/1/1 TEST 8 (sequence 3): LFXT_WKUP   IS SET     =====");
535
      if (inst_cnt    !== 0)   tb_error("====== 1/1/1 TEST 9 (sequence 3): CPU IS EXECUTING       =====");
536
      dco_clk_cnt  = 0;
537
      mclk_cnt     = 0;
538
      smclk_cnt    = 0;
539
      aclk_cnt     = 0;
540
      inst_cnt     = 0;
541
 
542
      cpu_en  = 0;
543
      dbg_en  = 0;
544
      reset_n = 0;
545
      #(100*50);
546
 
547
 
548
      //  ####  CPU_EN=1  ####  DBG_EN=1  ####  RESET_N=1  ####  SEQUENCE 4: DBG_EN -> CPU_EN -> RESET_N
549
      test_nr = 10;
550
 
551
      dbg_en  = 1;
552
      #(150*50);
553
      cpu_en  = 1;
554
      #(150*50);
555
      reset_n = 1;
556
 
557
      #(200*50);
558
      dco_clk_cnt  = 0;
559
      mclk_cnt     = 0;
560
      smclk_cnt    = 0;
561
      aclk_cnt     = 0;
562
      inst_cnt     = 0;
563
      #(100*50);
564
      if (dco_clk_cnt !== 100) tb_error("====== 1/1/1 TEST 1 (sequence 4): DCO_CLK IS NOT RUNNING =====");
565
      if (mclk_cnt    !== 100) tb_error("====== 1/1/1 TEST 2 (sequence 4): MCLK    IS NOT RUNNING =====");
566
      if (smclk_cnt   !== 100) tb_error("====== 1/1/1 TEST 3 (sequence 4): SMCLK   IS NOT RUNNING =====");
567
      if (aclk_cnt    <   3)   tb_error("====== 1/1/1 TEST 4 (sequence 4): ACLK    IS NOT RUNNING =====");
568
      if (dco_enable  !== 1)   tb_error("====== 1/1/1 TEST 5 (sequence 4): DCO_ENABLE  IS CLEARED =====");
569
      if (dco_wkup    !== 0)   tb_error("====== 1/1/1 TEST 6 (sequence 4): DCO_WKUP    IS SET     =====");
570
      if (lfxt_enable !== 1)   tb_error("====== 1/1/1 TEST 7 (sequence 4): LFXT_ENABLE IS CLEARED =====");
571
      if (lfxt_wkup   !== 0)   tb_error("====== 1/1/1 TEST 8 (sequence 4): LFXT_WKUP   IS SET     =====");
572
      if (inst_cnt    !== 0)   tb_error("====== 1/1/1 TEST 9 (sequence 4): CPU IS EXECUTING       =====");
573
      dco_clk_cnt  = 0;
574
      mclk_cnt     = 0;
575
      smclk_cnt    = 0;
576
      aclk_cnt     = 0;
577
      inst_cnt     = 0;
578
 
579
      cpu_en  = 0;
580
      dbg_en  = 0;
581
      reset_n = 0;
582
      #(100*50);
583
 
584
      //  ####  CPU_EN=1  ####  DBG_EN=1  ####  RESET_N=1  ####  SEQUENCE 5: CPU_EN -> DBG_EN -> RESET_N
585
      test_nr = 10;
586
 
587
      cpu_en  = 1;
588
      #(150*50);
589
      dbg_en  = 1;
590
      #(150*50);
591
      reset_n = 1;
592
 
593
      #(200*50);
594
      dco_clk_cnt  = 0;
595
      mclk_cnt     = 0;
596
      smclk_cnt    = 0;
597
      aclk_cnt     = 0;
598
      inst_cnt     = 0;
599
      #(100*50);
600
      if (dco_clk_cnt !== 100) tb_error("====== 1/1/1 TEST 1 (sequence 5): DCO_CLK IS NOT RUNNING =====");
601
      if (mclk_cnt    !== 100) tb_error("====== 1/1/1 TEST 2 (sequence 5): MCLK    IS NOT RUNNING =====");
602
      if (smclk_cnt   !== 100) tb_error("====== 1/1/1 TEST 3 (sequence 5): SMCLK   IS NOT RUNNING =====");
603
      if (aclk_cnt    <   3)   tb_error("====== 1/1/1 TEST 4 (sequence 5): ACLK    IS NOT RUNNING =====");
604
      if (dco_enable  !== 1)   tb_error("====== 1/1/1 TEST 5 (sequence 5): DCO_ENABLE  IS CLEARED =====");
605
      if (dco_wkup    !== 0)   tb_error("====== 1/1/1 TEST 6 (sequence 5): DCO_WKUP    IS SET     =====");
606
      if (lfxt_enable !== 1)   tb_error("====== 1/1/1 TEST 7 (sequence 5): LFXT_ENABLE IS CLEARED =====");
607
      if (lfxt_wkup   !== 0)   tb_error("====== 1/1/1 TEST 8 (sequence 5): LFXT_WKUP   IS SET     =====");
608
      if (inst_cnt    !== 0)   tb_error("====== 1/1/1 TEST 9 (sequence 5): CPU IS EXECUTING       =====");
609
      dco_clk_cnt  = 0;
610
      mclk_cnt     = 0;
611
      smclk_cnt    = 0;
612
      aclk_cnt     = 0;
613
      inst_cnt     = 0;
614
 
615
      cpu_en  = 0;
616
      dbg_en  = 0;
617
      reset_n = 0;
618
      #(100*50);
619
 
620
      //  ####  CPU_EN=1  ####  DBG_EN=1  ####  RESET_N=1  ####  SEQUENCE 6: CPU_EN -> RESET_N -> DBG_EN
621
      test_nr = 10;
622
 
623
      cpu_en  = 1;
624
      #(150*50);
625
      reset_n = 1;
626
      #(150*50);
627
      dbg_en  = 1;
628
 
629
      #(200*50);
630
      dco_clk_cnt  = 0;
631
      mclk_cnt     = 0;
632
      smclk_cnt    = 0;
633
      aclk_cnt     = 0;
634
      inst_cnt     = 0;
635
      #(100*50);
636
      if (dco_clk_cnt !== 100) tb_error("====== 1/1/1 TEST 1 (sequence 6): DCO_CLK IS NOT RUNNING =====");
637
      if (mclk_cnt    !== 100) tb_error("====== 1/1/1 TEST 2 (sequence 6): MCLK    IS NOT RUNNING =====");
638
      if (smclk_cnt   !== 100) tb_error("====== 1/1/1 TEST 3 (sequence 6): SMCLK   IS NOT RUNNING =====");
639
      if (aclk_cnt    <   3)   tb_error("====== 1/1/1 TEST 4 (sequence 6): ACLK    IS NOT RUNNING =====");
640
      if (dco_enable  !== 1)   tb_error("====== 1/1/1 TEST 5 (sequence 6): DCO_ENABLE  IS CLEARED =====");
641
      if (dco_wkup    !== 0)   tb_error("====== 1/1/1 TEST 6 (sequence 6): DCO_WKUP    IS SET     =====");
642
      if (lfxt_enable !== 1)   tb_error("====== 1/1/1 TEST 7 (sequence 6): LFXT_ENABLE IS CLEARED =====");
643
      if (lfxt_wkup   !== 0)   tb_error("====== 1/1/1 TEST 8 (sequence 6): LFXT_WKUP   IS SET     =====");
644
      if (inst_cnt    === 0)   tb_error("====== 1/1/1 TEST 9 (sequence 6): CPU IS NOT EXECUTING   =====");
645
      dco_clk_cnt  = 0;
646
      mclk_cnt     = 0;
647
      smclk_cnt    = 0;
648
      aclk_cnt     = 0;
649
      inst_cnt     = 0;
650
 
651
      #(100*50);
652
 
653
 
654
 
655 202 olivier.gi
 
656 134 olivier.gi
`else
657 202 olivier.gi
      tb_skip_finish("|   (this test is not supported in FPGA mode)   |");
658 134 olivier.gi
`endif
659
 
660
      stimulus_done = 1;
661
   end

powered by: WebSVN 2.1.0

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