Changes between Version 6 and Version 7 of TLMDT


Ignore:
Timestamp:
May 11, 2011, 1:43:33 PM (13 years ago)
Author:
gioja
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TLMDT

    v6 v7  
    128128
    129129=== 2.2. PDES Null_command
    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.
     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 a transaction. This messages allows the interconnects to respect their time quantums, regarding to its targets. 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();
    133133soclib_payload_extension *extension_ptr = new soclib_payload_extension();
    134134
     135//set as a null_command - 2 methods
    135136extension_ptr->set_null_command();
     137extension_ptr->set_command(PDES_NULL_COMMAND);
    136138// set the extension to tlm payload
    137139payload_ptr->set_extension (extension_ptr);
     
    140142//set the local time to transaction time
    141143time = m_pdes_local_time->get();
    142 //send a message with command equals to PDES_ACTIVE or PDES_INACTIVE
    143144p_vci_init->nb_transport_fw(*payload_ptr, phase, time);
    144145
     
    157158//Set the Null_response flag - 2 methods
    158159extension_ptr->set_null_response();
    159 extension_ptr->set_vci_response(false);
     160extension_ptr->set_command(PDES_NULL_RESPONSE);
    160161//set the tlm phase
    161162phase = tlm::BEGIN_RSP;
    162163//set the local time to transaction time
    163164time = m_pdes_local_time->get();
    164 //send a message with command equals to PDES_ACTIVE or PDES_INACTIVE
    165165p_vci_target->nb_transport_bw(*payload_ptr, phase, time);
    166166
    167167//Retrieve information
    168168extension_ptr->is_null_response();
    169 extension_ptr->is_vci_response();
    170169}}}
    171170
    172171=== 2.4. PDES Sync transaction
     172The Sync transaction is composed of a command and a response. It is used by initiators which went ahead their quantum, in order to keep the synchronization between initiators connected on the same interconnect. The transaction's scope is local. Its response is sent when it is arbitrated on the interconnect. This means that every other initiators connected to this interconnect got a higher time, so it can pursue its treatment until the next quantum.
     173
     174{{{#!c++
     175//... Initiator 
     176tlm::tlm_generic_payload *payload_ptr = new tlm::tlm_generic_payload();
     177soclib_payload_extension *extension_ptr = new soclib_payload_extension();
     178
     179//Set the Sync_cmd flag - 2 methods
     180extension_ptr->set_sync();
     181extension_ptr->set_command(PDES_SYNC);
     182
     183//set the tlm phase
     184phase = tlm::BEGIN_REQ;
     185//set the local time to transaction time
     186time = m_pdes_local_time->get();
     187p_vci_initiator->nb_transport_fw(*payload_ptr, phase, time);
     188wait(m_rspEvent);
     189
     190//... Interconnect
     191//Retrieve information
     192extension_ptr->is_sync();
     193//when arbitrated, send the response
     194phase = tlm::BEGIN_RSP;
     195p_vci_target->nb_transport_bw(*payload_ptr, phase, time);
     196
     197//... Initiator (callback function)
     198//Sync is done, initiator can pursue its treatment
     199if(extension_ptr->is_sync()){
     200   notify(m_rspEvent);
     201}
     202
     203}}}
     204
    173205=== 2.5. Passive_Sync / Active_Sync
    174206
     
    182214== 10. Proof of the deadlock free feature
    183215== 11. Locating the loss in precision
     216== 12. Adjust precision / performance for a simulation