Changeset 549
- Timestamp:
- Oct 17, 2013, 8:50:46 PM (11 years ago)
- Location:
- trunk/modules
- Files:
-
- 9 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/modules/vci_block_device_tsar/caba/metadata/vci_block_device_tsar.sd
r408 r549 39 39 parameter.IntTab('tgtid'), 40 40 parameter.String('filename'), 41 parameter.Int('block_size' ),42 parameter.Int('burst_size' ),43 parameter.Int('latency' ),41 parameter.Int('block_size', default=512), 42 parameter.Int('burst_size', default=64), 43 parameter.Int('latency', default=0), 44 44 ], 45 45 -
trunk/modules/vci_cc_vcache_wrapper/caba/source/include/vci_cc_vcache_wrapper.h
r487 r549 296 296 297 297 // STRUCTURAL PARAMETERS 298 soclib::common::AddressDecodingTable<uint 32_t, bool> m_cacheability_table;298 soclib::common::AddressDecodingTable<uint64_t, bool> m_cacheability_table; 299 299 300 300 const size_t m_srcid; … … 394 394 // communication between ICACHE FSM and CC_SEND FSM 395 395 sc_signal<bool> r_icache_cc_send_req; // ICACHE cc_send request 396 sc_signal< cc_send_t>r_icache_cc_send_type; // ICACHE cc_send request type396 sc_signal<int> r_icache_cc_send_type; // ICACHE cc_send request type 397 397 sc_signal<paddr_t> r_icache_cc_send_nline; // ICACHE cc_send nline 398 398 sc_signal<size_t> r_icache_cc_send_way; // ICACHE cc_send way … … 491 491 // communication between DCACHE FSM and CC_SEND FSM 492 492 sc_signal<bool> r_dcache_cc_send_req; // DCACHE cc_send request 493 sc_signal< cc_send_t>r_dcache_cc_send_type; // DCACHE cc_send request type493 sc_signal<int> r_dcache_cc_send_type; // DCACHE cc_send request type 494 494 sc_signal<paddr_t> r_dcache_cc_send_nline; // DCACHE cc_send nline 495 495 sc_signal<size_t> r_dcache_cc_send_way; // DCACHE cc_send way … … 542 542 // communication between CC_RECEIVE FSM and ICACHE FSM 543 543 sc_signal<bool> r_cc_receive_icache_req; // cc_receive to icache request 544 sc_signal< cc_receive_t>r_cc_receive_icache_type; // cc_receive type of request544 sc_signal<int> r_cc_receive_icache_type; // cc_receive type of request 545 545 sc_signal<size_t> r_cc_receive_icache_way; // cc_receive to icache way 546 546 sc_signal<size_t> r_cc_receive_icache_set; // cc_receive to icache set … … 550 550 // communication between CC_RECEIVE FSM and DCACHE FSM 551 551 sc_signal<bool> r_cc_receive_dcache_req; // cc_receive to dcache request 552 sc_signal< cc_receive_t>r_cc_receive_dcache_type; // cc_receive type of request552 sc_signal<int> r_cc_receive_dcache_type; // cc_receive type of request 553 553 sc_signal<size_t> r_cc_receive_dcache_way; // cc_receive to dcache way 554 554 sc_signal<size_t> r_cc_receive_dcache_set; // cc_receive to dcache set -
trunk/modules/vci_cc_vcache_wrapper/caba/source/src/vci_cc_vcache_wrapper.cpp
r532 r549 1155 1155 // cacheability 1156 1156 if ( not (r_mmu_mode.read() & INS_CACHE_MASK) ) cacheable = false; 1157 else cacheable = m_cacheability_table[ m_ireq.addr];1157 else cacheable = m_cacheability_table[(uint64_t)m_ireq.addr]; 1158 1158 } 1159 1159 else // itlb activated … … 2647 2647 2648 2648 if ( not (r_mmu_mode.read() & DATA_CACHE_MASK) ) cacheable = false; 2649 else cacheable = m_cacheability_table[ m_dreq.addr];2649 else cacheable = m_cacheability_table[(uint64_t)m_dreq.addr]; 2650 2650 } 2651 2651 else // dtlb activated -
trunk/modules/vci_io_bridge/caba/source/src/vci_io_bridge.cpp
r451 r549 93 93 }; 94 94 95 const char *miss_wti_ fsm_state_str[] = {96 "MISS_WTI_IDLE_MISS",97 "MISS_WTI_ IDLE_WTI",95 const char *miss_wti_cmd_state_str[] = 96 { 97 "MISS_WTI_CMD_IDLE", 98 98 "MISS_WTI_CMD_WTI", 99 "MISS_WTI_CMD_MISS", 100 }; 101 const char *miss_wti_rsp_state_str[] = 102 { 103 "MISS_WTI_RSP_IDLE", 99 104 "MISS_WTI_RSP_WTI", 100 "MISS_WTI_CMD_MISS",101 105 "MISS_WTI_RSP_MISS", 102 106 }; … … 268 272 std::cout << " => segment " << int_seg->name() 269 273 << " / base = " << std::hex << int_seg->baseAddress() 270 << " / size = " << int_seg->size() << std::endl; 274 << " / size = " << int_seg->size() 275 << " / special = " << int_seg->special() << std::endl; 271 276 } 272 277 … … 332 337 //////////////////////////////////// 333 338 { 334 // b0 : IO tlbtrace339 // b0 : IOTLB trace 335 340 336 341 std::cout << std::dec << "IO_BRIDGE " << name() << std::endl; … … 341 346 << " | " << config_cmd_fsm_state_str[r_config_cmd_fsm.read()] 342 347 << " | " << config_rsp_fsm_state_str[r_config_rsp_fsm.read()] 343 << " | " << miss_wti_fsm_state_str[r_miss_wti_cmd_fsm.read()] 348 << " | " << miss_wti_cmd_state_str[r_miss_wti_cmd_fsm.read()] 349 << " | " << miss_wti_rsp_state_str[r_miss_wti_rsp_fsm.read()] 344 350 << std::endl; 345 351 … … 348 354 std::cout << " IOTLB" << std::endl; 349 355 r_iotlb.printTrace(); 350 }351 if(mode & 0x02)352 {353 354 356 } 355 357 } … … 1248 1250 // chek segments 1249 1251 std::list<soclib::common::Segment>::iterator seg; 1250 bool found = false; 1252 bool found = false; 1253 bool special = false; 1251 1254 for ( seg = m_int_seglist.begin() ; 1252 1255 seg != m_int_seglist.end() and not found ; seg++ ) 1253 1256 { 1254 if ( seg->contains(paddr) ) found = true; 1257 if ( seg->contains(paddr) ) 1258 { 1259 found = true; 1260 special = seg->special(); 1261 } 1255 1262 } 1256 1263 1257 if ( found and s eg->special()) // IO_BRIDGE itself1264 if ( found and special ) // IO_BRIDGE itself 1258 1265 { 1259 1266 uint32_t rdata = 0; … … 1988 1995 1989 1996 // VCI initiator command on INT network 1990 // it depends on the MISS_WTI_CMD FSM state 1997 // it depends on the MISS_WTI_CMD FSM state 1998 // - WTI : single flit WRITE 1999 // - MISS TLB : multi-flit READ for a complete cache line 1991 2000 1992 2001 // default values … … 1997 2006 p_vci_ini_int.wrap = false; 1998 2007 p_vci_ini_int.clen = 0; 1999 p_vci_ini_int.contig = false;2000 p_vci_ini_int.cons = true;2001 p_vci_ini_int.be = 0xF F;2008 p_vci_ini_int.contig = true; 2009 p_vci_ini_int.cons = false; 2010 p_vci_ini_int.be = 0xF; 2002 2011 2003 2012 switch ( r_miss_wti_cmd_fsm.read() ) -
trunk/modules/vci_iox_network/caba/source/include/vci_iox_network.h
r451 r549 27 27 */ 28 28 29 ////////////////////////////////////////////////////////////////////////////// 29 //////////////////////////////////////////////////////////////////////////////// 30 30 // This component emulates an external IO bus such as PCIe or Hypertransport, 31 // but respect the VCI protocol. 32 // It is considered as a local interconnect that must be attached to33 // one OR SEVERAL clusters in a global interconnect.34 // It uses two different routing table:35 // - the cmd_routing_table decodes the local field of the VCI address36 // to return the target port37 // - The rsp_routing_table decodes the local field of the VCI srcid31 // but respect the VCI protocol. It can be attached to one OR SEVERAL clusters, 32 // using a vci_io_bridge component. 33 // It is considered as a local interconnect, for the ADDRESS or SRCID 34 // decoding tables: 35 // - the CMD routing_table decodes the local field of the VCI ADDRESS 36 // to return the local target port 37 // - The RSP routing_table decodes the local field of the VCI SRCID 38 38 // to return the initator port 39 39 // It is implemented as two independant crossbars, for VCI commands and 40 40 // VCI responses respectively. 41 // - The CMD crossbar has nb_ini input ports, and nb_tgt output ports. 41 // - The CMD crossbar has nb_ini input ports, and nb_tgt output ports, 42 // including the ports to the vci_io_bridge component(s). 42 43 // - The RSP crossbar has nb_tgt input ports, and nb_ini output ports. 44 // including the ports to the vci_io_bridge component(s). 43 45 // For both crossbars, output ports allocation policy is round robin. 44 ////////////////////////////////////////////////////////////////////////////// 46 //////////////////////////////////////////////////////////////////////////////// 45 47 46 48 #ifndef VCI_IOX_NETWORK_H … … 91 93 92 94 AddressDecodingTable<uint64_t,size_t> m_cmd_rt; // routing table for CMD 93 AddressDecodingTable<uint 64_t,size_t> m_rsp_rt; // routing table for RSP95 AddressDecodingTable<uint32_t,size_t> m_rsp_rt; // routing table for RSP 94 96 95 97 void transition(); … … 108 110 VciIoxNetwork( sc_module_name name, 109 111 const soclib::common::MappingTable &mt, 110 size_t cluster_id,111 112 size_t nb_tgt, 112 113 size_t nb_ini ); -
trunk/modules/vci_iox_network/caba/source/src/vci_iox_network.cpp
r471 r549 26 26 */ 27 27 28 //////////////////////////////////////////////////////////////////////////////// 29 // This component emulates an external IO bus such as PCIe or Hypertransport, 30 // but respect the VCI protocol. It can be attached to one OR SEVERAL clusters, 31 // using a vci_io_bridge component. 32 // It is considered as a local interconnect, for the ADDRESS or SRCID 33 // decoding tables: 34 // - the CMD routing_table decodes the local field of the VCI ADDRESS 35 // to return the local target port 36 // - The RSP routing_table decodes the local field of the VCI SRCID 37 // to return the initator port 38 // It is implemented as two independant crossbars, for VCI commands and 39 // VCI responses respectively. 40 // - The CMD crossbar has nb_ini input ports, and nb_tgt output ports, 41 // including the ports to the vci_io_bridge component(s). 42 // - The RSP crossbar has nb_tgt input ports, and nb_ini output ports. 43 // including the ports to the vci_io_bridge component(s). 44 // For both crossbars, output ports allocation policy is round robin. 45 //////////////////////////////////////////////////////////////////////////////// 46 28 47 #include <systemc> 29 48 #include <cassert> … … 50 69 typedef typename pkt_t::output_port_t output_port_t; 51 70 52 const bool 53 const size_t 54 const size_t 55 AddressDecodingTable<uint64_t,size_t>*m_rt; // pointer on routing table (CMD or RSP)56 57 sc_signal<bool>* 58 sc_signal<size_t>* 59 sc_signal<bool>* 60 sc_signal<size_t>* 71 const bool m_is_cmd; // CMD XBAR if true 72 const size_t m_inputs; // number of inputs 73 const size_t m_outputs; // number of outputs 74 void* m_rt; // pointer on routing table (CMD or RSP) 75 76 sc_signal<bool>* r_out_allocated; // for each output: allocation state 77 sc_signal<size_t>* r_out_origin; // for each output: input port index 78 sc_signal<bool>* r_in_allocated; // for each input: allocation state 79 sc_signal<size_t>* r_in_dest; // for each input: output port index 61 80 62 81 public: 63 82 /////////////////////// 64 IoXbar( bool 65 size_t 66 size_t 67 AddressDecodingTable<uint64_t,size_t>* rt )83 IoXbar( bool is_cmd, 84 size_t nb_inputs, 85 size_t nb_outputs, 86 void* rt ) 68 87 : m_is_cmd( is_cmd ), 69 88 m_inputs( nb_inputs ), … … 150 169 if ( m_is_cmd ) 151 170 { 152 req = ((AddressDecodingTable<uint64_t,size_t>*)m_rt)->get_value( 153 (uint64_t)(input_port[in]->address.read()) ); 171 AddressDecodingTable<uint64_t, size_t>* rt = 172 (AddressDecodingTable<uint64_t, size_t>*)m_rt; 173 req = rt->get_value((uint64_t)(input_port[in]->address.read())); 154 174 } 155 175 else 156 176 { 157 req = ((AddressDecodingTable<uint64_t,size_t>*)m_rt)->get_value( 158 (uint64_t)(input_port[in]->rsrcid.read()) ); 177 AddressDecodingTable<uint32_t, size_t>* rt = 178 (AddressDecodingTable<uint32_t, size_t>*)m_rt; 179 req = rt->get_value((uint32_t)(input_port[in]->rsrcid.read())); 159 180 } 160 181 // allocate the output port if requested … … 260 281 tmpl(/**/)::VciIoxNetwork( sc_core::sc_module_name name, 261 282 const soclib::common::MappingTable &mt, 262 size_t cluster_id,263 283 size_t nb_tgt, 264 284 size_t nb_ini ) … … 274 294 m_nb_ini( nb_ini ), 275 295 276 m_cmd_rt( mt.get PortidFromAddress(cluster_id) ),277 m_rsp_rt( mt.get PortidFromSrcid(cluster_id) )296 m_cmd_rt( mt.getLocalIndexFromAddress(0) ), 297 m_rsp_rt( mt.getLocalIndexFromSrcid(0) ) 278 298 { 279 299 std::cout << " Building VciIoxNetwork : " << name << std::endl; -
trunk/modules/vci_mem_cache/caba/source/include/vci_mem_cache.h
r535 r549 516 516 517 517 void print_stats(bool activity_counters, bool stats); 518 void print_trace( );518 void print_trace( size_t detailed = 0 ); 519 519 void cache_monitor(addr_t addr); 520 520 void start_monitor(addr_t addr, addr_t length); -
trunk/modules/vci_mem_cache/caba/source/include/xram_transaction.h
r489 r549 29 29 bool proc_read; // read request from processor 30 30 size_t read_length; // length of the read (for the response) 31 size_t word_index; // index of the first read word (for theresponse)31 size_t word_index; // index of the first read word (for response) 32 32 std::vector<data_t> wdata; // write buffer (one cache line) 33 33 std::vector<be_t> wdata_be; // be for each data in the write buffer … … 48 48 ///////////////////////////////////////////////////////////////////// 49 49 // The alloc() function initializes the vectors of an entry 50 // Its arguments are : 51 // - n_words : number of words per line in the cache 50 // The "n_words" argument is the number of words in a cache line. 52 51 ///////////////////////////////////////////////////////////////////// 53 52 void alloc(size_t n_words) … … 64 63 //////////////////////////////////////////////////////////////////// 65 64 // The copy() function copies an existing entry 66 // Its arguments are :67 // - source : the transaction tab entry to copy68 65 //////////////////////////////////////////////////////////////////// 69 66 void copy(const TransactionTabEntry &source) … … 86 83 87 84 //////////////////////////////////////////////////////////////////// 88 // The print() function prints the entry 89 //////////////////////////////////////////////////////////////////// 90 void print() 91 { 92 std::cout << "------- TRT entry -------" << std::endl; 93 std::cout << "valid = " << valid << std::endl; 94 std::cout << "xram_read = " << xram_read << std::endl; 95 std::cout << "nline = " << std::hex << nline << std::endl; 96 std::cout << "srcid = " << srcid << std::endl; 97 std::cout << "trdid = " << trdid << std::endl; 98 std::cout << "pktid = " << pktid << std::endl; 99 std::cout << "proc_read = " << proc_read << std::endl; 100 std::cout << "read_length = " << read_length << std::endl; 101 std::cout << "word_index = " << word_index << std::endl; 102 for(size_t i=0; i<wdata_be.size() ; i++) 103 { 104 std::cout << "wdata_be[" << std::dec << i << "] = " 105 << std::hex << wdata_be[i] << std::endl; 106 } 107 for(size_t i=0; i<wdata.size() ; i++) 108 { 109 std::cout << "wdata[" << std::dec << i << "] = " 110 << std::hex << wdata[i] << std::endl; 111 } 112 std::cout << "rerror = " << rerror << std::endl; 113 std::cout << "ll_key = " << ll_key << std::endl; 114 std::cout << "config = " << config << std::endl; 115 std::cout << std::endl; 85 // The print() function prints the entry identified by "index". 86 //////////////////////////////////////////////////////////////////// 87 void print( size_t index, size_t mode ) 88 { 89 std::cout << " TRT[" << std::dec << index << "] " 90 << " valid = " << valid 91 << " / error = " << rerror 92 << " / get = " << xram_read 93 << " / config = " << config << std::hex 94 << " / address = " << nline*4*wdata.size() 95 << " / srcid = " << srcid << std::endl; 96 if ( mode ) 97 { 98 std::cout << " trdid = " << trdid 99 << " / pktid = " << pktid << std::dec 100 << " / proc_read = " << proc_read 101 << " / read_length = " << read_length 102 << " / word_index = " << word_index << std::hex 103 << " / ll_key = " << ll_key << std::endl; 104 std::cout << " wdata = "; 105 for(size_t i=0; i<wdata.size() ; i++) 106 { 107 std::cout << std::hex << wdata[i] << " / "; 108 } 109 std::cout << std::endl; 110 } 116 111 } 117 112 … … 228 223 } 229 224 ///////////////////////////////////////////////////////////////////// 230 // The print() function prints a transaction tab entry 231 // Arguments : 232 // - index : the index of the entry to print 233 ///////////////////////////////////////////////////////////////////// 234 void print(const size_t index) 235 { 236 assert( (index < size_tab) and 237 "MEMC ERROR: The selected entry is out of range in TRT write_data_mask()"); 238 239 tab[index].print(); 240 return; 225 // The print() function prints TRT content. 226 // Detailed content if detailed argument is non zero. 227 ///////////////////////////////////////////////////////////////////// 228 void print( size_t detailed = 0 ) 229 { 230 std::cout << " < TRT content in " << tab_name << " >" << std::endl; 231 for ( size_t id = 0 ; id < size_tab ; id++ ) 232 { 233 tab[id].print( id , detailed ); 234 } 241 235 } 242 236 ///////////////////////////////////////////////////////////////////// -
trunk/modules/vci_mem_cache/caba/source/src/vci_mem_cache.cpp
r537 r549 654 654 655 655 ////////////////////////////////////////////////// 656 tmpl(void)::print_trace( )656 tmpl(void)::print_trace( size_t detailed ) 657 657 ////////////////////////////////////////////////// 658 658 { … … 676 676 << " | " << alloc_ivt_fsm_str[r_alloc_ivt_fsm.read()] 677 677 << " | " << alloc_heap_fsm_str[r_alloc_heap_fsm.read()] << std::endl; 678 679 if ( detailed ) m_trt.print(0); 678 680 } 679 681 … … 4011 4013 4012 4014 assert( ((p_vci_ixr.rerror.read() & 0x1) == 0) and 4013 4015 "MEMC ERROR in IXR_RSP state: XRAM response error !"); 4014 4016 4015 4017 if (p_vci_ixr.reop.read()) // PUT … … 4018 4020 4019 4021 #if DEBUG_MEMC_IXR_RSP 4020 4021 4022 4022 if (m_debug) 4023 std::cout << " <MEMC " << name() 4024 << " IXR_RSP_IDLE> Response from XRAM to a put transaction" << std::endl; 4023 4025 #endif 4024 4026 } … … 4028 4030 4029 4031 #if DEBUG_MEMC_IXR_RSP 4030 4031 4032 4033 #endif 4034 } 4035 } 4036 break; 4037 } 4038 4032 if (m_debug) 4033 std::cout << " <MEMC " << name() 4034 << " IXR_RSP_IDLE> Response from XRAM to a get transaction" << std::endl; 4035 #endif 4036 } 4037 } 4038 break; 4039 } 4040 //////////////////////// 4039 4041 case IXR_RSP_TRT_ERASE: // erase the entry in the TRT 4040 // decrease the line counter if config request 4041 { 4042 if (r_alloc_trt_fsm.read() == ALLOC_TRT_IXR_RSP) 4043 { 4044 size_t index = r_ixr_rsp_trt_index.read(); 4045 if (m_trt.is_config(index)) r_config_rsp_lines = r_config_rsp_lines.read() - 1; 4046 m_trt.erase(index); 4042 // decrease the line counter if config request 4043 { 4044 if (r_alloc_trt_fsm.read() == ALLOC_TRT_IXR_RSP) 4045 { 4046 size_t index = r_ixr_rsp_trt_index.read(); 4047 if (m_trt.is_config(index)) 4048 r_config_rsp_lines = r_config_rsp_lines.read() - 1; 4049 m_trt.erase(index); 4050 r_ixr_rsp_fsm = IXR_RSP_IDLE; 4051 4052 #if DEBUG_MEMC_IXR_RSP 4053 if (m_debug) 4054 std::cout << " <MEMC " << name() << " IXR_RSP_TRT_ERASE> Erase TRT entry " 4055 << r_ixr_rsp_trt_index.read() << std::endl; 4056 #endif 4057 } 4058 break; 4059 } 4060 ////////////////////// 4061 case IXR_RSP_TRT_READ: // write a 64 bits data word in TRT 4062 { 4063 if ((r_alloc_trt_fsm.read() == ALLOC_TRT_IXR_RSP) and p_vci_ixr.rspval) 4064 { 4065 size_t index = r_ixr_rsp_trt_index.read(); 4066 size_t word = r_ixr_rsp_cpt.read(); 4067 bool eop = p_vci_ixr.reop.read(); 4068 wide_data_t data = p_vci_ixr.rdata.read(); 4069 bool error = ((p_vci_ixr.rerror.read() & 0x1) == 1); 4070 4071 assert(((eop == (word == (m_words-2))) or error) and 4072 "MEMC ERROR in IXR_RSP_TRT_READ state : invalid response from XRAM"); 4073 4074 m_trt.write_rsp( index, word, data ); 4075 4076 r_ixr_rsp_cpt = word + 2; 4077 4078 if (eop ) 4079 { 4080 r_ixr_rsp_to_xram_rsp_rok[r_ixr_rsp_trt_index.read()] = true; 4047 4081 r_ixr_rsp_fsm = IXR_RSP_IDLE; 4082 } 4048 4083 4049 4084 #if DEBUG_MEMC_IXR_RSP 4050 if (m_debug) 4051 std::cout << " <MEMC " << name() << " IXR_RSP_TRT_ERASE> Erase TRT entry " 4052 << r_ixr_rsp_trt_index.read() << std::endl; 4053 #endif 4054 } 4055 break; 4056 } 4057 ////////////////////// 4058 case IXR_RSP_TRT_READ: // write a 64 bits data word in TRT 4059 { 4060 if ((r_alloc_trt_fsm.read() == ALLOC_TRT_IXR_RSP) and p_vci_ixr.rspval) 4061 { 4062 size_t index = r_ixr_rsp_trt_index.read(); 4063 size_t word = r_ixr_rsp_cpt.read(); 4064 bool eop = p_vci_ixr.reop.read(); 4065 wide_data_t data = p_vci_ixr.rdata.read(); 4066 bool error = ((p_vci_ixr.rerror.read() & 0x1) == 1); 4067 4068 assert(((eop == (word == (m_words-2))) or error) and 4069 "MEMC ERROR in IXR_RSP_TRT_READ state : invalid response from XRAM"); 4070 4071 m_trt.write_rsp( index, 4072 word, 4073 data ); 4074 4075 r_ixr_rsp_cpt = word + 2; 4076 4077 if (eop ) 4078 { 4079 r_ixr_rsp_to_xram_rsp_rok[r_ixr_rsp_trt_index.read()] = true; 4080 r_ixr_rsp_fsm = IXR_RSP_IDLE; 4081 } 4082 4083 #if DEBUG_MEMC_IXR_RSP 4084 if (m_debug) 4085 std::cout << " <MEMC " << name() << " IXR_RSP_TRT_READ> Writing 2 words in TRT : " 4086 << " index = " << std::dec << index 4087 << " / word = " << word 4088 << " / data = " << std::hex << data << std::endl; 4089 #endif 4090 } 4091 break; 4092 } 4085 if (m_debug) 4086 std::cout << " <MEMC " << name() << " IXR_RSP_TRT_READ> Writing 2 words in TRT : " 4087 << " index = " << std::dec << index 4088 << " / word = " << word 4089 << " / data = " << std::hex << data << std::endl; 4090 #endif 4091 } 4092 break; 4093 } 4093 4094 } // end swich r_ixr_rsp_fsm 4094 4095
Note: See TracChangeset
for help on using the changeset viewer.