| | 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) |