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,c
mmp,c
zcu102,1
-
TargetPart
- part to run you application onxc7z020clg400-1
xc7z100ffg900-2
xczu9eg-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³ acceleratorsvhdl
verilog
hls
-
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