[41] | 1 | #ifdef VHDL_TESTBENCH |
---|
| 2 | /* |
---|
| 3 | * $Id: Signal_testbench_body.cpp 81 2008-04-15 18:40:01Z rosiere $ |
---|
| 4 | * |
---|
| 5 | * [ Description ] |
---|
| 6 | * |
---|
| 7 | */ |
---|
| 8 | |
---|
| 9 | #include "Behavioural/include/Signal.h" |
---|
| 10 | |
---|
| 11 | namespace morpheo { |
---|
| 12 | namespace behavioural { |
---|
| 13 | |
---|
| 14 | void Signal::testbench_body (Vhdl * & vhdl, |
---|
[75] | 15 | std::string counter_name, |
---|
| 16 | std::string reset_name ) |
---|
[41] | 17 | { |
---|
| 18 | log_printf(FUNC,Behavioural,"testbench_body","Begin"); |
---|
| 19 | |
---|
| 20 | // _list_value is empty if we don't trace |
---|
| 21 | |
---|
[42] | 22 | if ((_presence_port == PORT_VHDL_YES_TESTBENCH_YES) or |
---|
| 23 | (_presence_port == PORT_VHDL_NO_TESTBENCH_YES )) |
---|
| 24 | if (_list_value->empty()== false) |
---|
| 25 | { |
---|
[75] | 26 | std::string separator; |
---|
[42] | 27 | if (_size == 1) |
---|
| 28 | separator = "\'"; |
---|
| 29 | else |
---|
| 30 | separator = "\""; |
---|
| 31 | |
---|
[75] | 32 | std::string signame = (_direction==OUT)?(_name+"_test"):_name; |
---|
[42] | 33 | |
---|
| 34 | vhdl->set_body (""); |
---|
| 35 | vhdl->set_body ("with "+counter_name+" select"); |
---|
| 36 | vhdl->set_body ("\t"+signame+" <="); |
---|
| 37 | |
---|
| 38 | uint32_t cpt = 0; |
---|
[75] | 39 | std::list<std::string>::iterator i = _list_value->begin(); |
---|
[42] | 40 | |
---|
| 41 | while (i != _list_value->end()) |
---|
| 42 | { |
---|
[75] | 43 | std::list<std::string>::iterator j = i; |
---|
[42] | 44 | |
---|
| 45 | ++i; |
---|
| 46 | |
---|
[41] | 47 | vhdl->set_body ("\t"+separator+*j+separator+" when "+toString(cpt++)+","); |
---|
[42] | 48 | } |
---|
| 49 | |
---|
| 50 | if (_size == 1) |
---|
| 51 | vhdl->set_body ("\t'0' when others;"); |
---|
| 52 | else |
---|
| 53 | vhdl->set_body ("\t(others => '0') when others;"); |
---|
| 54 | } |
---|
| 55 | |
---|
[41] | 56 | log_printf(FUNC,Behavioural,"testbench_body","End"); |
---|
| 57 | }; |
---|
| 58 | |
---|
| 59 | }; // end namespace behavioural |
---|
| 60 | }; // end namespace morpheo |
---|
| 61 | #endif |
---|