| 1 | [wiki:Component SocLib Components General Index] |
| 2 | |
| 3 | = !VciInitiatorTransactor = |
| 4 | |
| 5 | == 1) Functional Description == |
| 6 | |
| 7 | All VCI commands received on the CABA interface are registered in a buffer indexed by the TRDID field. Each entry in this Pending_Transaction_Buffer contains a transaction status, a transaction time, and enough space to store a complete VCI TLM-DT transaction payload. |
| 8 | As for any TLM-DT initiator, the behavior() sc_thread associated to the VciInitiatorTransactor is permanently running. It is descheduled twice per simulated cycle to drive the CK signal on the CABA interface. It implement the same look-ahead mechanism as any TLM-DT initiator to send NULL messages with a bounded period when there is no regular (Read or Write) VCI transactions. |
| 9 | Regarding the VCI command, the behavior() thread read the command signals (cycle per cycle), on the CABA ports, and stores a complete transaction payload in the Pending_Transaction_Buffer. When the transaction is completed, the behavior() thread calls the nb_transport_fw() method on the TLM-DT port. |
| 10 | |
| 11 | [[Image(initiator_vci_transactor.png, nolink)]] |
| 12 | |
| 13 | Regarding the VCI response, the interface nb_transport_bw() method updates the status of the proper entry in the Pending_Transaction_Buffer when a response is received on the TLM-DT port. This response is then transmitted (cycle per cycle) by the behaviour() thread on the CABA ports. |
| 14 | If the VCI initiator can receive interrupts, the transactor provides an optional service of translation : When an IRQ is received on the TLM-DT IRQ port (by the interface nb_transport_fw() method) this information is registered, and the IRQ is transmited on the IRQ CABA port by the behaviour() thread. |
| 15 | |
| 16 | == 2) Implementation == |
| 17 | |
| 18 | === template parameters === |
| 19 | |
| 20 | This component have two template parameters, defining respectively the width of the CABA and TLM-DT VCI parameters. |
| 21 | {{{ |
| 22 | template<typename vci_param-caba, typename vci_param_tlmdt> |
| 23 | }}} |
| 24 | |
| 25 | === sources === |
| 26 | |
| 27 | * interface : source:trunk/soclib/soclib/module/network_component/vci_initiator_transactor/tlmdt/source/include/vci_initiator_transactor.h |
| 28 | * implementation : source:trunk/soclib/soclib/module/network_component/vci_initiator_transactor/tlmdt/source/src/vci_initiator_transactor.cpp |
| 29 | |
| 30 | === Constructor parameters === |
| 31 | |
| 32 | {{{ |
| 33 | VciInitiatorTransactor( |
| 34 | sc_module_name name, // Instance name |
| 35 | size_t n_irq); // optional : number of interruption ports (default = 0) |
| 36 | }}} |
| 37 | |
| 38 | |
| 39 | === CABA Ports === |
| 40 | |
| 41 | * sc_out<bool> '''p_resetn''' : hardware reset |
| 42 | * sc_out<bool> '''p_clk''' : clock |
| 43 | * sc_out<bool> '''*p_irq_initiator''' : IRQ initiator ports (from transactor to CABA initiator) |
| 44 | * VciTarget<vci_param_caba> '''p_vci_target''' : VCI target port (from CABA initiator to transactor) |
| 45 | |
| 46 | === TLM-DT Ports === |
| 47 | |
| 48 | * '''p_vci_initiator''' : VCI initiator port (from transactor to TLM-DT platform) |
| 49 | * '''*p_irq_target ''' : IRQ target ports (from TLM-DT platform to transactor) |