ARTICo³ Reference Designs
In the ARTICo³ toolchain, everything is modular. There is a common core based upon Python scripts, but the rest is highly configurable using the so-called Reference Designs or Templates.
Template Structure
The following files are contained in the Reference Design for hardware project generation:
templates/ref_<os>_<board>_<revision>_<name>_vivado_<version>
|--- pcores
| |--- artico3_shuffler_v1_00_a
| | |--- (...)
| |
| |--- (...)
|
|--- artico3.cfg
|--- build.tcl
|--- clean.tcl
|--- create_ip_library.tcl
|--- export.tcl
|--- <board>.xdc
|--- (...)
-
pcores: custom IP cores -
artico3.cfg: ARTICo³ configuration file (see next section) -
create_ip_library.tcl: script to generate Xilinx IP Core definitions from a valid set of source files (i.e.,.vhdfor VHDL,.vfor Verilog) -
export.tcl: script to generate the Vivado IP Integrator project for the ARTICo³ setup -
build.tcl: script to generate the bitstreams (full and partial) for the ARTICo³ setup -
clean.tcl: script to clean the generated files in the Vivado IP Integrator project for the ARTICo³ setup -
<board>.xdc: low-level FPGA constraints for the ARTICo³ setup (e.g., reconfigurable accelerators floorplan)
NOTE: the folder pcores contains the required custom IP blocks to be used in Vivado IP integrator. The recommended approach is to generate symlinks to the elements in lib/pcores. In the previous hierarchy, the internal contents of the artico3_shuffler_v1_00_a folder have been removed for the sake of readability.
ARTICo³ Configuration File
The file artico3.cfg contains the ARTICo³ infrastructure configuration in the [Shuffler] section. Its fields are:
-
Slots- number of reconfigurable slots available in this device -
PipeDepth- number of pipeline stages in the ARTICo³ infrastructure (between Shuffler and accelerators, used to avoid timing issues). -
ClkBuffer- type of hardware primitive to use as clock buffers-
none(disables clock gating features) -
global(use global FPGA buffers) -
horizontal(use local buffers per clock region)
-
-
RstBuffer- type of hardware primitive to use as reset buffersnone-
global(use global FPGA buffers) -
horizontal(use local buffers per clock region)