- Timestamp:
- Apr 14, 2009, 8:39:12 PM (15 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator
- Files:
-
- 3 added
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/Makefile.defs
r112 r113 7 7 # 8 8 9 ENTITY = Comparator 10 9 11 #-----[ Directory ]---------------------------------------- 10 12 DIR_COMPONENT_MORPHEO = ../../.. -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/SelfTest/include/test.h
r112 r113 11 11 #endif 12 12 13 #define NB_ITERATION 1 13 #define NB_ITERATION 1024 14 14 #define CYCLE_MAX (1024*NB_ITERATION) 15 15 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/SelfTest/src/main.cpp
r112 r113 19 19 err (_(" * type (Tcomparator_scheme_t)\n")); 20 20 21 22 21 exit (1); 23 22 } … … 34 33 uint32_t x = 1; 35 34 35 string name = argv[x++]; 36 36 uint32_t _size_data; 37 37 bool _is_signed; … … 41 41 SELFTEST0(_is_signed,bool ,argv,x); 42 42 SELFTEST0(_type ,Tcomparator_scheme_t,argv,x); 43 44 string name = argv[x++];45 43 46 44 int _return = EXIT_SUCCESS; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/SelfTest/src/test.cpp
r112 r113 9 9 #include "Behavioural/Generic/Comparator/SelfTest/include/test.h" 10 10 #include "Behavioural/include/Allocation.h" 11 #include "Common/include/BitManipulation.h" 11 12 12 13 void test (string name, … … 50 51 sc_clock * in_CLOCK = new sc_clock ("clock", 1.0, 0.5); 51 52 sc_signal<Tcontrol_t> * in_NRESET = new sc_signal<Tcontrol_t> ("NRESET"); 53 54 sc_signal<Tdata_t > * in_COMPARE_DATA_0; 55 sc_signal<Tdata_t > * in_COMPARE_DATA_1; 56 sc_signal<Tcontrol_t> * out_COMPARE_TEST ; 57 58 ALLOC0_SC_SIGNAL( in_COMPARE_DATA_0," in_COMPARE_DATA_0",Tdata_t ); 59 ALLOC0_SC_SIGNAL( in_COMPARE_DATA_1," in_COMPARE_DATA_1",Tdata_t ); 60 ALLOC0_SC_SIGNAL(out_COMPARE_TEST ,"out_COMPARE_TEST ",Tcontrol_t); 52 61 53 62 /******************************************************** … … 60 69 (*(_Comparator->in_NRESET)) (*(in_NRESET)); 61 70 62 71 INSTANCE0_SC_SIGNAL(_Comparator, in_COMPARE_DATA_0); 72 INSTANCE0_SC_SIGNAL(_Comparator, in_COMPARE_DATA_1); 73 INSTANCE0_SC_SIGNAL(_Comparator,out_COMPARE_TEST ); 74 63 75 msg(_("<%s> : Start Simulation ............\n"),name.c_str()); 64 76 … … 90 102 LABEL("Iteration %d",iteration); 91 103 104 uint64_t data0 = range<uint64_t>(rand(),_param->_size_data); 105 uint64_t data1 = range<uint64_t>(rand(),_param->_size_data); 106 107 in_COMPARE_DATA_0->write(static_cast<Tdata_t>(data0)); 108 in_COMPARE_DATA_1->write(static_cast<Tdata_t>(data1)); 109 110 SC_START(0); 111 112 Tcontrol_t test = false; 113 switch (_param->_size_data) 114 { 115 case 8 : 116 { 117 if (_param->_is_signed) 118 switch (_param->_type) 119 { 120 case COMPARATOR_EQUAL : test = static_cast< int8_t>(data0) == static_cast< int8_t>(data1); break; 121 case COMPARATOR_NOT_EQUAL : test = static_cast< int8_t>(data0) != static_cast< int8_t>(data1); break; 122 case COMPARATOR_GREATER : test = static_cast< int8_t>(data0) > static_cast< int8_t>(data1); break; 123 case COMPARATOR_GREATER_OR_EQUAL : test = static_cast< int8_t>(data0) >= static_cast< int8_t>(data1); break; 124 case COMPARATOR_LESS : test = static_cast< int8_t>(data0) < static_cast< int8_t>(data1); break; 125 case COMPARATOR_LESS_OR_EQUAL : test = static_cast< int8_t>(data0) <= static_cast< int8_t>(data1); break; 126 } 127 else 128 switch (_param->_type) 129 { 130 case COMPARATOR_EQUAL : test = static_cast<uint8_t>(data0) == static_cast<uint8_t>(data1); break; 131 case COMPARATOR_NOT_EQUAL : test = static_cast<uint8_t>(data0) != static_cast<uint8_t>(data1); break; 132 case COMPARATOR_GREATER : test = static_cast<uint8_t>(data0) > static_cast<uint8_t>(data1); break; 133 case COMPARATOR_GREATER_OR_EQUAL : test = static_cast<uint8_t>(data0) >= static_cast<uint8_t>(data1); break; 134 case COMPARATOR_LESS : test = static_cast<uint8_t>(data0) < static_cast<uint8_t>(data1); break; 135 case COMPARATOR_LESS_OR_EQUAL : test = static_cast<uint8_t>(data0) <= static_cast<uint8_t>(data1); break; 136 } 137 break; 138 } 139 case 16 : 140 { 141 if (_param->_is_signed) 142 switch (_param->_type) 143 { 144 case COMPARATOR_EQUAL : test = static_cast< int16_t>(data0) == static_cast< int16_t>(data1); break; 145 case COMPARATOR_NOT_EQUAL : test = static_cast< int16_t>(data0) != static_cast< int16_t>(data1); break; 146 case COMPARATOR_GREATER : test = static_cast< int16_t>(data0) > static_cast< int16_t>(data1); break; 147 case COMPARATOR_GREATER_OR_EQUAL : test = static_cast< int16_t>(data0) >= static_cast< int16_t>(data1); break; 148 case COMPARATOR_LESS : test = static_cast< int16_t>(data0) < static_cast< int16_t>(data1); break; 149 case COMPARATOR_LESS_OR_EQUAL : test = static_cast< int16_t>(data0) <= static_cast< int16_t>(data1); break; 150 } 151 else 152 switch (_param->_type) 153 { 154 case COMPARATOR_EQUAL : test = static_cast<uint16_t>(data0) == static_cast<uint16_t>(data1); break; 155 case COMPARATOR_NOT_EQUAL : test = static_cast<uint16_t>(data0) != static_cast<uint16_t>(data1); break; 156 case COMPARATOR_GREATER : test = static_cast<uint16_t>(data0) > static_cast<uint16_t>(data1); break; 157 case COMPARATOR_GREATER_OR_EQUAL : test = static_cast<uint16_t>(data0) >= static_cast<uint16_t>(data1); break; 158 case COMPARATOR_LESS : test = static_cast<uint16_t>(data0) < static_cast<uint16_t>(data1); break; 159 case COMPARATOR_LESS_OR_EQUAL : test = static_cast<uint16_t>(data0) <= static_cast<uint16_t>(data1); break; 160 } 161 break; 162 } 163 case 32 : 164 { 165 if (_param->_is_signed) 166 switch (_param->_type) 167 { 168 case COMPARATOR_EQUAL : test = static_cast< int32_t>(data0) == static_cast< int32_t>(data1); break; 169 case COMPARATOR_NOT_EQUAL : test = static_cast< int32_t>(data0) != static_cast< int32_t>(data1); break; 170 case COMPARATOR_GREATER : test = static_cast< int32_t>(data0) > static_cast< int32_t>(data1); break; 171 case COMPARATOR_GREATER_OR_EQUAL : test = static_cast< int32_t>(data0) >= static_cast< int32_t>(data1); break; 172 case COMPARATOR_LESS : test = static_cast< int32_t>(data0) < static_cast< int32_t>(data1); break; 173 case COMPARATOR_LESS_OR_EQUAL : test = static_cast< int32_t>(data0) <= static_cast< int32_t>(data1); break; 174 } 175 else 176 switch (_param->_type) 177 { 178 case COMPARATOR_EQUAL : test = static_cast<uint32_t>(data0) == static_cast<uint32_t>(data1); break; 179 case COMPARATOR_NOT_EQUAL : test = static_cast<uint32_t>(data0) != static_cast<uint32_t>(data1); break; 180 case COMPARATOR_GREATER : test = static_cast<uint32_t>(data0) > static_cast<uint32_t>(data1); break; 181 case COMPARATOR_GREATER_OR_EQUAL : test = static_cast<uint32_t>(data0) >= static_cast<uint32_t>(data1); break; 182 case COMPARATOR_LESS : test = static_cast<uint32_t>(data0) < static_cast<uint32_t>(data1); break; 183 case COMPARATOR_LESS_OR_EQUAL : test = static_cast<uint32_t>(data0) <= static_cast<uint32_t>(data1); break; 184 } 185 break; 186 } 187 case 64 : 188 { 189 if (_param->_is_signed) 190 switch (_param->_type) 191 { 192 case COMPARATOR_EQUAL : test = static_cast< int64_t>(data0) == static_cast< int64_t>(data1); break; 193 case COMPARATOR_NOT_EQUAL : test = static_cast< int64_t>(data0) != static_cast< int64_t>(data1); break; 194 case COMPARATOR_GREATER : test = static_cast< int64_t>(data0) > static_cast< int64_t>(data1); break; 195 case COMPARATOR_GREATER_OR_EQUAL : test = static_cast< int64_t>(data0) >= static_cast< int64_t>(data1); break; 196 case COMPARATOR_LESS : test = static_cast< int64_t>(data0) < static_cast< int64_t>(data1); break; 197 case COMPARATOR_LESS_OR_EQUAL : test = static_cast< int64_t>(data0) <= static_cast< int64_t>(data1); break; 198 } 199 else 200 switch (_param->_type) 201 { 202 case COMPARATOR_EQUAL : test = static_cast<uint64_t>(data0) == static_cast<uint64_t>(data1); break; 203 case COMPARATOR_NOT_EQUAL : test = static_cast<uint64_t>(data0) != static_cast<uint64_t>(data1); break; 204 case COMPARATOR_GREATER : test = static_cast<uint64_t>(data0) > static_cast<uint64_t>(data1); break; 205 case COMPARATOR_GREATER_OR_EQUAL : test = static_cast<uint64_t>(data0) >= static_cast<uint64_t>(data1); break; 206 case COMPARATOR_LESS : test = static_cast<uint64_t>(data0) < static_cast<uint64_t>(data1); break; 207 case COMPARATOR_LESS_OR_EQUAL : test = static_cast<uint64_t>(data0) <= static_cast<uint64_t>(data1); break; 208 } 209 break; 210 } 211 default : 212 { 213 TEST_KO("Invalid size for the test."); 214 } 215 } 216 217 TEST(Tcontrol_t,out_COMPARE_TEST->read(),test); 218 92 219 SC_START(1); 93 220 } … … 104 231 delete in_CLOCK; 105 232 delete in_NRESET; 233 DELETE0_SC_SIGNAL( in_COMPARE_DATA_0); 234 DELETE0_SC_SIGNAL( in_COMPARE_DATA_1); 235 DELETE0_SC_SIGNAL(out_COMPARE_TEST ); 106 236 } 107 237 #endif -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/include/Comparator.h
r112 r113 64 64 public : SC_IN (Tdata_t ) * in_COMPARE_DATA_0; 65 65 public : SC_IN (Tdata_t ) * in_COMPARE_DATA_1; 66 public : SC_OUT(Tcontrol_t) * in_COMPARE_TEST ; 67 66 public : SC_OUT(Tcontrol_t) * out_COMPARE_TEST ; 68 67 69 68 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 105 104 #ifdef SYSTEMC 106 105 public : void transition (void); 107 //public : void genMoore(void);106 public : void genMealy (void); 108 107 #endif 109 108 … … 112 111 private : void vhdl_declaration (Vhdl * & vhdl); 113 112 private : void vhdl_body (Vhdl * & vhdl); 113 114 private : void vhdl_xilinx_declaration (Vhdl * & vhdl); 115 private : void vhdl_xilinx_body (Vhdl * & vhdl); 114 116 #endif 115 117 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/include/Parameters.h
r112 r113 26 26 public : Tcomparator_scheme_t _type; 27 27 28 public : int64_t _extends; 29 public : int64_t _mask_sign; 30 28 31 //-----[ methods ]----------------------------------------------------------- 29 32 public : Parameters (uint32_t size_data, -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator.cpp
r112 r113 77 77 # endif 78 78 79 // log_printf(INFO,Comparator,FUNCTION,_("<%s> : Method - genMoore"),_name.c_str());79 log_printf(INFO,Comparator,FUNCTION,_("<%s> : Method - genMealy"),_name.c_str()); 80 80 81 // SC_METHOD (genMoore); 82 // dont_initialize (); 83 // sensitive << (*(in_CLOCK)).neg(); // need internal register 81 SC_METHOD (genMealy); 82 dont_initialize (); 83 // sensitive << (*(in_CLOCK)).neg(); // don't need internal register 84 sensitive << (*(in_COMPARE_DATA_0)) 85 << (*(in_COMPARE_DATA_1)); 84 86 85 //# ifdef SYSTEMCASS_SPECIFIC86 //// List dependency information87 //# endif87 # ifdef SYSTEMCASS_SPECIFIC 88 // List dependency information 89 # endif 88 90 89 91 #endif -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_allocation.cpp
r112 r113 53 53 in_NRESET = interface->set_signal_in <Tcontrol_t> ("nreset",1, RESET_VHDL_YES); 54 54 } 55 56 // ~~~~~[ Interface : "compare" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 57 { 58 ALLOC0_INTERFACE_BEGIN("compare",IN,SOUTH,_("Compare interface")); 59 60 ALLOC0_SIGNAL_IN ( in_COMPARE_DATA_0,"DATA_0",Tdata_t ,_param->_size_data); 61 ALLOC0_SIGNAL_IN ( in_COMPARE_DATA_1,"DATA_1",Tdata_t ,_param->_size_data); 62 ALLOC0_SIGNAL_OUT(out_COMPARE_TEST ,"TEST" ,Tcontrol_t,1); 63 64 ALLOC0_INTERFACE_END(); 65 } 66 55 67 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 56 68 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_deallocation.cpp
r112 r113 25 25 delete in_CLOCK ; 26 26 delete in_NRESET; 27 28 DELETE0_SIGNAL( in_COMPARE_DATA_0,_param->_size_data); 29 DELETE0_SIGNAL( in_COMPARE_DATA_1,_param->_size_data); 30 DELETE0_SIGNAL(out_COMPARE_TEST ,1); 27 31 } 28 32 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_vhdl.cpp
r112 r113 27 27 _component->vhdl_instance(vhdl); 28 28 29 // default architecture 29 30 vhdl_declaration (vhdl); 30 31 vhdl_body (vhdl); 32 33 // Xilinx architecture 34 vhdl->set_architecture("xilinx"); 35 vhdl_xilinx_declaration (vhdl); 36 vhdl_xilinx_body (vhdl); 31 37 32 38 vhdl->generate_file(); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Parameters.cpp
r112 r113 7 7 8 8 #include "Behavioural/Generic/Comparator/include/Parameters.h" 9 #include "Common/include/BitManipulation.h" 9 10 10 11 namespace morpheo { … … 12 13 namespace generic { 13 14 namespace comparator { 14 15 15 16 16 #undef FUNCTION … … 28 28 29 29 test(); 30 31 _extends = gen_mask_not<int64_t>(_size_data); 32 _mask_sign = (1<<(_size_data-1)); 30 33 31 34 if (is_toplevel) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Parameters_msg_error.cpp
r112 r113 24 24 Parameters_test test ("Comparator"); 25 25 26 if (_size_data > 64) 27 test.error(_("Max size is 64 bits.\n")); 28 26 29 log_end(Comparator,FUNCTION); 27 30
Note: See TracChangeset
for help on using the changeset viewer.