| 4 |   | These ISS must be wrapped in a CABA, TLM, or TLMDT wrapper to be used in a SoCLib platforms. | 
                      
                        | 5 |   | Example of such a wrapper is the [wiki:Component/VciXcacheWrapper VciXcacheWrapper] component.  | 
                      
                      
                        |   | 5 | Most simulation models connect around an on-chip bus. | 
                      
                        |   | 6 | It is either a NoC or a simpler BUS or crossbar. Most | 
                      
                        |   | 7 | SoCLib components are using the VCI on-chip-bus protocol. This | 
                      
                        |   | 8 | makes the components easily interoperable. Moreover, VCI is simple | 
                      
                        |   | 9 | enough to ease integration of new components, without forbidding | 
                      
                        |   | 10 | translation of VCI to other protocols. | 
                      
                        |   | 11 | See [#OnChipBusNoCProtocoladapters On-Chip-Bus/NoC Protocol adapters]. | 
                      
            
                  
                          |   | 13 |  | 
                  
                          |   | 14 | Available models can be split up in categories | 
                  
                          |   | 15 |  | 
                  
                          |   | 16 | = On-Chip-Bus/NoC implementations = | 
                  
                          |   | 17 |  | 
                  
                          |   | 18 | Several NoC implementations exist in SoCLib, providing interconnection for most of other modules. | 
                  
                          |   | 19 |  | 
                  
                          |   | 20 | Two main types of interconnects are available: | 
                  
                          |   | 21 |  * Virtual interconnects, implementing a typical behavior without an existing hardware equivalent. | 
                  
                          |   | 22 |    This abstraction from an actual implementation makes simulation faster, without | 
                  
                          |   | 23 |    making performance evaluation worse. | 
                  
                          |   | 24 |   * [wiki:Component/VciVgmn VciVgmn] acts as a typical worm-holeNoC. (M->N communication, switched network) | 
                  
                          |   | 25 |   * [wiki:Component/VciVgsb VciVgsb] acts as a classical BUS. (1 at-a-time communication, synchronous response) | 
                  
                          |   | 26 |  * Actual interconnects, which can be implemented as RTL | 
                  
                          |   | 27 |   * BUSes | 
                  
                          |   | 28 |    * [wiki:Component/VciPiBus VciPibus] : A VCI compliant PIBUS implementation. | 
                  
                          |   | 29 |    * [wiki:Component/VciAvalonBus  VciAvalonBus]  : A VCI compliant AVALON bus interconnect. | 
                  
                          |   | 30 |   * Crossbars: | 
                  
                          |   | 31 |    * [wiki:Component/VciLocalCrossbar VciLocalCrossbar] : A VCI compliant crossbar. | 
                  
                          |   | 32 |   * 2D-meshes: | 
                  
                          |   | 33 |    * [wiki:Component/VciDspin VciDspin] : A VCI compliant DSPIN micro-network. | 
                  
                          |   | 34 |    * [wiki:Component/VirtualDspinNetwork VirtualDspinNetwork] : A VCI compliant Dspin micro-network with virtual channels. | 
                  
                          |   | 35 |    * [wiki:Component/VciAnoc VciAnoc] : A VCI compliant ANOC micro-network. | 
                  
                          |   | 36 |   * Ring-based: | 
                  
                          |   | 37 |    * [wiki:Component/VciSimpleRingNetwork VciSimpleRingNetwork] : A VCI compliant ring interconnect. | 
                  
                          |   | 38 |    * [wiki:Component/VciLocalRingNetwork  VciLocalRingNetwork]  : A VCI compliant ring interconnect. | 
                  
                          |   | 39 |  | 
                  
                          |   | 40 | = On-Chip-Bus/NoC Protocol adapters = | 
                  
                          |   | 41 |  | 
                  
                          |   | 42 |  * [wiki:Component/VciPCI VciPCI] : A bridge to the PCI bus | 
                  
                          |   | 43 |  | 
                  
                          |   | 44 | = OCB/NoC configuration utilities = | 
                  
                          |   | 45 |  | 
                  
                          |   | 46 |  * [wiki:Component/MappingTable MappingTable] : A tool to declare and list all memory segments used in a platform and to define the memory mapping. | 
                  
                          |   | 47 |  | 
                  
                          |   | 48 | = Processor + cache = | 
                  
                          |   | 49 |  | 
                  
                          |   | 50 | In SoCLib, processor+cache bundles are designed as two distinct entities. This has several advantages: | 
                  
                          |   | 51 |  * Many CPU cores out there are just the same instruction set with variations on the implementation (pipeline stages, cache, coherency, coprocessors, …) | 
                  
                          |   | 52 |  * Modeling a cache alone is easier | 
                  
                          |   | 53 |  * Modeling an ISS alone is easier | 
                  
                          |   | 54 |  * Instrumentation tools can be factored-out (gdb, profiling, …) | 
                  
                          |   | 55 |  | 
                  
                          |   | 56 | SoCLib provides different caches, with different features. | 
                  
                          |   | 57 | All caches can be used with all ISSes, some features | 
                  
                          |   | 58 | may just be unavailable in certain configurations (eg. not all CPU support MMU-aware caches). | 
                  
                          |   | 59 |  | 
                  
                          |   | 60 | Cache models: | 
                  
                          |   | 61 |  * [wiki:Component/VciXcacheWrapper VciXcacheWrapper] : A generic, VCI compliant, cache controller for Iss2Api processors | 
                  
                          |   | 62 |  * [wiki:Component/VciXcacheWrapper VciVcacheWrapper] : A generic, VCI compliant, cache controller for Iss2Api processors supporting virtual memory mapping | 
                  
                          |   | 63 |  | 
                  
                          |   | 64 | ISS models: | 
                  
            
                      
                        | 15 |   |  * [wiki:Component/IssApi processors using the IssAPI] | 
                      
                        | 16 |   |   * [wiki:Component/MicroBlaze MicroBlaze] | 
                      
                        | 17 |   |   * [wiki:Component/ARM7TDMI ARM7TDMI] | 
                      
                        | 18 |   |   * [wiki:Component/ARM966 ARM966] | 
                      
                        | 19 |   |   * [wiki:Component/ST231 ST231] | 
                      
                        | 20 |   |   * [wiki:Component/TMS320C62 TMS320C62] | 
                      
                        | 21 |   |   * [wiki:Component/MPC7447A MPC7447A] | 
                      
                      
                        |   | 80 | ISS instrumenting tools: | 
                      
                        |   | 81 |   * [wiki:Tools/GdbServer] : A GDB-server wrapper, for any ISS. | 
                      
                        |   | 82 |   * [wiki:Tools/IssMemchecker] : A wrapper providing walgrind-like features, for any ISS. | 
                      
            
                      
                        | 46 |   |  * Iss Wrappers (caches) | 
                      
                        | 47 |   |   * [wiki:Component/VciXcacheWrapper VciXcacheWrapper] : A generic, VCI compliant, cache controller for [#ProcessorISSInstructionSetSimulator Iss2Api] processors | 
                      
                        | 48 |   |   * [wiki:Component/VciXcacheWrapper VciVcacheWrapper] : A generic, VCI compliant, cache controller for [#ProcessorISSInstructionSetSimulator Iss2Api] processors supporting virtual memory | 
                      
                        | 49 |   |  * Other initiators | 
                      
                        | 50 |   |   * [wiki:Component/VciXcache VciXcache] : A cache controller for 32 bits [#ProcessorISSInstructionSetSimulator IssApi] processors (deprecated) | 
                      
                        | 51 |   |   * [wiki:Component/VciDma VciDma] : A DMA engine | 
                      
                        | 52 |   |   * [wiki:Component/VciFdAccess VciFdAccess] : A file system access controller | 
                      
                        | 53 |   |   * [wiki:Component/VciBlockDevice VciBlockDevice] : A block device controller | 
                      
                        | 54 |   |   * [wiki:Component/VciMwmrController VciMwmrController] : A Mwmr channels controller | 
                      
                        | 55 |   |   * [wiki:Component/VciMwmrControllerLf VciMwmrControllerLf] : Another Mwmr channels controller | 
                      
                      
                        |   | 116 |  * [wiki:Component/VciDma VciDma] : A DMA engine | 
                      
            
                      
                        | 59 |   |  * [wiki:Component/VciVgmn VciVgmn] : A VCI compliant generic micro-network.  | 
                      
                        | 60 |   |  * [wiki:Component/VciVgsb VciVgsb] : A VCI compliant generic system bus. | 
                      
                        | 61 |   |  * [wiki:Component/VciLocalCrossbar VciLocalCrossbar] : A VCI compliant crossbar. | 
                      
                        | 62 |   |  * [wiki:Component/VciPiBus VciPibus] : A VCI compliant PIBUS implementation. | 
                      
                        | 63 |   |  * [wiki:Component/VciDspin VciDspin] : A VCI compliant DSPIN micro-network. | 
                      
                        | 64 |   |  * [wiki:Component/VciSimpleRingNetwork VciSimpleRingNetwork] : A VCI compliant ring interconnect. | 
                      
                        | 65 |   |  * [wiki:Component/VciLocalRingNetwork  VciLocalRingNetwork]  : A VCI compliant ring interconnect. | 
                      
                        | 66 |   |  * [wiki:Component/VciAvalonBus  VciAvalonBus]  : A VCI compliant AVALON bus interconnect. | 
                      
                        | 67 |   |  * [wiki:Component/VciAnoc VciAnoc] : A VCI compliant ANOC micro-network. | 
                      
                        | 68 |   |  * [wiki:Component/VirtualDspinNetwork VirtualDspinNetwork] : A VCI compliant Dspin micro-network with virtual channels. | 
                      
                        | 69 |   |  * [wiki:Component/VciInitiatorTransactor VciInitiatorTransactor] : A VCI CABA Initiator compliant VCI TLM-DT Initiator. | 
                      
                        | 70 |   |  * [wiki:Component/VciTargetTransactor VciTargetTransactor] : A VCI CABA Target compliant VCI TLM-DT Target. | 
                      
                        | 71 |   |  | 
                      
                        | 72 |   | == VCI Utilities == | 
                      
                        | 73 |   |  | 
                      
                        | 74 |   |  * [wiki:Component/VciLogger VciLogger] : A VCI spy, useful for debugging network messages | 
                      
                        | 75 |   |  | 
                      
                        | 76 |   | = Dedicated coprocessors = | 
                      
                      
                        |   | 121 | = Dedicated coprocessors, not necessarily connected to On-Chip-Bus = | 
                      
            
                      
                        | 92 |   |  * [wiki:Component/MappingTable MappingTable] : A tool to declare and list all memory segments used in a platform and to define the memory mapping. | 
                      
                        | 93 |   |  * [wiki:Component/Loader Loader] : A binary-file loader (ELF, COFF, plain) | 
                      
                      
                        |   | 137 | == Simulation controller utilities == | 
                      
                        |   | 138 |  | 
                      
                        |   | 139 |  * [wiki:Component/VciSimHelper VciSimHelper] : A memory-mapped simulation control tool, can call `sc_stop` or `exit` upon specific memory access | 
                      
                        |   | 140 |  | 
                      
                        |   | 141 | == VCI debugging == | 
                      
                        |   | 142 |  | 
                      
                        |   | 143 |  * [wiki:Component/VciLogger VciLogger] : A VCI spy, useful for debugging network messages | 
                      
                        |   | 144 |  | 
                      
                        |   | 145 | = Simulation MoC wrappers = | 
                      
                        |   | 146 |  | 
                      
                        |   | 147 | Some components are just syntactical wrappers in order to mix CABA and TLM-DT simulation models: | 
                      
                        |   | 148 |  | 
                      
                        |   | 149 |  * [wiki:Component/VciInitiatorTransactor VciInitiatorTransactor] : A VCI CABA Initiator compliant VCI TLM-DT Initiator. | 
                      
                        |   | 150 |  * [wiki:Component/VciTargetTransactor VciTargetTransactor] : A VCI CABA Target compliant VCI TLM-DT Target. | 
                      
                        |   | 151 |  | 
                      
                        |   | 152 | = Component factored-out code library = | 
                      
                        |   | 153 |  | 
                      
                        |   | 154 | These are common parts of modules that have been factored-out | 
                      
                        |   | 155 | to ease current and future components writing. Their usage | 
                      
                        |   | 156 | is not mandatory for newly-written components, but is useful. | 
                      
                        |   | 157 |  |