Skip to content

Commit 3794431

Browse files
authored
Release Notes for **GHRD for Agilex 3 FPGA C-Series 25.1.1** (#1)
Release Information: Quartus Version: 25.1.1 Build 125 07/31/2025 SC Pro Edition Tag: QPDS25.1.1_REL_GSRD_PR Build: socfpga_ghrd_lth_base/25.1.1/286 New Features and Enhancements - Initial release for Agilex 3 FPGA C-Series design. Issues Resolved None Latest Known Issues None
1 parent 965a3a6 commit 3794431

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+73077
-2
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/venv/
2+
/install/

LICENSE

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
Copyright 2024-2025 Altera Corporation
2+
3+
Permission is hereby granted, free of charge, to any person obtaining a copy of
4+
this software and associated documentation files (the “Software”), to deal in
5+
the Software without restriction, except as set forth below, including without
6+
limitation the rights to use, copy, modify, merge, publish, distribute,
7+
sublicense, and/or sell copies of the Software, and to permit persons to whom
8+
the Software is furnished to do so, subject to the following conditions:
9+
10+
The above copyright notice and this permission notice shall be included in all
11+
copies or substantial portions of the Software;
12+
13+
If a file contained in this Software includes separate license text or a header
14+
file with license terms, those terms will supersede this agreement for purposes
15+
of that file only, all files without a separate agreement are subject to this
16+
agreement;
17+
18+
The Software must be used solely for design and implementation on an Altera
19+
product;
20+
21+
You must not use the Software or devices you configure using this Software to
22+
violate any internationally recognized human right; and
23+
24+
The Software may be subject to export controls under applicable government laws
25+
and regulations, including those of the U.S. You must: a) comply with
26+
applicable laws and regulations and obtain any necessary authorizations; b) not
27+
export, import, or transfer the materials to any prohibited or sanctioned
28+
country, person, or entity; or c) use the materials for the development,
29+
design, manufacture, or production of nuclear, missile, chemical, or biological
30+
weapons.
31+
32+
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
33+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
34+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
35+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
36+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
37+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
38+
SOFTWARE.
39+
40+
Governing Law and Jurisdiction. If you are in the Americas, U.S. and Delaware
41+
law governs all disputes arising out of or relating to this agreement without
42+
regard to conflict-of-laws principles. The state and federal courts in
43+
Wilmington, Delaware will have exclusive jurisdiction over any dispute arising
44+
out of or relating to this agreement. If you are in Europe or Africa, the laws
45+
of England and Wales govern all matters arising out of or relating to this
46+
agreement without regard to conflict-of-laws principles. The courts in England
47+
will have exclusive jurisdiction over any dispute arising out of or relating to
48+
this agreement. If you are in Asia or Australia, Singapore law governs all
49+
disputes arising out of or relating to this agreement without regard to
50+
conflict-of-laws principles. The courts in Singapore will have exclusive
51+
jurisdiction over any dispute arising out of or relating to this agreement. You
52+
and Intel consent to personal jurisdiction and venue in the courts designated
53+
for your location. If you are in China, Hong Kong law governs all disputes
54+
arising out of or relating to this agreement without regard to conflict-of-laws
55+
principles. Any dispute arising out of or relating to this agreement will be
56+
subject to arbitration by the Hong Kong International Arbitration Centre, this
57+
arbitration agreement will be governed by Hong Kong law, and the seat and
58+
location of proceedings will be Hong Kong. The current rules of the HKIAC will
59+
apply, except that the arbitration will be referred to a sole arbitrator and
60+
the proceedings will be conducted in English. The Arbitral Tribunal may only
61+
award monetary damages and may not award injunctive relief or any remedy that
62+
requires a party to license any intellectual property rights. Regardless of the
63+
above or your location, claims for misappropriation of trade secrets and breach
64+
of confidentiality obligations may also be brought in any court that has
65+
jurisdiction over the parties if the relief sought is limited to injunctive or
66+
other nonmonetary relief. The parties exclude the application of the United
67+
Nations Convention on Contracts for the International Sale of Goods (1980).

Makefile

Lines changed: 226 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,226 @@
1+
THIS_MK_ABSPATH := $(abspath $(lastword $(MAKEFILE_LIST)))
2+
THIS_MK_DIR := $(dir $(THIS_MK_ABSPATH))
3+
4+
# Enable pipefail for all commands
5+
SHELL=/bin/bash -o pipefail
6+
7+
# Enable second expansion
8+
.SECONDEXPANSION:
9+
10+
# Clear all built in suffixes
11+
.SUFFIXES:
12+
13+
NOOP :=
14+
SPACE := $(NOOP) $(NOOP)
15+
COMMA := ,
16+
HOSTNAME := $(shell hostname)
17+
18+
##############################################################################
19+
# Environment check
20+
##############################################################################
21+
22+
23+
##############################################################################
24+
# Configuration
25+
##############################################################################
26+
WORK_ROOT := $(abspath $(THIS_MK_DIR)/work)
27+
INSTALL_RELATIVE_ROOT ?= install
28+
INSTALL_ROOT ?= $(abspath $(THIS_MK_DIR)/$(INSTALL_RELATIVE_ROOT))
29+
30+
PYTHON3 ?= python3
31+
VENV_DIR := venv
32+
VENV_PY := $(VENV_DIR)/bin/python
33+
VENV_PIP := $(VENV_DIR)/bin/pip
34+
ifneq ($(https_proxy),)
35+
PIP_PROXY := --proxy $(https_proxy)
36+
else
37+
PIP_PROXY :=
38+
endif
39+
VENV_PIP_INSTALL := $(VENV_PIP) install $(PIP_PROXY) --timeout 90 --trusted-host pypi.org --trusted-host files.pythonhosted.org
40+
41+
##############################################################################
42+
# Set default goal before any targets. The default goal here is "test"
43+
##############################################################################
44+
DEFAULT_TARGET := all
45+
46+
.DEFAULT_GOAL := default
47+
.PHONY: default
48+
default: $(DEFAULT_TARGET)
49+
50+
51+
##############################################################################
52+
# Makefile starts here
53+
##############################################################################
54+
55+
56+
###############################################################################
57+
# Design Targets
58+
###############################################################################
59+
60+
# Initialize variables
61+
ALL_TARGET_STEM_NAMES =
62+
ALL_PRE_PREP_TARGETS =
63+
ALL_PREP_TARGETS =
64+
ALL_IP_UPGRADE_TARGETS =
65+
ALL_GENERATE_DESIGN_TARGETS =
66+
ALL_PACKAGE_DESIGN_TARGETS =
67+
ALL_BUILD_TARGETS =
68+
ALL_SW_BUILD_TARGETS =
69+
ALL_TEST_TARGETS =
70+
ALL_INSTALL_SOF_TARGETS =
71+
ALL_TARGET_ALL_NAMES =
72+
73+
# Define function to create targets
74+
define create_targets_on_subdir
75+
ALL_TARGET_STEM_NAMES += $(addprefix $(strip $(1))-,$(strip $(2)))
76+
ALL_PRE_PREP_TARGETS += $(addsuffix -pre-prep,$(addprefix $(strip $(1))-,$(strip $(2))))
77+
ALL_PREP_TARGETS += $(addsuffix -prep,$(addprefix $(strip $(1))-,$(strip $(2))))
78+
ALL_IP_UPGRADE_TARGETS += $(addsuffix -ip-upgrade,$(addprefix $(strip $(1))-,$(strip $(2))))
79+
ALL_GENERATE_DESIGN_TARGETS += $(addsuffix -generate-design,$(addprefix $(strip $(1))-,$(strip $(2))))
80+
ALL_PACKAGE_DESIGN_TARGETS += $(addsuffix -package-design,$(addprefix $(strip $(1))-,$(strip $(2))))
81+
ALL_BUILD_TARGETS += $(addsuffix -build,$(addprefix $(strip $(1))-,$(strip $(2))))
82+
ALL_SW_BUILD_TARGETS += $(addsuffix -sw-build,$(addprefix $(strip $(1))-,$(strip $(2))))
83+
ALL_TEST_TARGETS += $(addsuffix -test,$(addprefix $(strip $(1))-,$(strip $(2))))
84+
ALL_INSTALL_SOF_TARGETS += $(addsuffix -install-sof,$(addprefix $(strip $(1))-,$(strip $(2))))
85+
ALL_TARGET_ALL_NAMES += $(addsuffix -all,$(addprefix $(strip $(1))-,$(strip $(2))))
86+
87+
88+
$(strip $(1))-%-pre-prep : venv
89+
$(MAKE) --no-print-directory -C $(strip $(1)) $$*-pre-prep
90+
91+
$(strip $(1))-%-prep : venv
92+
$(MAKE) --no-print-directory -C $(strip $(1)) $$*-prep
93+
94+
$(strip $(1))-%-ip-upgrade : venv
95+
$(MAKE) --no-print-directory -C $(strip $(1)) $$*-ip-upgrade
96+
97+
$(strip $(1))-%-generate-design : venv
98+
$(MAKE) --no-print-directory -C $(strip $(1)) $$*-generate-design
99+
100+
$(strip $(1))-%-package-design :
101+
$(MAKE) --no-print-directory -C $(strip $(1)) $$*-package-design INSTALL_ROOT=$(INSTALL_ROOT)/$(strip $(3))
102+
103+
$(strip $(1))-%-build :
104+
$(MAKE) --no-print-directory -C $(strip $(1)) $$*-build
105+
106+
$(strip $(1))-%-sw-build :
107+
$(MAKE) --no-print-directory -C $(strip $(1)) $$*-sw-build
108+
109+
$(strip $(1))-%-test :
110+
$(MAKE) --no-print-directory -C $(strip $(1)) $$*-test
111+
112+
$(strip $(1))-%-install-sof :
113+
$(MAKE) --no-print-directory -C $(strip $(1)) $$*-install-sof INSTALL_ROOT=$(INSTALL_ROOT)/$(strip $(3))
114+
115+
.PHONY: $(addsuffix -all,$(addprefix $(strip $(1))-,$(strip $(2))))
116+
$(addsuffix -all,$(addprefix $(strip $(1))-,$(strip $(2)))): venv
117+
$(MAKE) $(addsuffix -pre-prep,$(addprefix $(strip $(1))-,$(strip $(2))))
118+
$(MAKE) $(addsuffix -generate-design,$(addprefix $(strip $(1))-,$(strip $(2))))
119+
$(MAKE) $(addsuffix -package-design,$(addprefix $(strip $(1))-,$(strip $(2))))
120+
$(MAKE) $(addsuffix -prep,$(addprefix $(strip $(1))-,$(strip $(2))))
121+
$(MAKE) $(addsuffix -build,$(addprefix $(strip $(1))-,$(strip $(2))))
122+
$(MAKE) $(addsuffix -sw-build,$(addprefix $(strip $(1))-,$(strip $(2))))
123+
$(MAKE) $(addsuffix -test,$(addprefix $(strip $(1))-,$(strip $(2))))
124+
$(MAKE) $(addsuffix -install-sof,$(addprefix $(strip $(1))-,$(strip $(2))))
125+
126+
endef
127+
128+
# Create rules for subdirs
129+
TARGET_SUBDIR := \
130+
a3cw135-devkit-oobe
131+
132+
# Create the subdir recipes by recurinsively calling the create_targets_on_subdir on each TARGET_SUBDIR
133+
define create_subdir_targets
134+
$(foreach target, $(shell make --no-print-directory -q -C $(1) print-targets), $(eval $(call create_targets_on_subdir, $(1), $(target), designs)))
135+
endef
136+
$(foreach subdir,$(TARGET_SUBDIR),$(eval $(call create_subdir_targets,$(subdir))))
137+
138+
###############################################################################
139+
# UTILITY TARGETS
140+
###############################################################################
141+
# Deep clean using git
142+
.PHONY: dev-clean
143+
dev-clean :
144+
rm -rf $(INSTALL_ROOT) $(WORK_ROOT)
145+
git clean -dfx --exclude=/.vscode --exclude=.lfsconfig
146+
147+
# Using git
148+
.PHONY: dev-update
149+
dev-update :
150+
git pull
151+
git submodule update --init --recursive
152+
153+
.PHONY: clean
154+
clean:
155+
rm -rf $(INSTALL_ROOT) $(WORK_ROOT)
156+
git clean -dfx --exclude=/.vscode --exclude=.lfsconfig --exclude=$(VENV_DIR)
157+
158+
# Prep workspace
159+
venv:
160+
$(PYTHON3) -m venv $(VENV_DIR)
161+
$(VENV_PIP_INSTALL) --upgrade pip
162+
$(VENV_PIP_INSTALL) -r requirements.txt
163+
164+
165+
.PHONY: venv-freeze
166+
venv-freeze:
167+
$(VENV_PIP) freeze > requirements.txt
168+
sed -i -e 's/==/~=/g' requirements.txt
169+
170+
.PHONY: prepare-tools
171+
prepare-tools : venv
172+
173+
# Include not_shipped Makefile if present
174+
-include not_shipped/Makefile.mk
175+
176+
###############################################################################
177+
# Toplevel Targets
178+
###############################################################################
179+
.PHONY: pre-prep
180+
pre-prep: $(ALL_PRE_PREP_TARGETS)
181+
182+
.PHONY: prep
183+
prep: $(ALL_PREP_TARGETS)
184+
185+
.PHONY: ip-upgrade
186+
ip-upgrade: $(ALL_IP_UPGRADE_TARGETS)
187+
188+
.PHONY: generate-designs
189+
generate-designs: $(ALL_GENERATE_DESIGN_TARGETS)
190+
191+
.PHONY: package-designs
192+
package-designs: $(ALL_PACKAGE_DESIGN_TARGETS)
193+
194+
# Build options
195+
.PHONY: build
196+
build: $(ALL_BUILD_TARGETS)
197+
198+
# SW-Build options
199+
.PHONY: sw-build
200+
sw-build: $(ALL_SW_BUILD_TARGETS)
201+
202+
# Run all tests
203+
.PHONY: test
204+
test : build
205+
206+
.PHONY: install-sof
207+
install-sof: $(ALL_INSTALL_SOF_TARGETS)
208+
209+
.PHONY: all
210+
all: $(ALL_TARGET_ALL_NAMES)
211+
212+
###############################################################################
213+
# HELP
214+
###############################################################################
215+
.PHONY: help
216+
help:
217+
$(info GHRD Build)
218+
$(info ----------------)
219+
$(info All Targets : $(ALL_TARGET_ALL_NAMES))
220+
$(info Stem names : $(ALL_TARGET_STEM_NAMES))
221+
$(info Pre-Prep Targets : $(ALL_PRE_PREP_TARGETS))
222+
$(info Prep Targets : $(ALL_PREP_TARGETS))
223+
$(info Build Targets : $(ALL_BUILD_TARGETS))
224+
$(info Test Targets : $(ALL_TEST_TARGETS))
225+
$(info Package Targets : $(ALL_PACKAGE_DESIGN_TARGETS))
226+

README.md

Lines changed: 91 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,91 @@
1-
# agilex3c-ed-gsrd
2-
Altera Agilex 3 C-series GSRD
1+
# Agilex 3 C-Series Golden Hardware Reference Design (GHRD)
2+
3+
This repository contains Golden Hardware Reference Design (GHRD) for Agilex 3 C-Series System On Chip (SoC) FPGA.
4+
The GHRD is part of the Golden System Reference Design (GSRD), which provides a complete solution, including exercising soft IP in the fabric, booting to U-Boot, then Linux, and running sample Linux applications.
5+
Refer to the [Altera FPGA Developer Site](https://altera-fpga.github.io/latest/ed-demo-list/ed-list/) for information about GSRD.
6+
7+
The [designs](#designs) are stored in individual folders. Each design can be opened, modified and compiled by using Quartus Prime software.
8+
GHRD releases are created for each version of Quartus Prime Software. It is recommended to use the release for your version of Quartus Prime.
9+
These reference designs demonstrate the system integration between Hard Processor System (HPS) and FPGA IPs.
10+
11+
## Baseline feature
12+
This is applicable to all designs.
13+
- Hard Processor System (HPS) enablement and configuration
14+
- Enable dual core Arm Cortex-A55 processor
15+
- HPS Peripheral and I/O (SD/MMC, EMAC, MDIO, USB, I3C, JTAG, UART, and GPIO)
16+
- HPS Clock and Reset
17+
- HPS FPGA Bridge and Interrupt
18+
- HPS EMIF configuration (Inline ECC for LPDDR4 is enabled by default)
19+
- System integration with FPGA IPs
20+
- Peripheral subsystem that consists of System ID, Programmable I/O (PIO) IP for controlling PushButton and LEDs.
21+
- Debug subsystem that consists of JTAG-to-Avalon Master IP to allow System-Console debug activity and FPGA content access through JTAG
22+
- 256KB of FPGA On-Chip Memory
23+
24+
## The GHRD use cases:
25+
1. use the precompiled bitstream(sof) in release assets to programm the board.
26+
2. open and compile the [designs](#designs) with Quartus Prime.
27+
3. modify and compile the [designs](#designs) with Quartus Prime.
28+
29+
## Dependency
30+
* Altera Quartus Prime 25.1.1
31+
* Supported Board
32+
- Agilex 3 FPGA and SoC C-Series Development Kit: [Devkit User Guide](https://www.intel.com/content/www/us/en/docs/programmable/851698/current)
33+
![Agilex 3 FPGA and SoC C-Series Development Kit](images/agilex3_soc_devkit.png)
34+
35+
## Tested Platform for the GHRD Build Flow
36+
* SUSE Linux Enterprise Server 15 SP4
37+
38+
## Setup
39+
40+
Several tools are required to be in the path.
41+
42+
* Altera Quartus Prime 25.1.1
43+
* Python 3.11.5 (only required when using command line to build)
44+
45+
### Example Setup for Altera Quartus Prime tools
46+
This is recommended, when using command line to build.
47+
```bash
48+
export QUARTUS_ROOTDIR=~/intelFPGA_pro/25.1.1/quartus
49+
```
50+
Note: Adapt the path above to where Quartus Prime is installed.
51+
52+
```bash
53+
export PATH="$QUARTUS_ROOTDIR/bin:$QUARTUS_ROOTDIR/../qsys/bin:$QUARTUS_ROOTDIR/../niosv/bin:$QUARTUS_ROOTDIR/sopc_builder/bin:$QUARTUS_ROOTDIR/../questa_fe/bin:$QUARTUS_ROOTDIR/../syscon/bin:$QUARTUS_ROOTDIR/../riscfree/RiscFree:$PATH"'
54+
```
55+
56+
## Quick start
57+
### Notes
58+
- Command line and Quartus GUI should not be used intertwined.
59+
- Mixing both might not generate some fileset correctly and fail the build.
60+
61+
### using command line
62+
Copy and run the desired make command from [designs](#designs) in the root directory.
63+
After build, the design files (zip, sof and rbf) can be found in install/designs folder.
64+
65+
### using Quartus GUI
66+
- Launch Quartus.
67+
- Open the project. Example: a3cw135-devkit-oobe/legacy-baseline/top.qpf
68+
- Click the play button to compile the design.
69+
- The compiled sof can be found in output_folders of the project path.
70+
71+
## Designs
72+
73+
### Agilex 3 FPGA and SoC C-Series Development Kit
74+
Refer to the individual readme for details of the design.
75+
76+
* [a3cw135-devkit-oobe/legacy-baseline](a3cw135-devkit-oobe/legacy-baseline/README.md) :
77+
Legacy baseline GHRD for the Agilex 3 FPGA and SoC C-Series Development Kit.
78+
```bash
79+
make a3cw135-devkit-oobe-legacy-baseline-legacy_baseline-all
80+
```
81+
82+
## Install location:
83+
After build, the design files (zip, sof and rbf) can be found in install/designs folder.
84+
These files are also uploaded as github release assets.
85+
- \<design_name>**.zip**
86+
- This is the archeived project files of the individual GHRD.
87+
- \<design_name>**.sof**
88+
- Compiled bitstream. Can be programm on board.
89+
- \<design_name>**hps_debug.sof**
90+
- This bitstream is injected with hps wipe program. This creates a wait loop to boot with arm debugger.
91+
Refer [readme](a3cw135-devkit-oobe/legacy-baseline/software/hps_debug/README.md)

SECURITY.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Security Policy
2+
Altera is committed to the security of its products.
3+
4+
## Reporting a Vulnerability
5+
Security vulnerabilities in this project can be reported to Altera’s security incident response team utilizing the guidelines here: https://www.altera.com/security/psirt.html.

0 commit comments

Comments
 (0)