Changes between Version 5 and Version 6 of TLMDT
- Timestamp:
- May 3, 2011, 12:34:58 PM (14 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
TLMDT
v5 v6 41 41 //Set the transaction as blocking - 2 methods 42 42 extension_ptr->set_blocking(); 43 extension_ptr->set_blocking_type(BLOCKING); 43 extension_ptr->set_blocking_type(BLOCKING); //Default 44 44 45 45 //Set the transaction as non-blocking - 2 methods … … 64 64 A VCI Transaction can either be primary or secondary. The VCI transaction is primary only if it is not related to another transaction. That is to say when the response will be caught and treated, no response to another transaction will be sent. A pure Initiator will only send primary transactions while a Target-Initiator will be able to send both. 65 65 66 The Primarity of a transaction is a boolean stored in its payload extension. If primarity is not specified by the user, it is considered as primary.66 The Primarity of a transaction is a boolean stored in its payload extension. If primarity is not specified by the user, it is considered as secondary. 67 67 {{{#!c++ 68 68 tlm::tlm_generic_payload *payload_ptr = new tlm::tlm_generic_payload(); … … 78 78 //Set the transaction as secondary - 2 methods 79 79 extension_ptr->set_secondary(); 80 extension_ptr->set_primarity(false); 80 extension_ptr->set_primarity(false); //Default 81 81 82 82 //Send the transaction the usual way … … 128 128 129 129 === 2.2. PDES Null_command 130 The Null_command is a message with does not require a response. His only goal is to deliver a temporal information, in order to preserve the synchronization between components. Mostly, the initiator doesn't stop when the null_command message is sent, except if it is waiting for the response from another transaction. This messages allows the different components to respect their time quantums. It is also used to perform the Active_Sync on initiators.130 The Null_command is a message with does not require a response. Its only goal is to deliver a temporal information, in order to preserve the synchronization between components. Mostly, the initiator doesn't stop when the null_command message is sent, except if it is waiting for the response from another transaction. This messages allows the different components to respect their time quantums. It is also used to perform the Active_Sync on initiators. The message scope is local, it cannot be routed or redirected. Receiving a null_command awakes the target if it is waiting. Initiators and interconnects can send Null_commands. 131 131 {{{#!c++ 132 132 tlm::tlm_generic_payload *payload_ptr = new tlm::tlm_generic_payload(); … … 148 148 149 149 === 2.3. PDES Null_response 150 The Null_response is a message which transits on networks like a VCI responses. Only transactions which are blocking or conditionnaly blocking needs to receive Null_responses. The meaning of this message is : "The response to the associated VCI transaction won't be caught before this time". The Null_response is part of the Active_Sync mechanisms. It is used to predict the future of simulation. The only useful data contained in the Null_response is the temporal information. When an initiator receives a Null_response instead of a VCI response, it allows itself to pursue its treatment, neglecting the need of the VCI response, until the Null_response time. In order to properly aim the right transaction on the right initiator, the VCI transaction is reused for the Null_response. When the Null_response is sent, only the target of this message is awaken. Multiple Null_responses can be sent for a single VCI transaction. Successives Null_response's time related to the same transaction needs to grow. 151 152 Interconnects and targets can generate and transmit the Null_responses. Null_responses are useful for preventing deadlocks related to synchronization. For performance optimizations, an interconnect can neglect generating a Null_response when the associated transaction is primary. Since Null_response allows to release parallelism of the simulation, it seems important to send it with the highest time possible. 153 {{{#!c++ 154 soclib_payload_extension *extension_ptr; 155 payload_ptr->get_extension(extension_ptr); 156 157 //Set the Null_response flag - 2 methods 158 extension_ptr->set_null_response(); 159 extension_ptr->set_vci_response(false); 160 //set the tlm phase 161 phase = tlm::BEGIN_RSP; 162 //set the local time to transaction time 163 time = m_pdes_local_time->get(); 164 //send a message with command equals to PDES_ACTIVE or PDES_INACTIVE 165 p_vci_target->nb_transport_bw(*payload_ptr, phase, time); 166 167 //Retrieve information 168 extension_ptr->is_null_response(); 169 extension_ptr->is_vci_response(); 170 }}} 171 150 172 === 2.4. PDES Sync transaction 151 173 === 2.5. Passive_Sync / Active_Sync