9 | | All VCI initiatores and VCI targets share the same "flat" address space, but the address decoding |
10 | | scheme supports a multi-level structured interconnect. |
| 9 | This object is basically an associative table, where each entry define a segment descriptor. |
| 10 | A segment is a set of consecutive addresses in the address space. Each segment has a name, and is characterized by the following fields: |
| 11 | * string '''name''' |
| 12 | * addr_t '''base_address''' |
| 13 | * size_t '''size''' |
| 14 | * IntTab '''target_index''' |
| 15 | * bool '''cacheability''' |
| 16 | The size field is a number of bytes. The target_index field identifies the VCI target that contains |
| 17 | the corresponding segment, and is used by the interconnect to route a command packet to the proper target. |
| 18 | The cacheability field can be used by the cache controllers to define if the corresponding segment is cacheable. |
| 19 | |
| 20 | All segments defined by the system designer for a given architecture must be non-overlaping. |
| 21 | |
| 22 | Therefore, the mapping table is a centralized description of both the address space segmentation, |
| 23 | the mapping of the segments on the hardware architecture physical targets. |
| 24 | From this centralized description, it is possible to derive the '''routing tables''' used by the |
| 25 | hardware interconnect to route the VCI packets to the proper target, depending of the VCI address. |
| 26 | |
| 27 | All VCI initiators and VCI targets share the same address space, but the address decoding |
| 28 | scheme can support a structured interconnect. |
16 | | * and all VCI targets must have different indexes. Most hardware interconnects (such as the make the assumption that the target indexes |
17 | | * each VCI is identified by a simple index, and all initiators must have different indexes. The initiator index |
18 | | must be equal to the VCI SRCID value. |
19 | | * The VCI address is structured in two fields |
20 | | |
| 34 | * all VCI targets must have different indexes. |
| 35 | * all VCI initiators must have different indexes. |
| 36 | * The initiator index must be equal to the VCI SRCID value. Most hardware interconnects (such as the PibusBcu or the VciVgmn components) make the assumption that the initiator indexes are between 0 and M -1 , where M is the total number of VCI initiators. |
| 37 | * The VCI ADDRESS field is structured in two fields: | MSB | OFFSET | |
| 38 | * The MSB field is decoded by the flat interconnect to route the command packet to the proper VCI target. |
| 39 | * The OFFSET field is decoded by the VCI target. |
| 40 | * The VCI SRCID field is used by the interconnect to route the response packet to the proper VCI initiator. |
| 41 | * Most flat hardware interconnects (such as the PibusBcu or the VciVgmn components) make the assumption that the target indexes are between 0 and T -1 (where T is the total number of VCI targets), and the initiator indexes are between 0 and M -1 (where M is the total number of VCI initiators). |
| 42 | |
| 43 | Therefore, the flat interconnect must contain a ROM implementing a '''routing table''' indexed by the |
| 44 | VCI ADDRESS MSB bits and containing the corresponding target index. |
| 45 | The content of this '''routing table''' is automatically computed by a method associated to the mapping table. |
| 46 | |
30 | | * All , and all targets must have different indexes. Most hardware interconnects (such as the make the assumption that the target indexes |
31 | | * each VCI is identified by a simple index, and all initiators must have different indexes. The initiator index |
32 | | must be equal to the VCI SRCID value. |
| 56 | * all VCI targets in the same cluster must have the same global index. |
| 57 | * all VCI targets in the same cluster must have different local indexes. |
| 58 | * all VCI initiators in the same cluster must have the same global index. |
| 59 | * all VCI initiators in the same cluster must have different local indexes. |
| 60 | * The VCI ADDRESS field is structured in three fields : | MSB | LSB | OFFSET | |
| 61 | * The MSB field is decoded by the global interconnect to route the command packet to the proper cluster. |
| 62 | * The LSB field is decoded by the local interconnect to route the command packet to the proper target. |
| 63 | * The OFFSET field is decoded by the VCI target. |
| 64 | * The VCI SRCID field is structured in two fields : | MSB | LSB | |
| 65 | * The SRCID MSB field must be equal to the initiator global index. |
| 66 | * The SRCID LSB field must be equal to the initiator local index. |
34 | | |
35 | | eand each VCI component is identified |
36 | | by abut the address decoding |
37 | | scheme supports. |
| 68 | The services provided by the Mapping Table for a two level interconnect are the following : |
| 69 | * It generates the '''Global Routing Table''', indexed by the VCI ADDRESS MSB bits, and containing the corresponding global index (cluster index). This Global Routing Table is used by the global interconnect. |
| 70 | * It generates - for each cluster - the '''Local Routing Table''', indexed by the VCI ADDRESS LSB bits and containing the corresponding target local index. Depending on the mapping, each cluster can have a different Local Routing Table. |