3.5.1.28 Hardware Integration of SmartHLS™ modules into SoC SmartDesign
(Ask a Question)As described before in Instantiating SmartHLS IP Core in Libero, HDL+ cores can be created for each module generated by SmartHLS. However, there is still a need to connect those cores to the rest of the system.
SmartHLS simplifies hardware/software design partition and exploration by making it easy to add or remove functions (verilog/VHDL modules), or to split a large function into smaller ones to improve timing and modularity. However, this flexibility moves the focus to system-level integration because it produces a very dynamic address mapping and decoding while exploring options and architectures. It is often necessary to connect (or disconnect) a variable number of modules into a larger project including their corresponding reset, clock and AXI interface signals for each module.
Integration greatly depends on the overall system architecture and is usually performed manually by a system architect. However, under certain assumptions integration of all the generated SmartHLS cores can be done automatically.
On the hardware side, the automated integration process is performed by a Tcl script called hls_ouput/scripts/shls_integrate_accels.tcl
, which performs the following steps:
- Call the create_hdl_plus.tcl script (as described in Instantiating SmartHLS IP Core in Libero)Create the HLS subsystem:
- Instantiate the HLS AXI Interconnect and configure the address decoding
- Connect the created HDL+ cores in step 1 to the HLS AXI interconnect
- Connect the reset and clock signals
- Connect the HLS AXI Interconnect to the upstream AXI interface
As mentioned in the SmartHLS Reference SoC, SmartHLS uses the Icicle Kit Reference Design featuring a PolarFire® SoC Microprocessor Sub-System (MSS) to which the generated SmartHLS IP modules are automatically attached to via AXI interconnects.