Changes between Version 5 and Version 6 of TLMDT


Ignore:
Timestamp:
May 3, 2011, 12:34:58 PM (14 years ago)
Author:
gioja
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TLMDT

    v5 v6  
    4141//Set the transaction as blocking - 2 methods
    4242extension_ptr->set_blocking();
    43 extension_ptr->set_blocking_type(BLOCKING);
     43extension_ptr->set_blocking_type(BLOCKING); //Default
    4444
    4545//Set the transaction as non-blocking - 2 methods
     
    6464A 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.
    6565
    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.
     66The 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.
    6767{{{#!c++
    6868tlm::tlm_generic_payload *payload_ptr = new tlm::tlm_generic_payload();
     
    7878//Set the transaction as secondary - 2 methods
    7979extension_ptr->set_secondary();
    80 extension_ptr->set_primarity(false);
     80extension_ptr->set_primarity(false); //Default
    8181
    8282//Send the transaction the usual way
     
    128128
    129129=== 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.
     130The 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.
    131131{{{#!c++ 
    132132tlm::tlm_generic_payload *payload_ptr = new tlm::tlm_generic_payload();
     
    148148
    149149=== 2.3. PDES Null_response
     150The 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
     152Interconnects 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++ 
     154soclib_payload_extension *extension_ptr;
     155payload_ptr->get_extension(extension_ptr);
     156
     157//Set the Null_response flag - 2 methods
     158extension_ptr->set_null_response();
     159extension_ptr->set_vci_response(false);
     160//set the tlm phase
     161phase = tlm::BEGIN_RSP;
     162//set the local time to transaction time
     163time = m_pdes_local_time->get();
     164//send a message with command equals to PDES_ACTIVE or PDES_INACTIVE
     165p_vci_target->nb_transport_bw(*payload_ptr, phase, time);
     166
     167//Retrieve information
     168extension_ptr->is_null_response();
     169extension_ptr->is_vci_response();
     170}}}
     171
    150172=== 2.4. PDES Sync transaction
    151173=== 2.5. Passive_Sync / Active_Sync