22 | | === 1. VCI Messages usage |
23 | | === 2. PDES Messages usage |
24 | | === 3. Efficient time modeling in a multi-transactionnal VCI Component |
25 | | === 4. VCI Initiator modeling |
26 | | === 5. VCI Target-Initiator (decoupled) modeling |
27 | | === 6. VCI Target-Initiator (coupled) modeling |
28 | | === 7. VCI Target modeling |
29 | | === 8. VCI Local Crossbar modeling |
30 | | === 9. VCI Global Crossbar modeling |
31 | | === 10. Proof of the deadlock free feature |
32 | | === 11. Locating the loss in precision |
| 22 | == 1. VCI Transactions |
| 23 | The VCI Transactions representation mostly remains the same. Two new concepts are introduced for optimization and performance gain. They both got default value which will allow to skip this aspect for convenience. However, this will, in some cases, increase the part of PDES communication (compared to the VCI one) and slow down the simulation. |
| 24 | === 1.1. Blocking type |
| 25 | === 1.2. Primarity |
| 26 | 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. |
| 27 | |
| 28 | The Primarity of a transaction is a boolean stored in its payload extension. If no primarity is specified by the user, it is considered as primary. |
| 29 | {{{#!c++ |
| 30 | tlm::tlm_generic_payload *payload_ptr = new tlm::tlm_generic_payload(); |
| 31 | soclib_payload_extension *extension_ptr = new soclib_payload_extension(); |
| 32 | |
| 33 | //Fill the transaction with the necessary datas |
| 34 | ... |
| 35 | |
| 36 | //Set the transaction as primary - 2 methods |
| 37 | extension_ptr->set_primary(); |
| 38 | extension_ptr->set_primarity(true); |
| 39 | |
| 40 | //Set the transaction as secondary - 2 methods |
| 41 | extension_ptr->set_secondary(); |
| 42 | extension_ptr->set_primarity(false); |
| 43 | |
| 44 | //Send the transaction the usual way |
| 45 | ... |
| 46 | }}} |
| 47 | == 2. PDES Messages |
| 48 | === 2.1. PDES Activity message |
| 49 | The PDES activity message remains unmodified. The activity message intends to connect or disconnect an initiator from the interconnect with which it is linked. If the activity of an initiator is true, then the associated centralized buffer slot on the interconnect will be handled for the temporal arbitration, otherwise it won't. The following code is a recall from the linked TLMDT for SOCLIB specification. |
| 50 | {{{#!c++ |
| 51 | send to interconnect the initiator activity status |
| 52 | void my_initiator::sendActivity() |
| 53 | { |
| 54 | tlm::tlm_generic_payload *payload_ptr = new tlm::tlm_generic_payload(); |
| 55 | soclib_payload_extension *extension_ptr = new soclib_payload_extension(); |
| 56 | tlm::tlm_phase phase; |
| 57 | sc_core::sc_time time; |
| 58 | |
| 59 | // set the active or inactive command |
| 60 | if(m_pdes_activity_status->get()) extension_ptr->set_active(); |
| 61 | else extension_ptr->set_inactive(); |
| 62 | // set the extension to tlm payload |
| 63 | payload_ptr->set_extension (extension_ptr); |
| 64 | //set the tlm phase |
| 65 | phase = tlm::BEGIN_REQ; |
| 66 | //set the local time to transaction time |
| 67 | time = m_pdes_local_time->get(); |
| 68 | //send a message with command equals to PDES_ACTIVE or PDES_INACTIVE |
| 69 | p_vci_init->nb_transport_fw(*payload_ptr, phase, time); |
| 70 | //wait a response |
| 71 | wait(m_rspEvent); |
| 72 | } |
| 73 | }}} |
| 74 | Usage : |
| 75 | {{{#!c++ |
| 76 | //active the initiator and inform to interconnect |
| 77 | m_pdes_activity_status->set(true); |
| 78 | sendActivity(); |
| 79 | }}} |
| 80 | |
| 81 | {{{#!c++ |
| 82 | //desactive the initiator and inform to interconnect |
| 83 | m_pdes_activity_status->set(false); |
| 84 | sendActivity(); |
| 85 | }}} |
| 86 | |
| 87 | === 2.2. PDES Null_command |
| 88 | === 2.3. PDES Null_response |
| 89 | === 2.4. PDES Sync transaction |
| 90 | |
| 91 | == 3. Efficient time modeling in a multi-transactionnal VCI Component |
| 92 | == 4. VCI Initiator modeling |
| 93 | == 5. VCI Target-Initiator (decoupled) modeling |
| 94 | == 6. VCI Target-Initiator (coupled) modeling |
| 95 | == 7. VCI Target modeling |
| 96 | == 8. VCI Local Crossbar modeling |
| 97 | == 9. VCI Global Crossbar modeling |
| 98 | == 10. Proof of the deadlock free feature |
| 99 | == 11. Locating the loss in precision |