4.3. Build with make
The process of creating an N3000 FPGA image is simplified with the provided Makefile that automates the setting of compile parameters and combining your design files with the supplied source files. The Makefile flow starts with your design input files and ends after Intel® Quartus® Prime synthesizes and places the output and a binary FPGA file that is ready for secure signing with PACSign.
The make flow is only supported on Linux* platforms. Your development system requires the following:
- make 3.81 (or newer)
- Python 3.6
- make [target] [options] [paths] [versioning]
- 2x1x25G
- 2x2x25G
- 4x25G
- 8x10G
- 2x1x25Gx2FVL
- 1x2x25G
- clean
- archive
Options
Option | Value | Description | Required | Default | Comment |
---|---|---|---|---|---|
GUI | 0 | run selected stage | NO | 0 | |
1 | open Intel® Quartus® Prime GUI | ||||
SEED | 0 - 232-1 | fitter seed | NO | 1 | Helpful in achieving timing closure |
STAGE | compile | execute full flow (step-by-step) | YES | Not applicable | |
synthesis | execute analysis and synthesis | calls ipgenerate | |||
fitter | execute fitting (Fit, Place, Route) | calls ipgenerate | |||
fitter-timing | execute fitter and timing analysis | calls ipgenerate | |||
analysis-timing | execute timing analysis | requires completed fitter | |||
analysis-power | execute power analysis | requires completed fitter | |||
assembler | execute assembler | requires completed fitter | |||
ipgenerate | generate IPs | ||||
dummy | do nothing | GUI only | |||
USE_BBS_CLK | 0 | do not take user clock from BBS | NO | 0 | |
1 | take user clock from BBS | Required if CCI-P clock uClk_usr or uClk_usrDiv2 is used in your design | |||
INCLUDE_DIAGNOSTICS | 0 | exclude AFU diagnostics | NO | 1 | |
1 | include AFU diagnostics | ||||
INCLUDE_AFU_PCIE1 | 0 | exclude AFU PCIe* 1 | NO | 1 | |
1 | include AFU PCIe* 1 | ||||
INCLUDE_MEMORY | 0 | exclude all EMIFs | NO | 1 | |
1 | include all EMIFs | ||||
INCLUDE_DDR4_A | 0 | exclude DDR4 A | NO | INCLUDE_MEMORY | |
1 | include DDR4 A | ||||
INCLUDE_DDR4_B | 0 | exclude DDR4 B | NO | INCLUDE_MEMORY | |
1 | include DDR4 B | ||||
INCLUDE_DDR4_C | 0 | exclude DDR4 C | NO | INCLUDE_MEMORY | |
1 | include DDR4 C | ||||
INCLUDE_QDR | 0 | exclude QDR | NO | INCLUDE_MEMORY | |
1 | include QDR | ||||
MAC_LIGHTWEIGHT_MODE | 0 | disabled | NO | 0 | Disabled non required features in MACs for less logic consumption |
1 | enabled | ||||
DATAPATH_MODE | normal | Ethernet aggregated mode | NO | normal | |
disaggregated | disaggregated Ethernet mode | ||||
lightweight | lightweight Ethernet mode | ||||
INCLUDE_SEU | 0 | Excludes SEU detection circuit | NO | 1 | |
1 | Includes SEU detection circuit | ||||
ARCHIVE_NAME | [any string] | .qar archive name for .qdb archive | NO | snapshot.qar | used by archive target |
Usage Examples:
$ source <N3000 Installation Directory>/inteldevstack/bin/init_env.sh
$ make 2x2x25G SEED=5 STAGE=compile
Paths
Path | Description | Default |
---|---|---|
PROJECT_FILE | main project qpf | prj/pac_baseline/chip.qpf |
PAC_ROOT | N3000 sources root where main .qip is located | hw/pac |
AFU_ROOT | AFU sources root where afu.qsf is located | hw/afu/hw |
Versioning
Versioning | Description | Default |
---|---|---|
PAC_VER_MAJOR | SemVer Major. 0 - 15 | 0 |
PAC_VER_MINOR | SemVer Minor. 0 – 255 | 0 |
PAC_VER_PATCH | SemVer Patch. 0 – 15 | 0 |
REVISION_ID | 32-bit | 0 |
AFU_REVISION_ID | 12-bit | 0 |
Pr_Interface_ID
TARGET | Pr_Interface_ID |
---|---|
8x10G | 901DD697-CA79-4B05-B843-8138CEFA2846 |
4x25G | F3C99413-5081-4AAD-BCED-07EB84A6D0BB |
2x2x25G | A5D72A3C-C8B0-4939-912C-F715E5DC10CA |
The build process combines your afu.qsf file with a top level chip.qsf that includes external memory interfaces, MACs, and the encrypted CCI-P and management blocks.
$ cd $N3000_EXAMPLE_ROOT/hello_afu
$ make 2x2x25G GUI=1 INCLUDE_DIAGNOSTICS=0 INCLUDE_MEMORY=0 \
PAC_VER_MAJOR=3 PAC_VER_MINOR=5 PAC_VER_PATCH=6 \
REVISION_ID=12345678 INCLUDE_AFU_PCIE1=0
The following example steps use the Quartus GUI to illustrate the design flow. Once you are familiar with this flow you may prefer to use the non-GUI mode and additionally utilization of user created scripted or automated build flow.
When your compile is complete, do not close Intel® Quartus® Prime, so that you can continue with the next steps.