ARTICo³ Project Structure
Project Folder
ARTICo³ projects need to show the following structure:
<project_name>
|--- build.cfg
|--- src
|--- application
| |--- main.c
| |--- (...)
|
|--- a3_<kernel_0_name>
| |--- hls
| | |--- <kernel_0_name>.cpp
| | |--- (...)
| |
| |--- vhdl
| | |--- <kernel_0_name>.vhd
| | |--- (...)
| |
| |--- verilog
| |--- <kernel_0_name>.v
| |--- (...)
|
|--- (...)
|
|--- a3_<kernel_n_name>
|--- hls
| |--- <kernel_n_name>.cpp
| |--- (...)
|
|--- vhdl
| |--- <kernel_n_name>.vhd
| |--- (...)
|
|--- verilog
|--- <kernel_n_name>.v
|--- (...)
Configuration File
The file build.cfg contains all the required data to generate the target system.
General Settings
Defined under the [General] section. Its fields are:
-
Name- name of your application -
TargetBoard- board to run your application onpynq,cmmp,czcu102,1
-
TargetPart- part to run you application onxc7z020clg400-1xc7z100ffg900-2xczu9eg-ffvb1156-2-i
-
ReferenceDesign- reference design templatebasic
-
TargetOS- operating system to uselinux
-
TargetXil- Xilinx tools to usevivado,2017.1
-
CFlags- additional flags for compilation [OPTIONAL] -
LdFlags- additional flags for linking [OPTIONAL] -
LdLibs- additional libraries for linking [OPTIONAL]
Kernel Settings
Defined under the [A3Kernel@<kernel_name>] sections. There should be one for each kernel in the project. Its fields are:
-
HwSource- type of source code that should be used to generate the ARTICo³ acceleratorsvhdlveriloghls
-
MemBytes- local memory storage size in Bytes (might be slightly increased to deal with bank partitioning, so that each memory bank contains an integer number of 32-bit words)1 - 65536
-
MemBanks- number of memory banks to be generated (each one provides only one R/W access port from/to the user logic) -
Regs- number of Read/Write registers available in the kernel -
RstPol- reset polarity of user logic (not required for HLS-based kernels)high-
low(default)
NOTE: MemBytes value is ORIENTATIVE, since the toolchain modifies it to get the closest (ceiling) value that renders a partitioning in which all banks (see next parameter) have an integer amount of 32-bit words (ARTICo³ data bus width). Therefore, and since there is a 64kiB limitation (hardware addressing), users should not push the limit (use only the amount of memory required).
NOTE: in HLS-based cores, MemBanks equals the amount of I/O ports specified in the code