source: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Usage.cpp

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

1) Add modelsim simulation systemC
2) Modelsim cosimulation systemC / VHDL is not finish !!!! (cf execute_queue and write_unit)
3) Add multi architecture
5) Add template for comparator, multiplier and divider
6) Change Message
Warning) Various test macro have change, many selftest can't compile

File size: 4.9 KB
Line 
1#include "Behavioural/include/Usage.h"
2#include "Common/include/Debug.h"
3#include "Common/include/ErrorMorpheo.h"
4
5namespace morpheo {
6namespace behavioural {
7
8#ifdef MODELSIM_COSIMULATION
9 Tusage_t usage_cosimulation(Tusage_t usage)
10 {
11 Tusage_t _return = usage;
12// _return = usage_unset(_return,USE_SYSTEMC );
13 _return = usage_unset(_return,USE_SYSTEMC_INTERFACE );
14 _return = usage_unset(_return,USE_SYSTEMC_BODY );
15 _return = usage_unset(_return,USE_VHDL );
16 _return = usage_unset(_return,USE_VHDL_TESTBENCH );
17 _return = usage_unset(_return,USE_VHDL_TESTBENCH_ASSERT);
18// _return = usage_unset(_return,USE_POSITION );
19 _return = usage_unset(_return,USE_STATISTICS );
20// _return = usage_unset(_return,USE_INFORMATION );
21// _return = usage_unset(_return,USE_HEADER );
22 _return = usage_set (_return,USE_COSIMULATION );
23
24 return _return;
25 }
26#endif
27
28 Tusage_t usage_set (Tusage_t usage, Tusage_t flag)
29 {
30 return ( usage | flag);
31 }
32
33 Tusage_t usage_unset (Tusage_t usage, Tusage_t flag)
34 {
35 return ~(~usage | flag);
36 }
37
38 bool usage_is_set (Tusage_t usage, Tusage_t flag)
39 {
40 return ((usage & flag) != 0);
41 }
42#undef FUNCTION
43#define FUNCTION "usage_environment"
44 Tusage_t usage_environment (Tusage_t usage)
45 {
46#ifndef SYSTEMC
47 if (usage_is_set(usage,USE_SYSTEMC_INTERFACE))
48 throw ERRORMORPHEO(FUNCTION,_("Component use the flag \"USE_SYSTEMC_INTERFACE\", but the macro's compiler \"SYSTEMC\" is unset.\n"));
49 if (usage_is_set(usage,USE_SYSTEMC_BODY))
50 throw ERRORMORPHEO(FUNCTION,_("Component use the flag \"USE_SYSTEMC_BODY\", but the macro's compiler \"SYSTEMC\" is unset.\n"));
51#endif
52#ifndef VHDL
53 if (usage_is_set(usage,USE_VHDL))
54 throw ERRORMORPHEO(FUNCTION,_("Component use the flag \"USE_VHDL\", but the macro's compiler \"VHDL\" is unset.\n"));
55#endif
56#ifndef VHDL_TESTBENCH
57 if (usage_is_set(usage,USE_VHDL_TESTBENCH))
58 throw ERRORMORPHEO(FUNCTION,_("Component use the flag \"USE_VHDL_TESTBENCH\", but the macro's compiler \"VHDL_TESTBENCH\" is unset.\n"));
59#endif
60#ifndef VHDL_TESTBENCH_ASSERT
61 if (usage_is_set(usage,USE_VHDL_TESTBENCH_ASSERT))
62 throw ERRORMORPHEO(FUNCTION,_("Component use the flag \"USE_VHDL_TESTBENCH_ASSERT\", but the macro's compiler \"VHDL_TESTBENCH_ASSERT\" is unset.\n"));
63#endif
64#ifndef POSITION
65 if (usage_is_set(usage,USE_POSITION))
66 throw ERRORMORPHEO(FUNCTION,_("Component use the flag \"USE_POSITION\", but the macro's compiler \"POSITION\" is unset.\n"));
67#endif
68#ifndef STATISTICS
69 if (usage_is_set(usage,USE_STATISTICS))
70 throw ERRORMORPHEO(FUNCTION,_("Component use the flag \"USE_STATISTICS\", but the macro's compiler \"STATISTICS\" is unset.\n"));
71#endif
72// #ifndef INFORMATION
73// if (usage_is_set(usage,USE_INFORMATION))
74// throw ERRORMORPHEO(FUNCTION,_("Component use the flag \"USE_INFORMATION\", but the macro's compiler \"INFORMATION\" is unset.\n"));
75// #endif
76
77#ifndef DEBUG
78#endif
79
80 if (usage_is_set(usage,USE_STATISTICS) and not usage_is_set(usage,USE_SYSTEMC_BODY))
81 throw ERRORMORPHEO(FUNCTION,_("Usage flags conflit : to use the statistics, you must set flag USE_SYSTEMC_BODY\n"));
82
83// if (usage_is_set(usage,USE_INFORMATION) and not usage_is_set(usage,USE_STATISTICS))
84// throw ERRORMORPHEO(FUNCTION,_("Usage flags conflit : to use the information, you must set flag USE_STATISTICS\n"));
85
86 if (usage_is_set(usage,USE_VHDL_TESTBENCH) and not usage_is_set(usage,USE_SYSTEMC_BODY))
87 throw ERRORMORPHEO(FUNCTION,_("Usage flags conflit : to use the vhdl's test bench, you must set flag USE_SYSTEMC_BODY\n"));
88
89 if (usage_is_set(usage,USE_VHDL_TESTBENCH) and not usage_is_set(usage,USE_VHDL))
90 throw ERRORMORPHEO(FUNCTION,_("Usage flags conflit : to use the vhdl's test bench, you must set flag USE_VHDL\n"));
91
92 if (usage_is_set(usage,USE_VHDL_TESTBENCH_ASSERT) and not usage_is_set(usage,USE_VHDL_TESTBENCH))
93 throw ERRORMORPHEO(FUNCTION,_("Usage flags conflit : to use an assert in vhdl's test bench, you must set flag USE_VHDL_TESTBENCH\n"));
94
95 return usage;
96 }
97
98 Tusage_t usage_all (void)
99 {
100 Tusage_t usage = USE_NONE;
101
102#ifdef SYSTEMC
103 usage = usage_set(usage,USE_SYSTEMC_INTERFACE);
104 usage = usage_set(usage,USE_SYSTEMC_BODY);
105#endif
106#ifdef VHDL
107 usage = usage_set(usage,USE_VHDL);
108#endif
109#ifdef VHDL_TESTBENCH
110 usage = usage_set(usage,USE_VHDL_TESTBENCH);
111#endif
112#ifdef VHDL_TESTBENCH_ASSERT
113 usage = usage_set(usage,USE_VHDL_TESTBENCH_ASSERT);
114#endif
115#ifdef POSITION
116 usage = usage_set(usage,USE_POSITION);
117#endif
118#ifdef STATISTICS
119 usage = usage_set(usage,USE_STATISTICS);
120#endif
121// #ifdef INFORMATION
122// usage = usage_set(usage,USE_INFORMATION);
123// #endif
124 usage = usage_set(usage,USE_HEADER);
125#ifdef DEBUG
126#endif
127
128 return usage;
129 }
130
131
132}; // end namespace behavioural
133}; // end namespace morpheo
Note: See TracBrowser for help on using the repository browser.