source: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_fifo_testbench_test.cpp @ 42

Last change on this file since 42 was 42, checked in by rosiere, 17 years ago

Modification des classes d'encapsulation des interfaces :

  • gère les signaux à écrire dans le vhdl
  • les traces pour le testbench
  • la génération des vhdl structurelles

-> test sur la Pattern History Table

File size: 2.1 KB
Line 
1#ifdef VHDL_TESTBENCH
2/*
3 * $Id$
4 *
5 * [ Description ]
6 *
7 */
8
9#include "Behavioural/include/Interface_fifo.h"
10
11namespace morpheo              {
12namespace behavioural          {
13
14  string Interface_fifo::testbench_test (Vhdl * & vhdl,
15                                         string   counter_name,
16                                         string   reset_name  )
17  {
18    log_printf(FUNC,Behavioural,"testbench_test","Begin");
19    string test_name;
20   
21    if (_test_exhaustive == true)
22      test_name = Interface::testbench_test(vhdl,counter_name,reset_name);
23    else
24      {
25        vhdl->set_body("");
26        vhdl->set_body("-- Test partial");
27        vhdl->set_body("");
28
29               test_name        = testbench_test_name        (vhdl);
30        string test_name_tmp    = test_name+"_tmp";
31        string test_name_ok     = testbench_test_ok          (vhdl);
32        string test_transaction = testbench_test_transaction (vhdl);
33
34        vhdl->set_signal(test_name_tmp,1);
35
36        if (_list_cycle->empty()== false)
37          {
38            vhdl->set_body ("with "+counter_name+" select");
39            vhdl->set_body ("\t"+test_name_tmp+" <=");
40       
41            list<uint32_t>::iterator i = _list_cycle->begin();
42           
43            while (i != _list_cycle->end())
44              {
45                vhdl->set_body ("\t"+test_transaction+" and "+test_name_ok+" when "+toString(*i)+",");
46                ++i;
47              }
48            vhdl->set_body ("\tnot "+test_transaction+" when others;");
49          }
50        else
51          vhdl->set_body (test_name_tmp+" <= not "+test_transaction+";");
52       
53        vhdl->set_body("");
54        vhdl->set_body(test_name + " <= '1' when ("+reset_name+" = '0') else "+test_name_tmp+";");
55
56#ifdef VHDL_TESTBENCH_ASSERT
57        if (_list_cycle->empty()== false)
58          {
59            vhdl->set_body("");
60            vhdl->set_body("-- Assert ...");
61            vhdl->set_body("");
62
63            uint32_t                 j = 0;
64            list<uint32_t>::iterator i = _list_cycle->begin();
65           
66            while (i != _list_cycle->end())
67              {
68                vhdl->set_body("assert not ( ("+counter_name+" = "+toString(*i)+")) report \"***** <"+_name+"> interface's test number "+toString(j)+" *****\" severity NOTE;");
69                j++;
70                ++i;
71              }
72
73            vhdl->set_body("");
74          }
75#endif
76      }
77
78    log_printf(FUNC,Behavioural,"testbench_test","End");
79
80    return test_name;
81
82  };
83
84}; // end namespace behavioural         
85}; // end namespace morpheo             
86#endif
Note: See TracBrowser for help on using the repository browser.