Altera flow support (#2649)
Some checks are pending
bender-up-to-date / bender-up-to-date (push) Waiting to run
ci / build-riscv-tests (push) Waiting to run
ci / execute-riscv64-tests (push) Blocked by required conditions
ci / execute-riscv32-tests (push) Blocked by required conditions

Integration of bitstream generation for Altera APU in general flow.
* Automatic generation of IPs and sources required for Altera FPGA
* Adaptation of bootrom code (UART used in Altera is different and needs a different driver)
* Generation of project for Quartus Pro adding required sources and constraints - Quartus Pro licence required by users
* Configuration file for openocd connection with vJTAG tap
This commit is contained in:
AngelaGonzalezMarino 2025-01-07 23:45:49 +01:00 committed by GitHub
parent 2155d0e9c4
commit eab88770ec
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
24 changed files with 5540 additions and 15 deletions

View file

@ -40,7 +40,10 @@ torture-logs :=
elf_file ?= tmp/riscv-tests/build/benchmarks/dhrystone.riscv
# board name for bitstream generation. Currently supported: kc705, genesys2, nexys_video
BOARD ?= genesys2
ALTERA_BOARD ?= DK-DEV-AGF014E3ES
ALTERA_FAMILY ?= "AGILEX"
ALTERA_PART ?= AGFB014R24B2E2V
PLATFORM = "PLAT_XILINX"
# root path
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
root-dir := $(dir $(mkfile_path))
@ -166,17 +169,11 @@ src := $(if $(spike-tandem),verif/tb/core/uvma_core_cntrl_pkg.sv)
$(wildcard corev_apu/fpga/src/axi_slice/src/*.sv) \
$(wildcard corev_apu/src/axi_riscv_atomics/src/*.sv) \
$(wildcard corev_apu/axi_mem_if/src/*.sv) \
$(wildcard corev_apu/riscv-dbg/src/*.sv) \
corev_apu/rv_plic/rtl/rv_plic_target.sv \
corev_apu/rv_plic/rtl/rv_plic_gateway.sv \
corev_apu/rv_plic/rtl/plic_regmap.sv \
corev_apu/rv_plic/rtl/plic_top.sv \
corev_apu/riscv-dbg/src/dmi_cdc.sv \
corev_apu/riscv-dbg/src/dmi_jtag.sv \
corev_apu/riscv-dbg/src/dmi_jtag_tap.sv \
corev_apu/riscv-dbg/src/dm_csrs.sv \
corev_apu/riscv-dbg/src/dm_mem.sv \
corev_apu/riscv-dbg/src/dm_sba.sv \
corev_apu/riscv-dbg/src/dm_top.sv \
corev_apu/riscv-dbg/debug_rom/debug_rom.sv \
corev_apu/register_interface/src/apb_to_reg.sv \
vendor/pulp-platform/axi/src/axi_multicut.sv \
@ -236,6 +233,52 @@ uart_src_sv:= corev_apu/fpga/src/apb_uart/src/slib_clock_div.sv \
uart_src_sv := $(addprefix $(root-dir), $(uart_src_sv))
fpga_src := $(wildcard corev_apu/fpga/src/*.sv) $(wildcard corev_apu/fpga/src/ariane-ethernet/*.sv) common/local/util/tc_sram_fpga_wrapper.sv common/local/util/hpdcache_sram_1rw.sv common/local/util/hpdcache_sram_wbyteenable_1rw.sv vendor/pulp-platform/fpga-support/rtl/SyncSpRamBeNx64.sv vendor/pulp-platform/fpga-support/rtl/SyncSpRamBeNx32.sv vendor/pulp-platform/fpga-support/rtl/SyncSpRam.sv
altera_src := $(shell find $(root-dir)/corev_apu/altera/src -type f \( -name "*.v" -o -name "*.sv" -o -name "*.svh" \) -print | sed 's|//|/|g')
altera_src += $(src)
altera_src += $(shell find $(root-dir)/corev_apu/fpga/src -type f \( -name "*.v" -o -name "*.sv" \) -print | sed 's|//|/|g')
altera_src += $(shell find $(root-dir)core/cvfpu/src/common_cells/src/ -maxdepth 1 -type f \( -name "*.v" -o -name "*.sv" -o -name "*.vhd" -o -name "*.svh" \) -print)
altera_axi_src := $(shell find $(root-dir)/vendor/pulp-platform/axi/src -type f \( -name "*.v" -o -name "*.sv" \) -print | sed 's|//|/|g')
altera_src += $(root-dir)corev_apu/rv_plic/rtl/top_pkg.sv \
$(root-dir)corev_apu/rv_plic/rtl/tlul_pkg.sv \
$(root-dir)corev_apu/rv_plic/rtl/rv_plic_reg_top.sv \
$(root-dir)corev_apu/rv_plic/rtl/rv_plic_reg_pkg.sv \
$(root-dir)corev_apu/rv_plic/rtl/rv_plic.sv \
$(root-dir)corev_apu/rv_plic/rtl/prim_subreg_ext.sv \
$(root-dir)corev_apu/rv_plic/rtl/prim_subreg.sv \
$(root-dir)vendor/pulp-platform/common_cells/src/cdc_fifo_gray.sv \
$(root-dir)riscv-dbg/src/dm_obi_top.sv \
$(root-dir)core/include/instr_tracer_pkg.sv \
$(root-dir)core/cvfpu/src/fpu_div_sqrt_mvp/hdl/div_sqrt_mvp_wrapper.sv \
$(root-dir)core/cache_subsystem/amo_alu.sv
altera_filter := corev_apu/tb/ariane_testharness.sv \
corev_apu/tb/ariane_peripherals.sv \
corev_apu/tb/rvfi_tracer.sv \
corev_apu/tb/common/uart.sv \
corev_apu/tb/common/SimDTM.sv \
corev_apu/tb/common/SimJTAG.sv \
corev_apu/fpga/src/apb/src/apb_test.sv \
corev_apu/fpga/src/ariane_xilinx.sv \
corev_apu/fpga/ariane_peripherals_xilinx.sv \
corev_apu/fpga/src/apb/test/tb_apb_cdc.sv \
corev_apu/fpga/src/apb/test/tb_apb_regs.sv \
corev_apu/fpga/src/apb/test/tb_apb_demux.sv \
corev_apu/fpga/src/gpio/test/tb_gpio.sv \
vendor/pulp-platform/axi/src/axi_test.sv \
corev_apu/riscv-dbg/src/dm_pkg.sv \
corev_apu/riscv-dbg/src/dmi_jtag_tap.sv \
corev_apu/riscv-dbg/src/dmi_jtag.sv \
corev_apu/fpga/src/apb_uart/src/reg_uart_wrap.sv
altera_filter := $(addprefix $(root-dir), $(altera_filter))
xil_debug_filter = $(addprefix $(root-dir), corev_apu/riscv-dbg/src/dm_obi_top.sv)
xil_debug_filter += $(addprefix $(root-dir), corev_apu/riscv-dbg/src/dm_pkg.sv)
xil_debug_filter += $(addprefix $(root-dir), corev_apu/riscv-dbg/src/dmi_vjtag_tap.sv)
xil_debug_filter += $(addprefix $(root-dir), corev_apu/riscv-dbg/src/dmi_vjtag.sv)
src := $(filter-out $(xil_debug_filter), $(src))
fpga_src := $(addprefix $(root-dir), $(fpga_src)) src/bootrom/bootrom_$(XLEN).sv
# look for testbenches
@ -738,7 +781,7 @@ fpga_filter += $(addprefix $(root-dir), core/cache_subsystem/hpdcache/rtl/src/co
fpga_filter += $(addprefix $(root-dir), core/cache_subsystem/hpdcache/rtl/src/common/macros/behav/hpdcache_sram_wmask_1rw.sv)
src/bootrom/bootrom_$(XLEN).sv:
$(MAKE) -C corev_apu/fpga/src/bootrom BOARD=$(BOARD) XLEN=$(XLEN) bootrom_$(XLEN).sv
$(MAKE) -C corev_apu/fpga/src/bootrom BOARD=$(BOARD) XLEN=$(XLEN) PLATFORM=$(PLATFORM) bootrom_$(XLEN).sv
fpga: $(ariane_pkg) $(src) $(fpga_src) $(uart_src) $(src_flist)
@echo "[FPGA] Generate sources"
@ -750,6 +793,19 @@ fpga: $(ariane_pkg) $(src) $(fpga_src) $(uart_src) $(src_flist)
@echo "[FPGA] Generate Bitstream"
$(MAKE) -C corev_apu/fpga BOARD=$(BOARD) XILINX_PART=$(XILINX_PART) XILINX_BOARD=$(XILINX_BOARD) CLK_PERIOD_NS=$(CLK_PERIOD_NS)
altera: PLATFORM := "PLAT_AGILEX"
altera: $(ariane_pkg) $(src) $(fpga_src) $(src_flist)
@echo "[FPGA] Generate sources"
@echo $(ariane_pkg) > corev_apu/altera/sourcelist.txt
@echo $(filter-out $(fpga_filter), $(src_flist)) >> corev_apu/altera/sourcelist.txt
@echo $(filter-out $(fpga_filter) $(altera_filter), $(src)) >> corev_apu/altera/sourcelist.txt
@echo $(filter-out $(altera_filter), $(fpga_src)) >> corev_apu/altera/sourcelist.txt
@echo $(filter-out $(fpga_filter) $(altera_filter) $(uart_src_sv), $(altera_src)) >> corev_apu/altera/sourcelist.txt
@echo $(filter-out $(fpga_filter) $(altera_filter), $(altera_axi_src)) >> corev_apu/altera/sourcelist.txt
@echo "[FPGA] Generate Bitstream"
$(MAKE) -C corev_apu/altera ALTERA_PART=$(ALTERA_PART) ALTERA_BOARD=$(ALTERA_BOARD) CLK_PERIOD_NS=$(CLK_PERIOD_NS)
.PHONY: fpga
build-spike:
@ -762,6 +818,9 @@ clean:
$(MAKE) -C corev_apu/fpga clean
$(MAKE) -C corev_apu/fpga/src/bootrom BOARD=$(BOARD) XLEN=$(XLEN) clean
clean-altera: clean
$(MAKE) -C corev_apu/altera clean
.PHONY:
build sim sim-verilate clean \
$(riscv-asm-tests) $(addsuffix _verilator,$(riscv-asm-tests)) \

View file

@ -29,6 +29,8 @@
${CVA6_REPO_DIR}/vendor/pulp-platform/fpga-support/rtl/SyncDpRam.sv
${CVA6_REPO_DIR}/vendor/pulp-platform/fpga-support/rtl/AsyncDpRam.sv
${CVA6_REPO_DIR}/vendor/pulp-platform/fpga-support/rtl/AsyncThreePortRam.sv
${CVA6_REPO_DIR}/vendor/pulp-platform/fpga-support/rtl/SyncThreePortRam.sv
${CVA6_REPO_DIR}/vendor/pulp-platform/fpga-support/rtl/SyncDpRam_ind_r_w.sv
+incdir+${CVA6_REPO_DIR}/core/include/
+incdir+${CVA6_REPO_DIR}/vendor/pulp-platform/common_cells/include/

197
corev_apu/altera/Makefile Normal file
View file

@ -0,0 +1,197 @@
# // Copyright (c) 2024 PlanV Technologies
# // SPDX-License-Identifier: Apache-2.0 WITH SHL-2.1
# // Copyright and related rights are licensed under the Solderpad Hardware
# // License, Version 0.51 (the "License"); you may not use this file except in
# // compliance with the License. You may obtain a copy of the License at
# // http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
# // or agreed to in writing, software, hardware and materials distributed under
# // this License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# // CONDITIONS OF ANY KIND, either express or implied. See the License for the
# // specific language governing permissions and limitations under the License.
# // Description: Makefile for Altera project
# // Author: Mustafa Karadayi, PlanV Technology
###################################################################
# Project Configuration:
#
# Specify the name of the design (project) and the Quartus II
# Settings File (.qsf)
###################################################################
PROJECT =Example-Project##mkdigitals ask for project name
TOP_LEVEL_ENTITY = ####mkdigitals ask for the top level entity
ASSIGNMENT_FILES = $(PROJECT).qpf $(PROJECT).qsf
SOURCES_FILE = ./sourcelist.txt
# Define the output bitstream file
BITSTREAM := $(PROJECT).sof
###################################################################
# Part, Family, Boardfile DE1 or DE2
## FAMILY COMES FROM THE CALLING MAKEFILE
## PART COMES FROM THE CALLING MAKEFILE
## BOARDFILE COMES FROM THE CALLING MAKEFILE ## mkdigitals ask if there is a board file
###################################################################
###################################################################
# Setup your sources here
SRCS = $(shell cat $(SOURCES_FILE))
###################################################################
# Main Targets
#
# all: build everything
# clean: remove output files and database
# program: program your device with the compiled design
###################################################################
all: create_project \
write_settings \
write_loc_constraints \
write_io_standard_constraints \
write_ip_files \
write_search_paths \
write_source_files \
write_timing_constraints \
generate_ips \
sta
clean:
$(RM) -rf *.rpt *.chg smart.log *.htm *.eqn *.pin *.sof *.pof db incremental_db *.summary *.smsg *.jdi $(ASSIGNMENT_FILES)
# Capture the Quartus version
QUARTUS_VERSION := $(shell quartus_sh --version | grep -oP 'Version \K[0-9]+\.[0-9]+')
CURRENT_DATETIME := $(shell date +"%H:%M:%S %B %d, %Y")
create_project:
@echo "Creating or regenerating $(PROJECT).qpf"
@rm -f "$(PROJECT).qpf"
@touch "$(PROJECT).qpf"
@echo "QUARTUS_VERSION = \"$(QUARTUS_VERSION)\"" >> "$(PROJECT).qpf"
@echo "DATE = \"$(CURRENT_DATETIME)\"" >> "$(PROJECT).qpf"
@echo "PROJECT_REVISION = \"$(PROJECT)\"" >> "$(PROJECT).qpf"
@echo "Creating or regenerating $(PROJECT).qsf"
@rm -f "$(PROJECT).qsf"
@touch "$(PROJECT).qsf"
$(QSYS_PATH)qsys-script --script=ip/interconnect.tcl
$(QSYS_PATH)qsys-generate interconnect.qsys --quartus_project=ip/interconnect --synthesis
rm -f interconnect/*.v
rm -f interconnect/*.vhd
rm -f interconnect/synth/*.v
write_settings:
@echo "Reading from settings.csv and writing to $(PROJECT).qsf with modifications"
@while IFS= read -r line; do \
echo "set_global_assignment -name $$line" >> "$(PROJECT).qsf"; \
done < settings.csv
write_loc_constraints:
@echo "Reading from loc_constraints.csv and writing to $(PROJECT).qsf with modifications"
@while IFS= read -r line; do \
echo "set_location_assignment $$line" >> "$(PROJECT).qsf"; \
done < loc_constraints.csv
write_io_standard_constraints:
@echo "Reading from io_standard_constraints.csv and writing to $(PROJECT).qsf with modifications"
@while IFS= read -r line; do \
echo "set_instance_assignment -name $$line" >> "$(PROJECT).qsf"; \
done < io_standard_constraints.csv
write_ip_files:
@echo "Reading from ip_files.csv and writing to $(PROJECT).qsf with modifications"
@while IFS= read -r line; do \
echo "set_global_assignment -name IP_FILE $$line" >> "$(PROJECT).qsf"; \
done < ip_files.csv
write_search_paths:
@echo "Reading from search_paths.csv and writing to $(PROJECT).qsf with modifications"
@while IFS= read -r line; do \
echo "set_global_assignment -name SEARCH_PATH $$line" >> "$(PROJECT).qsf"; \
done < search_paths.csv
write_source_files:
@find ./interconnect -type f -name "*.v" -o -name "*.sv" -o -name "*.svh" >> $(SOURCES_FILE)
@echo $(var)
@echo >> $(SOURCES_FILE)
@echo "Reading from $(SOURCES_FILE) and writing to $(PROJECT).qsf with modifications"
@while IFS= read -r line; do \
for word in $$line; do \
if echo "$$word" | grep -q "\.vhd$$"; then \
echo "set_global_assignment -name VHDL_FILE $$word" >> "$(PROJECT).qsf"; \
elif echo "$$word" | grep -q "\.v$$"; then \
echo "set_global_assignment -name VERILOG_FILE $$word" >> "$(PROJECT).qsf"; \
elif echo "$$word" | grep -q "\.sv$$"; then \
echo "set_global_assignment -name SYSTEMVERILOG_FILE $$word" >> "$(PROJECT).qsf"; \
elif echo "$$word" | grep -q "\.svh$$"; then \
echo "set_global_assignment -name SYSTEMVERILOG_FILE $$word" >> "$(PROJECT).qsf"; \
else \
echo "set_global_assignment -name SOURCE_FILE $$word" >> "$(PROJECT).qsf"; \
fi; \
done; \
done < $(SOURCES_FILE)
write_timing_constraints:
@echo "Generating constraints file list"
find ./constraints -type f -name "*.sdc" -exec realpath {} \; | sed 's|^|set_global_assignment -name SDC_FILE |' >> "$(PROJECT).qsf"
generate_ips:
$(QSYS_PATH)qsys-script --script=ip/test_mm_ccb_0.tcl
$(QSYS_PATH)qsys-script --script=ip/cva6_intel_jtag_uart_0.tcl
$(QSYS_PATH)qsys-script --script=ip/ed_synth_emif_fm_0.tcl
$(QSYS_PATH)qsys-script --script=ip/emif_cal.tcl
$(QSYS_PATH)qsys-script --script=ip/iddr_intel.tcl
$(QSYS_PATH)qsys-script --script=ip/io_pll.tcl
$(QSYS_PATH)qsys-script --script=ip/iobuf.tcl
$(QSYS_PATH)qsys-script --script=ip/oddr_intel.tcl
$(QSYS_PATH)qsys-script --script=ip/vJTAG.tcl
$(QUARTUS_PATH)quartus_ipgenerate --generate_project_ip_files $(PROJECT)
map:
@echo "Running Quartus Map"
$(QUARTUS_PATH)quartus_syn $(PROJECT)
fit: map
@echo "Running Quartus Fit"
$(QUARTUS_PATH)quartus_fit $(PROJECT)
asm: fit
@echo "Running Quartus Assembly"
$(QUARTUS_PATH)quartus_asm $(PROJECT)
sta: asm
@echo "Running Quartus Timing Analysis"
$(QUARTUS_PATH)quartus_sta $(PROJECT) --do_report_timing
clean:
@echo "Cleaning project files"
rm -f $(PROJECT).qsf $(PROJECT).qpf $(PROJECT).map.rpt $(PROJECT).fit.rpt $(PROJECT).asm.rpt $(PROJECT).sta.rpt
rm -f interconnect.qsys*
rm -f *.backup
rm -f *.hex
rm -f *.txt
rm -f *.ip
rm -f ip/board.info
rm -f ip/*.qpf
rm -f ip/*.qsf
rm -rf ip/dni
rm -rf ip/.qsys_edit
rm -rf ip/qdb
rm -rf output_files
rm -rf db incremental_db
rm -rf qdb
rm -rf tmp-clearbox
rm -rf intel
rm -rf dni
rm -rf interconnect
rm -rf ip/interconnect
rm -rf cva6_intel_jtag_uart_0
rm -rf ed_synth_emif_fm_0
rm -rf emif_cal
rm -rf iddr_intel
rm -rf oddr_intel
rm -rf test_mm_ccb_0
rm -rf vJTAG
rm -rf interconnect
rm -rf io_pll
rm -rf iobuf
$(QUARTUS_PATH)quartus_ipgenerate --clean $(PROJECT)
.PHONY: all write_search_paths write_source_files map fit asm sta clean

View file

@ -0,0 +1,47 @@
# * Copyright 2024 Thales AVS
# * Copyright 2024 PlanV Technologies
# * Copyright and related rights are licensed under the Solderpad Hardware
# * License, Version 0.51 (the “License”); you may not use this file except in
# * compliance with the License. You may obtain a copy of the License at
# * http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
# * or agreed to in writing, software, hardware and materials distributed under
# * this License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR
# * CONDITIONS OF ANY KIND, either express or implied. See the License for the
# * specific language governing permissions and limitations under the License.
# *
# * Author: Nicolas Levasseur, Thales AVS
# * Additional contributions by Angela Gonzalez, PlanV Technologies
# * Date: 8.11.2024
# * Description: Configuration file for openocd connection
# *
# */
adapter driver aji_client
if { [info exists CHIPNAME] } {
set _CHIPNAME $CHIPNAME
} else {
set _CHIPNAME agilex7
}
jtag newtap $_CHIPNAME.fpga tap -irlen 10 -expected-id 0xC341A0DD
#0xC341A0DD
# VJTAG ID :
# -------------------------------------------------------
# | 31 - 27 | 26 - 19 | 18 - 8 | 7 - 0 |
# |-----------------------------------------------------|
# | Node Version | Node ID | Node mfg_id | Node_inst_id |
# -------------------------------------------------------
# Info : node 0 idcode=00406E00 position_n=0 CVA6 core #0
vjtag create $_CHIPNAME.fpga.tap.cva6.0 -chain-position $_CHIPNAME.fpga.tap -expected-id 0x00406E00
target create $_CHIPNAME.cva6.0 riscv -chain-position $_CHIPNAME.fpga.tap.cva6.0 -coreid 0
scan_chain
init
halt
echo "Ready for Remote Connections"

View file

@ -0,0 +1,7 @@
set_false_path -from [get_clocks {inst_ddr4|emif_fm_0_core_usr_clk}] -to [get_clocks {clocks|iopll_0_outclk0}]
set_false_path -from [get_clocks {clocks|iopll_0_outclk0}] -to [get_clocks {inst_ddr4|emif_fm_0_core_usr_clk}]
set_false_path -from [get_clocks {clocks|iopll_0_outclk0}] -to [get_clocks {clocks|iopll_0_refclk}]
set_false_path -from [get_clocks {clocks|iopll_0_refclk}] -to [get_clocks {clocks|iopll_0_outclk0}]
set_disable_timing [get_ports led[*]]
set_false_path -hold -through [get_pins -hierarchical "*async*"]
set_max_delay -through [get_pins -hierarchical "*async*"] 5.000

View file

@ -0,0 +1,7 @@
IO_STANDARD "1.2 V" -to cpu_resetn -entity cva6_altera
IO_STANDARD "TRUE DIFFERENTIAL SIGNALING" -to pll_ref_clk_p -entity cva6_altera
IO_STANDARD "TRUE DIFFERENTIAL SIGNALING" -to clk_ddr4_ch0_p -entity cva6_altera
IO_STANDARD "1.2 V" -to led[3] -entity cva6_altera
IO_STANDARD "1.2 V" -to led[2] -entity cva6_altera
IO_STANDARD "1.2 V" -to led[1] -entity cva6_altera
IO_STANDARD "1.2 V" -to led[0] -entity cva6_altera
Can't render this file because it contains an unexpected character in line 1 and column 13.

View file

@ -0,0 +1,70 @@
# Quartus Pro License required to use this file
package require -exact qsys 24.1
# create the system "cva6_intel_jtag_uart_0"
proc do_create_cva6_intel_jtag_uart_0 {} {
# create the system
create_system cva6_intel_jtag_uart_0
set_project_property BOARD {default}
set_project_property DEVICE {AGFB014R24B2E2V}
set_project_property DEVICE_FAMILY {Agilex 7}
set_project_property HIDE_FROM_IP_CATALOG {false}
set_use_testbench_naming_pattern 0 {}
# add HDL parameters
# add the components
add_instance jtag_uart_0 altera_avalon_jtag_uart 19.2.4
set_instance_parameter_value jtag_uart_0 {allowMultipleConnections} {0}
set_instance_parameter_value jtag_uart_0 {hubInstanceID} {0}
set_instance_parameter_value jtag_uart_0 {readBufferDepth} {64}
set_instance_parameter_value jtag_uart_0 {readIRQThreshold} {8}
set_instance_parameter_value jtag_uart_0 {simInputCharacterStream} {}
set_instance_parameter_value jtag_uart_0 {simInteractiveOptions} {NO_INTERACTIVE_WINDOWS}
set_instance_parameter_value jtag_uart_0 {useRegistersForReadBuffer} {0}
set_instance_parameter_value jtag_uart_0 {useRegistersForWriteBuffer} {0}
set_instance_parameter_value jtag_uart_0 {useRelativePathForSimFile} {0}
set_instance_parameter_value jtag_uart_0 {writeBufferDepth} {64}
set_instance_parameter_value jtag_uart_0 {writeIRQThreshold} {8}
set_instance_property jtag_uart_0 AUTO_EXPORT true
# add wirelevel expressions
# preserve ports for debug
# add the exports
set_interface_property clk EXPORT_OF jtag_uart_0.clk
set_interface_property reset EXPORT_OF jtag_uart_0.reset
set_interface_property avalon_jtag_slave EXPORT_OF jtag_uart_0.avalon_jtag_slave
set_interface_property irq EXPORT_OF jtag_uart_0.irq
# set values for exposed HDL parameters
# set the the module properties
set_module_property BONUS_DATA {<?xml version="1.0" encoding="UTF-8"?>
<bonusData>
<element __value="jtag_uart_0">
<datum __value="_sortIndex" value="0" type="int" />
</element>
</bonusData>
}
set_module_property FILE {cva6_intel_jtag_uart_0.ip}
set_module_property GENERATION_ID {0x00000000}
set_module_property NAME {cva6_intel_jtag_uart_0}
# save the system
sync_sysinfo_parameters
save_system cva6_intel_jtag_uart_0
}
proc do_set_exported_interface_sysinfo_parameters {} {
load_system cva6_intel_jtag_uart_0.ip
set_exported_interface_sysinfo_parameter_value clk clock_rate {300000000}
save_system cva6_intel_jtag_uart_0.ip
}
# create all the systems, from bottom up
do_create_cva6_intel_jtag_uart_0
# set system info parameters on exported interface, from bottom up
do_set_exported_interface_sysinfo_parameters

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,66 @@
# Quartus Pro License required to use this file
package require -exact qsys 24.1
# create the system "emif_cal"
proc do_create_emif_cal {} {
# create the system
create_system emif_cal
set_project_property BOARD {default}
set_project_property DEVICE {AGFB014R24B2E2V}
set_project_property DEVICE_FAMILY {Agilex 7}
set_project_property HIDE_FROM_IP_CATALOG {true}
set_use_testbench_naming_pattern 0 {}
# add HDL parameters
# add the components
add_instance emif_cal_0 altera_emif_cal 2.7.4
set_instance_parameter_value emif_cal_0 {AXM_ID_NUM} {0}
set_instance_parameter_value emif_cal_0 {DIAG_ENABLE_JTAG_UART} {0}
set_instance_parameter_value emif_cal_0 {DIAG_EXPORT_SEQ_AVALON_SLAVE} {CAL_DEBUG_EXPORT_MODE_DISABLED}
set_instance_parameter_value emif_cal_0 {DIAG_EXPORT_VJI} {0}
set_instance_parameter_value emif_cal_0 {DIAG_EXTRA_CONFIGS} {}
set_instance_parameter_value emif_cal_0 {DIAG_SIM_CAL_MODE_ENUM} {SIM_CAL_MODE_SKIP}
set_instance_parameter_value emif_cal_0 {DIAG_SIM_VERBOSE} {0}
set_instance_parameter_value emif_cal_0 {DIAG_SYNTH_FOR_SIM} {0}
set_instance_parameter_value emif_cal_0 {ENABLE_DDRT} {0}
set_instance_parameter_value emif_cal_0 {NUM_CALBUS_INTERFACE} {1}
set_instance_parameter_value emif_cal_0 {PHY_DDRT_EXPORT_CLK_STP_IF} {0}
set_instance_parameter_value emif_cal_0 {SHORT_QSYS_INTERFACE_NAMES} {1}
set_instance_property emif_cal_0 AUTO_EXPORT true
# add wirelevel expressions
# preserve ports for debug
# add the exports
set_interface_property emif_calbus_0 EXPORT_OF emif_cal_0.emif_calbus_0
set_interface_property emif_calbus_clk EXPORT_OF emif_cal_0.emif_calbus_clk
# set values for exposed HDL parameters
# set the the module properties
set_module_property BONUS_DATA {<?xml version="1.0" encoding="UTF-8"?>
<bonusData>
<element __value="emif_cal_0">
<datum __value="_sortIndex" value="0" type="int" />
</element>
</bonusData>
}
set_module_property FILE {emif_cal.ip}
set_module_property GENERATION_ID {0x00000000}
set_module_property NAME {emif_cal}
# save the system
sync_sysinfo_parameters
save_system emif_cal
}
proc do_set_exported_interface_sysinfo_parameters {} {
}
# create all the systems, from bottom up
do_create_emif_cal
# set system info parameters on exported interface, from bottom up
do_set_exported_interface_sysinfo_parameters

View file

@ -0,0 +1,74 @@
# Quartus Pro License required to use this file
package require -exact qsys 24.1
# create the system "iddr_intel"
proc do_create_iddr_intel {} {
# create the system
create_system iddr_intel
set_project_property BOARD {default}
set_project_property DEVICE {AGFB014R24B2E2V}
set_project_property DEVICE_FAMILY {Agilex 7}
set_project_property HIDE_FROM_IP_CATALOG {true}
set_use_testbench_naming_pattern 0 {}
# add HDL parameters
# add the components
add_instance gpio_0 altera_gpio 22.1.0
set_instance_parameter_value gpio_0 {EXT_DRIVER_PARAM} {0}
set_instance_parameter_value gpio_0 {GENERATE_SDC_FILE} {0}
set_instance_parameter_value gpio_0 {IP_MIGRATE_PORT_MAP_FILE} {altddio_bidir_port_map.csv}
set_instance_parameter_value gpio_0 {PIN_TYPE_GUI} {Input}
set_instance_parameter_value gpio_0 {SIZE} {1}
set_instance_parameter_value gpio_0 {gui_areset_mode} {None}
set_instance_parameter_value gpio_0 {gui_bus_hold} {0}
set_instance_parameter_value gpio_0 {gui_ddio_with_delay} {0}
set_instance_parameter_value gpio_0 {gui_diff_buff} {0}
set_instance_parameter_value gpio_0 {gui_enable_cke} {0}
set_instance_parameter_value gpio_0 {gui_enable_migratable_port_names} {0}
set_instance_parameter_value gpio_0 {gui_enable_termination_ports} {0}
set_instance_parameter_value gpio_0 {gui_hr_logic} {0}
set_instance_parameter_value gpio_0 {gui_io_reg_mode} {DDIO}
set_instance_parameter_value gpio_0 {gui_open_drain} {0}
set_instance_parameter_value gpio_0 {gui_pseudo_diff} {0}
set_instance_parameter_value gpio_0 {gui_separate_io_clks} {0}
set_instance_parameter_value gpio_0 {gui_sreset_mode} {None}
set_instance_parameter_value gpio_0 {gui_use_oe} {0}
set_instance_property gpio_0 AUTO_EXPORT true
# add wirelevel expressions
# preserve ports for debug
# add the exports
set_interface_property ck EXPORT_OF gpio_0.ck
set_interface_property dout EXPORT_OF gpio_0.dout
set_interface_property pad_in EXPORT_OF gpio_0.pad_in
# set values for exposed HDL parameters
# set the the module properties
set_module_property BONUS_DATA {<?xml version="1.0" encoding="UTF-8"?>
<bonusData>
<element __value="gpio_0">
<datum __value="_sortIndex" value="0" type="int" />
</element>
</bonusData>
}
set_module_property FILE {iddr_intel.ip}
set_module_property GENERATION_ID {0x00000000}
set_module_property NAME {iddr_intel}
# save the system
sync_sysinfo_parameters
save_system iddr_intel
}
proc do_set_exported_interface_sysinfo_parameters {} {
}
# create all the systems, from bottom up
do_create_iddr_intel
# set system info parameters on exported interface, from bottom up
do_set_exported_interface_sysinfo_parameters

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,312 @@
# Quartus Pro License required to use this file
package require -exact qsys 24.1
# create the system "io_pll"
proc do_create_io_pll {} {
# create the system
create_system io_pll
set_project_property BOARD {default}
set_project_property DEVICE {AGFB014R24B2E2V}
set_project_property DEVICE_FAMILY {Agilex 7}
set_project_property HIDE_FROM_IP_CATALOG {true}
set_use_testbench_naming_pattern 0 {}
# add HDL parameters
# add the components
add_instance iopll_0 altera_iopll 19.3.1
set_instance_parameter_value iopll_0 {gui_active_clk} {0}
set_instance_parameter_value iopll_0 {gui_c_cnt_in_src0} {c_m_cnt_in_src_ph_mux_clk}
set_instance_parameter_value iopll_0 {gui_c_cnt_in_src1} {c_m_cnt_in_src_ph_mux_clk}
set_instance_parameter_value iopll_0 {gui_c_cnt_in_src2} {c_m_cnt_in_src_ph_mux_clk}
set_instance_parameter_value iopll_0 {gui_c_cnt_in_src3} {c_m_cnt_in_src_ph_mux_clk}
set_instance_parameter_value iopll_0 {gui_c_cnt_in_src4} {c_m_cnt_in_src_ph_mux_clk}
set_instance_parameter_value iopll_0 {gui_c_cnt_in_src5} {c_m_cnt_in_src_ph_mux_clk}
set_instance_parameter_value iopll_0 {gui_c_cnt_in_src6} {c_m_cnt_in_src_ph_mux_clk}
set_instance_parameter_value iopll_0 {gui_c_cnt_in_src7} {c_m_cnt_in_src_ph_mux_clk}
set_instance_parameter_value iopll_0 {gui_c_cnt_in_src8} {c_m_cnt_in_src_ph_mux_clk}
set_instance_parameter_value iopll_0 {gui_cal_code_hex_file} {iossm.hex}
set_instance_parameter_value iopll_0 {gui_cal_converge} {0}
set_instance_parameter_value iopll_0 {gui_cal_error} {cal_clean}
set_instance_parameter_value iopll_0 {gui_cascade_counter0} {0}
set_instance_parameter_value iopll_0 {gui_cascade_counter1} {0}
set_instance_parameter_value iopll_0 {gui_cascade_counter10} {0}
set_instance_parameter_value iopll_0 {gui_cascade_counter11} {0}
set_instance_parameter_value iopll_0 {gui_cascade_counter12} {0}
set_instance_parameter_value iopll_0 {gui_cascade_counter13} {0}
set_instance_parameter_value iopll_0 {gui_cascade_counter14} {0}
set_instance_parameter_value iopll_0 {gui_cascade_counter15} {0}
set_instance_parameter_value iopll_0 {gui_cascade_counter16} {0}
set_instance_parameter_value iopll_0 {gui_cascade_counter17} {0}
set_instance_parameter_value iopll_0 {gui_cascade_counter2} {0}
set_instance_parameter_value iopll_0 {gui_cascade_counter3} {0}
set_instance_parameter_value iopll_0 {gui_cascade_counter4} {0}
set_instance_parameter_value iopll_0 {gui_cascade_counter5} {0}
set_instance_parameter_value iopll_0 {gui_cascade_counter6} {0}
set_instance_parameter_value iopll_0 {gui_cascade_counter7} {0}
set_instance_parameter_value iopll_0 {gui_cascade_counter8} {0}
set_instance_parameter_value iopll_0 {gui_cascade_counter9} {0}
set_instance_parameter_value iopll_0 {gui_cascade_outclk_index} {0}
set_instance_parameter_value iopll_0 {gui_clk_bad} {0}
set_instance_parameter_value iopll_0 {gui_clock_name_global} {0}
set_instance_parameter_value iopll_0 {gui_clock_name_string0} {outclk0}
set_instance_parameter_value iopll_0 {gui_clock_name_string1} {outclk1}
set_instance_parameter_value iopll_0 {gui_clock_name_string10} {outclk10}
set_instance_parameter_value iopll_0 {gui_clock_name_string11} {outclk11}
set_instance_parameter_value iopll_0 {gui_clock_name_string12} {outclk12}
set_instance_parameter_value iopll_0 {gui_clock_name_string13} {outclk13}
set_instance_parameter_value iopll_0 {gui_clock_name_string14} {outclk14}
set_instance_parameter_value iopll_0 {gui_clock_name_string15} {outclk15}
set_instance_parameter_value iopll_0 {gui_clock_name_string16} {outclk16}
set_instance_parameter_value iopll_0 {gui_clock_name_string17} {outclk17}
set_instance_parameter_value iopll_0 {gui_clock_name_string2} {outclk2}
set_instance_parameter_value iopll_0 {gui_clock_name_string3} {outclk3}
set_instance_parameter_value iopll_0 {gui_clock_name_string4} {outclk4}
set_instance_parameter_value iopll_0 {gui_clock_name_string5} {outclk5}
set_instance_parameter_value iopll_0 {gui_clock_name_string6} {outclk6}
set_instance_parameter_value iopll_0 {gui_clock_name_string7} {outclk7}
set_instance_parameter_value iopll_0 {gui_clock_name_string8} {outclk8}
set_instance_parameter_value iopll_0 {gui_clock_name_string9} {outclk9}
set_instance_parameter_value iopll_0 {gui_clock_to_compensate} {0}
set_instance_parameter_value iopll_0 {gui_debug_mode} {0}
set_instance_parameter_value iopll_0 {gui_divide_factor_c0} {1}
set_instance_parameter_value iopll_0 {gui_divide_factor_c1} {25}
set_instance_parameter_value iopll_0 {gui_divide_factor_c10} {6}
set_instance_parameter_value iopll_0 {gui_divide_factor_c11} {6}
set_instance_parameter_value iopll_0 {gui_divide_factor_c12} {6}
set_instance_parameter_value iopll_0 {gui_divide_factor_c13} {6}
set_instance_parameter_value iopll_0 {gui_divide_factor_c14} {6}
set_instance_parameter_value iopll_0 {gui_divide_factor_c15} {6}
set_instance_parameter_value iopll_0 {gui_divide_factor_c16} {6}
set_instance_parameter_value iopll_0 {gui_divide_factor_c17} {6}
set_instance_parameter_value iopll_0 {gui_divide_factor_c2} {25}
set_instance_parameter_value iopll_0 {gui_divide_factor_c3} {6}
set_instance_parameter_value iopll_0 {gui_divide_factor_c4} {6}
set_instance_parameter_value iopll_0 {gui_divide_factor_c5} {6}
set_instance_parameter_value iopll_0 {gui_divide_factor_c6} {6}
set_instance_parameter_value iopll_0 {gui_divide_factor_c7} {6}
set_instance_parameter_value iopll_0 {gui_divide_factor_c8} {6}
set_instance_parameter_value iopll_0 {gui_divide_factor_c9} {6}
set_instance_parameter_value iopll_0 {gui_divide_factor_n} {6}
set_instance_parameter_value iopll_0 {gui_dps_cntr} {C0}
set_instance_parameter_value iopll_0 {gui_dps_dir} {Positive}
set_instance_parameter_value iopll_0 {gui_dps_num} {1}
set_instance_parameter_value iopll_0 {gui_dsm_out_sel} {1st_order}
set_instance_parameter_value iopll_0 {gui_duty_cycle0} {50.0}
set_instance_parameter_value iopll_0 {gui_duty_cycle1} {50.0}
set_instance_parameter_value iopll_0 {gui_duty_cycle10} {50.0}
set_instance_parameter_value iopll_0 {gui_duty_cycle11} {50.0}
set_instance_parameter_value iopll_0 {gui_duty_cycle12} {50.0}
set_instance_parameter_value iopll_0 {gui_duty_cycle13} {50.0}
set_instance_parameter_value iopll_0 {gui_duty_cycle14} {50.0}
set_instance_parameter_value iopll_0 {gui_duty_cycle15} {50.0}
set_instance_parameter_value iopll_0 {gui_duty_cycle16} {50.0}
set_instance_parameter_value iopll_0 {gui_duty_cycle17} {50.0}
set_instance_parameter_value iopll_0 {gui_duty_cycle2} {50.0}
set_instance_parameter_value iopll_0 {gui_duty_cycle3} {50.0}
set_instance_parameter_value iopll_0 {gui_duty_cycle4} {50.0}
set_instance_parameter_value iopll_0 {gui_duty_cycle5} {50.0}
set_instance_parameter_value iopll_0 {gui_duty_cycle6} {50.0}
set_instance_parameter_value iopll_0 {gui_duty_cycle7} {50.0}
set_instance_parameter_value iopll_0 {gui_duty_cycle8} {50.0}
set_instance_parameter_value iopll_0 {gui_duty_cycle9} {50.0}
set_instance_parameter_value iopll_0 {gui_en_adv_params} {0}
set_instance_parameter_value iopll_0 {gui_en_dps_ports} {0}
set_instance_parameter_value iopll_0 {gui_en_extclkout_ports} {0}
set_instance_parameter_value iopll_0 {gui_en_iossm_reconf} {0}
set_instance_parameter_value iopll_0 {gui_en_lvds_ports} {Disabled}
set_instance_parameter_value iopll_0 {gui_en_periphery_ports} {0}
set_instance_parameter_value iopll_0 {gui_en_phout_ports} {0}
set_instance_parameter_value iopll_0 {gui_en_reconf} {0}
set_instance_parameter_value iopll_0 {gui_enable_cascade_in} {0}
set_instance_parameter_value iopll_0 {gui_enable_cascade_out} {0}
set_instance_parameter_value iopll_0 {gui_enable_mif_dps} {0}
set_instance_parameter_value iopll_0 {gui_enable_output_counter_cascading} {0}
set_instance_parameter_value iopll_0 {gui_enable_permit_cal} {0}
set_instance_parameter_value iopll_0 {gui_enable_upstream_out_clk} {0}
set_instance_parameter_value iopll_0 {gui_existing_mif_file_path} {~/pll.mif}
set_instance_parameter_value iopll_0 {gui_extclkout_0_source} {C0}
set_instance_parameter_value iopll_0 {gui_extclkout_1_source} {C0}
set_instance_parameter_value iopll_0 {gui_extclkout_source} {C0}
set_instance_parameter_value iopll_0 {gui_feedback_clock} {Global Clock}
set_instance_parameter_value iopll_0 {gui_fix_vco_frequency} {0}
set_instance_parameter_value iopll_0 {gui_fixed_vco_frequency} {600.0}
set_instance_parameter_value iopll_0 {gui_fixed_vco_frequency_ps} {1667.0}
set_instance_parameter_value iopll_0 {gui_frac_multiply_factor} {1.0}
set_instance_parameter_value iopll_0 {gui_fractional_cout} {32}
set_instance_parameter_value iopll_0 {gui_include_iossm} {0}
set_instance_parameter_value iopll_0 {gui_location_type} {I/O Bank}
set_instance_parameter_value iopll_0 {gui_lock_setting} {Low Lock Time}
set_instance_parameter_value iopll_0 {gui_mif_config_name} {unnamed}
set_instance_parameter_value iopll_0 {gui_mif_gen_options} {Generate New MIF File}
set_instance_parameter_value iopll_0 {gui_multiply_factor} {25}
set_instance_parameter_value iopll_0 {gui_new_mif_file_path} {~/pll.mif}
set_instance_parameter_value iopll_0 {gui_number_of_clocks} {5}
set_instance_parameter_value iopll_0 {gui_operation_mode} {direct}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency0} {200.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency1} {125.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency10} {100.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency11} {100.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency12} {100.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency13} {100.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency14} {100.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency15} {100.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency16} {100.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency17} {100.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency2} {200.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency3} {125.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency4} {100.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency5} {100.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency6} {100.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency7} {100.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency8} {100.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency9} {100.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency_ps0} {5000.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency_ps1} {8000.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency_ps10} {10000.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency_ps11} {10000.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency_ps12} {10000.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency_ps13} {10000.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency_ps14} {10000.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency_ps15} {10000.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency_ps16} {10000.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency_ps17} {10000.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency_ps2} {5000.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency_ps3} {8000.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency_ps4} {10000.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency_ps5} {10000.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency_ps6} {10000.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency_ps7} {10000.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency_ps8} {10000.0}
set_instance_parameter_value iopll_0 {gui_output_clock_frequency_ps9} {10000.0}
set_instance_parameter_value iopll_0 {gui_parameter_table_hex_file} {seq_params_sim.hex}
set_instance_parameter_value iopll_0 {gui_phase_shift0} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift1} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift10} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift11} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift12} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift13} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift14} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift15} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift16} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift17} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift2} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift3} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift4} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift5} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift6} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift7} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift8} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift9} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift_deg0} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift_deg1} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift_deg10} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift_deg11} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift_deg12} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift_deg13} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift_deg14} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift_deg15} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift_deg16} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift_deg17} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift_deg2} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift_deg3} {90.0}
set_instance_parameter_value iopll_0 {gui_phase_shift_deg4} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift_deg5} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift_deg6} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift_deg7} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift_deg8} {0.0}
set_instance_parameter_value iopll_0 {gui_phase_shift_deg9} {0.0}
set_instance_parameter_value iopll_0 {gui_phout_division} {1}
set_instance_parameter_value iopll_0 {gui_pll_auto_reset} {0}
set_instance_parameter_value iopll_0 {gui_pll_bandwidth_preset} {Medium}
set_instance_parameter_value iopll_0 {gui_pll_cal_done} {0}
set_instance_parameter_value iopll_0 {gui_pll_cascading_mode} {adjpllin}
set_instance_parameter_value iopll_0 {gui_pll_freqcal_en} {1}
set_instance_parameter_value iopll_0 {gui_pll_freqcal_req_flag} {1}
set_instance_parameter_value iopll_0 {gui_pll_m_cnt_in_src} {c_m_cnt_in_src_ph_mux_clk}
set_instance_parameter_value iopll_0 {gui_pll_mode} {Integer-N PLL}
set_instance_parameter_value iopll_0 {gui_pll_tclk_mux_en} {0}
set_instance_parameter_value iopll_0 {gui_pll_tclk_sel} {pll_tclk_m_src}
set_instance_parameter_value iopll_0 {gui_pll_type} {S10_Simple}
set_instance_parameter_value iopll_0 {gui_pll_vco_freq_band_0} {pll_freq_clk0_band18}
set_instance_parameter_value iopll_0 {gui_pll_vco_freq_band_1} {pll_freq_clk1_band18}
set_instance_parameter_value iopll_0 {gui_prot_mode} {UNUSED}
set_instance_parameter_value iopll_0 {gui_ps_units0} {ps}
set_instance_parameter_value iopll_0 {gui_ps_units1} {ps}
set_instance_parameter_value iopll_0 {gui_ps_units10} {ps}
set_instance_parameter_value iopll_0 {gui_ps_units11} {ps}
set_instance_parameter_value iopll_0 {gui_ps_units12} {ps}
set_instance_parameter_value iopll_0 {gui_ps_units13} {ps}
set_instance_parameter_value iopll_0 {gui_ps_units14} {ps}
set_instance_parameter_value iopll_0 {gui_ps_units15} {ps}
set_instance_parameter_value iopll_0 {gui_ps_units16} {ps}
set_instance_parameter_value iopll_0 {gui_ps_units17} {ps}
set_instance_parameter_value iopll_0 {gui_ps_units2} {ps}
set_instance_parameter_value iopll_0 {gui_ps_units3} {degrees}
set_instance_parameter_value iopll_0 {gui_ps_units4} {ps}
set_instance_parameter_value iopll_0 {gui_ps_units5} {ps}
set_instance_parameter_value iopll_0 {gui_ps_units6} {ps}
set_instance_parameter_value iopll_0 {gui_ps_units7} {ps}
set_instance_parameter_value iopll_0 {gui_ps_units8} {ps}
set_instance_parameter_value iopll_0 {gui_ps_units9} {ps}
set_instance_parameter_value iopll_0 {gui_refclk1_frequency} {100.0}
set_instance_parameter_value iopll_0 {gui_refclk_might_change} {0}
set_instance_parameter_value iopll_0 {gui_refclk_switch} {0}
set_instance_parameter_value iopll_0 {gui_reference_clock_frequency} {100.0}
set_instance_parameter_value iopll_0 {gui_reference_clock_frequency_ps} {10000.0}
set_instance_parameter_value iopll_0 {gui_simulation_type} {0}
set_instance_parameter_value iopll_0 {gui_skip_sdc_generation} {0}
set_instance_parameter_value iopll_0 {gui_switchover_delay} {0}
set_instance_parameter_value iopll_0 {gui_switchover_mode} {Automatic Switchover}
set_instance_parameter_value iopll_0 {gui_use_NDFB_modes} {0}
set_instance_parameter_value iopll_0 {gui_use_coreclk} {1}
set_instance_parameter_value iopll_0 {gui_use_locked} {1}
set_instance_parameter_value iopll_0 {gui_use_logical} {0}
set_instance_parameter_value iopll_0 {gui_user_base_address} {0}
set_instance_parameter_value iopll_0 {gui_usr_device_speed_grade} {1}
set_instance_parameter_value iopll_0 {gui_vco_frequency} {1250.0}
set_instance_parameter_value iopll_0 {hp_qsys_scripting_mode} {0}
set_instance_parameter_value iopll_0 {system_info_device_iobank_rev} {}
set_instance_property iopll_0 AUTO_EXPORT true
# add wirelevel expressions
# preserve ports for debug
# add the exports
set_interface_property refclk EXPORT_OF iopll_0.refclk
set_interface_property locked EXPORT_OF iopll_0.locked
set_interface_property reset EXPORT_OF iopll_0.reset
set_interface_property outclk0 EXPORT_OF iopll_0.outclk0
set_interface_property outclk1 EXPORT_OF iopll_0.outclk1
set_interface_property outclk2 EXPORT_OF iopll_0.outclk2
set_interface_property outclk3 EXPORT_OF iopll_0.outclk3
set_interface_property outclk4 EXPORT_OF iopll_0.outclk4
# set values for exposed HDL parameters
# set the the module properties
set_module_property BONUS_DATA {<?xml version="1.0" encoding="UTF-8"?>
<bonusData>
<element __value="iopll_0">
<datum __value="_sortIndex" value="0" type="int" />
</element>
</bonusData>
}
set_module_property FILE {io_pll.ip}
set_module_property GENERATION_ID {0x00000000}
set_module_property NAME {io_pll}
# save the system
sync_sysinfo_parameters
save_system io_pll
}
proc do_set_exported_interface_sysinfo_parameters {} {
}
# create all the systems, from bottom up
do_create_io_pll
# set system info parameters on exported interface, from bottom up
do_set_exported_interface_sysinfo_parameters

View file

@ -0,0 +1,75 @@
# Quartus Pro License required to use this file
package require -exact qsys 24.1
# create the system "iobuf"
proc do_create_iobuf {} {
# create the system
create_system iobuf
set_project_property BOARD {default}
set_project_property DEVICE {AGFB014R24B2E2V}
set_project_property DEVICE_FAMILY {Agilex 7}
set_project_property HIDE_FROM_IP_CATALOG {true}
set_use_testbench_naming_pattern 0 {}
# add HDL parameters
# add the components
add_instance gpio_0 altera_gpio 22.1.0
set_instance_parameter_value gpio_0 {EXT_DRIVER_PARAM} {0}
set_instance_parameter_value gpio_0 {GENERATE_SDC_FILE} {0}
set_instance_parameter_value gpio_0 {IP_MIGRATE_PORT_MAP_FILE} {altddio_bidir_port_map.csv}
set_instance_parameter_value gpio_0 {PIN_TYPE_GUI} {Bidir}
set_instance_parameter_value gpio_0 {SIZE} {1}
set_instance_parameter_value gpio_0 {gui_areset_mode} {None}
set_instance_parameter_value gpio_0 {gui_bus_hold} {0}
set_instance_parameter_value gpio_0 {gui_ddio_with_delay} {0}
set_instance_parameter_value gpio_0 {gui_diff_buff} {0}
set_instance_parameter_value gpio_0 {gui_enable_cke} {0}
set_instance_parameter_value gpio_0 {gui_enable_migratable_port_names} {0}
set_instance_parameter_value gpio_0 {gui_enable_termination_ports} {0}
set_instance_parameter_value gpio_0 {gui_hr_logic} {0}
set_instance_parameter_value gpio_0 {gui_io_reg_mode} {none}
set_instance_parameter_value gpio_0 {gui_open_drain} {0}
set_instance_parameter_value gpio_0 {gui_pseudo_diff} {0}
set_instance_parameter_value gpio_0 {gui_separate_io_clks} {0}
set_instance_parameter_value gpio_0 {gui_sreset_mode} {None}
set_instance_parameter_value gpio_0 {gui_use_oe} {0}
set_instance_property gpio_0 AUTO_EXPORT true
# add wirelevel expressions
# preserve ports for debug
# add the exports
set_interface_property dout EXPORT_OF gpio_0.dout
set_interface_property din EXPORT_OF gpio_0.din
set_interface_property oe EXPORT_OF gpio_0.oe
set_interface_property pad_io EXPORT_OF gpio_0.pad_io
# set values for exposed HDL parameters
# set the the module properties
set_module_property BONUS_DATA {<?xml version="1.0" encoding="UTF-8"?>
<bonusData>
<element __value="gpio_0">
<datum __value="_sortIndex" value="0" type="int" />
</element>
</bonusData>
}
set_module_property FILE {iobuf.ip}
set_module_property GENERATION_ID {0x00000000}
set_module_property NAME {iobuf}
# save the system
sync_sysinfo_parameters
save_system iobuf
}
proc do_set_exported_interface_sysinfo_parameters {} {
}
# create all the systems, from bottom up
do_create_iobuf
# set system info parameters on exported interface, from bottom up
do_set_exported_interface_sysinfo_parameters

View file

@ -0,0 +1,74 @@
# Quartus Pro License required to use this file
package require -exact qsys 24.1
# create the system "oddr_intel"
proc do_create_oddr_intel {} {
# create the system
create_system oddr_intel
set_project_property BOARD {default}
set_project_property DEVICE {AGFB014R24B2E2V}
set_project_property DEVICE_FAMILY {Agilex 7}
set_project_property HIDE_FROM_IP_CATALOG {true}
set_use_testbench_naming_pattern 0 {}
# add HDL parameters
# add the components
add_instance gpio_0 altera_gpio 22.1.0
set_instance_parameter_value gpio_0 {EXT_DRIVER_PARAM} {0}
set_instance_parameter_value gpio_0 {GENERATE_SDC_FILE} {0}
set_instance_parameter_value gpio_0 {IP_MIGRATE_PORT_MAP_FILE} {altddio_bidir_port_map.csv}
set_instance_parameter_value gpio_0 {PIN_TYPE_GUI} {Output}
set_instance_parameter_value gpio_0 {SIZE} {1}
set_instance_parameter_value gpio_0 {gui_areset_mode} {None}
set_instance_parameter_value gpio_0 {gui_bus_hold} {0}
set_instance_parameter_value gpio_0 {gui_ddio_with_delay} {0}
set_instance_parameter_value gpio_0 {gui_diff_buff} {0}
set_instance_parameter_value gpio_0 {gui_enable_cke} {0}
set_instance_parameter_value gpio_0 {gui_enable_migratable_port_names} {0}
set_instance_parameter_value gpio_0 {gui_enable_termination_ports} {0}
set_instance_parameter_value gpio_0 {gui_hr_logic} {0}
set_instance_parameter_value gpio_0 {gui_io_reg_mode} {DDIO}
set_instance_parameter_value gpio_0 {gui_open_drain} {0}
set_instance_parameter_value gpio_0 {gui_pseudo_diff} {0}
set_instance_parameter_value gpio_0 {gui_separate_io_clks} {0}
set_instance_parameter_value gpio_0 {gui_sreset_mode} {None}
set_instance_parameter_value gpio_0 {gui_use_oe} {0}
set_instance_property gpio_0 AUTO_EXPORT true
# add wirelevel expressions
# preserve ports for debug
# add the exports
set_interface_property ck EXPORT_OF gpio_0.ck
set_interface_property din EXPORT_OF gpio_0.din
set_interface_property pad_out EXPORT_OF gpio_0.pad_out
# set values for exposed HDL parameters
# set the the module properties
set_module_property BONUS_DATA {<?xml version="1.0" encoding="UTF-8"?>
<bonusData>
<element __value="gpio_0">
<datum __value="_sortIndex" value="0" type="int" />
</element>
</bonusData>
}
set_module_property FILE {oddr_intel.ip}
set_module_property GENERATION_ID {0x00000000}
set_module_property NAME {oddr_intel}
# save the system
sync_sysinfo_parameters
save_system oddr_intel
}
proc do_set_exported_interface_sysinfo_parameters {} {
}
# create all the systems, from bottom up
do_create_oddr_intel
# set system info parameters on exported interface, from bottom up
do_set_exported_interface_sysinfo_parameters

View file

@ -0,0 +1,72 @@
# Quartus Pro License required to use this file
package require -exact qsys 24.1
# create the system "test_mm_ccb_0"
proc do_create_test_mm_ccb_0 {} {
# create the system
create_system test_mm_ccb_0
set_project_property BOARD {default}
set_project_property DEVICE {AGFB014R24B2E2V}
set_project_property DEVICE_FAMILY {Agilex 7}
set_project_property HIDE_FROM_IP_CATALOG {false}
set_use_testbench_naming_pattern 0 {}
# add HDL parameters
# add the components
add_instance mm_ccb_0 mm_ccb 19.2.1
set_instance_parameter_value mm_ccb_0 {ADDRESS_UNITS} {SYMBOLS}
set_instance_parameter_value mm_ccb_0 {ADDRESS_WIDTH} {27}
set_instance_parameter_value mm_ccb_0 {COMMAND_FIFO_DEPTH} {256}
set_instance_parameter_value mm_ccb_0 {DATA_WIDTH} {512}
set_instance_parameter_value mm_ccb_0 {MASTER_SYNC_DEPTH} {2}
set_instance_parameter_value mm_ccb_0 {MAX_BURST_SIZE} {128}
set_instance_parameter_value mm_ccb_0 {RESPONSE_FIFO_DEPTH} {256}
set_instance_parameter_value mm_ccb_0 {SLAVE_SYNC_DEPTH} {2}
set_instance_parameter_value mm_ccb_0 {SYMBOL_WIDTH} {8}
set_instance_parameter_value mm_ccb_0 {SYNC_RESET} {1}
set_instance_parameter_value mm_ccb_0 {USE_AUTO_ADDRESS_WIDTH} {0}
set_instance_property mm_ccb_0 AUTO_EXPORT true
# add wirelevel expressions
# preserve ports for debug
# add the exports
set_interface_property m0_clk EXPORT_OF mm_ccb_0.m0_clk
set_interface_property m0_reset EXPORT_OF mm_ccb_0.m0_reset
set_interface_property s0_clk EXPORT_OF mm_ccb_0.s0_clk
set_interface_property s0_reset EXPORT_OF mm_ccb_0.s0_reset
set_interface_property s0 EXPORT_OF mm_ccb_0.s0
set_interface_property m0 EXPORT_OF mm_ccb_0.m0
# set values for exposed HDL parameters
# set the the module properties
set_module_property BONUS_DATA {<?xml version="1.0" encoding="UTF-8"?>
<bonusData>
<element __value="mm_ccb_0">
<datum __value="_sortIndex" value="0" type="int" />
</element>
</bonusData>
}
set_module_property FILE {ip/test_mm_ccb_0.ip}
set_module_property GENERATION_ID {0x00000000}
set_module_property NAME {test_mm_ccb_0}
# save the system
sync_sysinfo_parameters
save_system test_mm_ccb_0
}
proc do_set_exported_interface_sysinfo_parameters {} {
load_system test_mm_ccb_0.ip
set_exported_interface_sysinfo_parameter_value m0 address_width {10}
save_system test_mm_ccb_0.ip
}
# create all the systems, from bottom up
do_create_test_mm_ccb_0
# set system info parameters on exported interface, from bottom up
do_set_exported_interface_sysinfo_parameters

View file

@ -0,0 +1,58 @@
# Quartus Pro License required to use this file
package require -exact qsys 24.1
# create the system "vJTAG"
proc do_create_vJTAG {} {
# create the system
create_system vJTAG
set_project_property BOARD {default}
set_project_property DEVICE {AGFB014R24B2E2V}
set_project_property DEVICE_FAMILY {Agilex 7}
set_project_property HIDE_FROM_IP_CATALOG {true}
set_use_testbench_naming_pattern 0 {}
# add HDL parameters
# add the components
add_instance virtual_jtag_0 altera_virtual_jtag 19.2.1
set_instance_parameter_value virtual_jtag_0 {CREATE_PRIMITIVE_JTAG_STATE_SIGNAL_PORTS} {1}
set_instance_parameter_value virtual_jtag_0 {gui_use_auto_index} {1}
set_instance_parameter_value virtual_jtag_0 {sld_instance_index} {0}
set_instance_parameter_value virtual_jtag_0 {sld_ir_width} {10}
set_instance_property virtual_jtag_0 AUTO_EXPORT true
# add wirelevel expressions
# preserve ports for debug
# add the exports
set_interface_property jtag EXPORT_OF virtual_jtag_0.jtag
set_interface_property tck EXPORT_OF virtual_jtag_0.tck
# set values for exposed HDL parameters
# set the the module properties
set_module_property BONUS_DATA {<?xml version="1.0" encoding="UTF-8"?>
<bonusData>
<element __value="virtual_jtag_0">
<datum __value="_sortIndex" value="0" type="int" />
</element>
</bonusData>
}
set_module_property FILE {vJTAG.ip}
set_module_property GENERATION_ID {0x00000000}
set_module_property NAME {vJTAG}
# save the system
sync_sysinfo_parameters
save_system vJTAG
}
proc do_set_exported_interface_sysinfo_parameters {} {
}
# create all the systems, from bottom up
do_create_vJTAG
# set system info parameters on exported interface, from bottom up
do_set_exported_interface_sysinfo_parameters

View file

@ -0,0 +1,9 @@
./test_mm_ccb_0.ip
./io_pll.ip
./iobuf.ip
./oddr_intel.ip
./iddr_intel.ip
./ed_synth_emif_fm_0.ip
./emif_cal.ip
./vJTAG.ip
./cva6_intel_jtag_uart_0.ip
1 ./test_mm_ccb_0.ip
2 ./io_pll.ip
3 ./iobuf.ip
4 ./oddr_intel.ip
5 ./iddr_intel.ip
6 ./ed_synth_emif_fm_0.ip
7 ./emif_cal.ip
8 ./vJTAG.ip
9 ./cva6_intel_jtag_uart_0.ip

View file

@ -0,0 +1,139 @@
PIN_A24 -to cpu_resetn
PIN_CU24 -to pll_ref_clk_p
PIN_C30 -to led[0]
PIN_A30 -to led[1]
PIN_D31 -to led[2]
PIN_B31 -to led[3]
PIN_L40 -to clk_ddr4_ch0_p
PIN_F33 -to ddr4_dq[0]
PIN_H33 -to ddr4_dq[1]
PIN_G34 -to ddr4_dq[2]
PIN_J34 -to ddr4_dq[3]
PIN_J38 -to ddr4_dq[4]
PIN_G38 -to ddr4_dq[5]
PIN_F37 -to ddr4_dq[6]
PIN_H37 -to ddr4_dq[7]
PIN_B33 -to ddr4_dq[8]
PIN_D33 -to ddr4_dq[9]
PIN_A34 -to ddr4_dq[10]
PIN_C34 -to ddr4_dq[11]
PIN_D37 -to ddr4_dq[12]
PIN_A38 -to ddr4_dq[13]
PIN_B37 -to ddr4_dq[14]
PIN_C38 -to ddr4_dq[15]
PIN_A40 -to ddr4_dq[16]
PIN_C40 -to ddr4_dq[17]
PIN_B41 -to ddr4_dq[18]
PIN_D41 -to ddr4_dq[19]
PIN_D45 -to ddr4_dq[20]
PIN_B45 -to ddr4_dq[21]
PIN_A44 -to ddr4_dq[22]
PIN_C44 -to ddr4_dq[23]
PIN_G40 -to ddr4_dq[24]
PIN_J40 -to ddr4_dq[25]
PIN_F41 -to ddr4_dq[26]
PIN_H41 -to ddr4_dq[27]
PIN_J44 -to ddr4_dq[28]
PIN_H45 -to ddr4_dq[29]
PIN_G44 -to ddr4_dq[30]
PIN_F45 -to ddr4_dq[31]
PIN_G48 -to ddr4_dq[32]
PIN_F47 -to ddr4_dq[33]
PIN_J48 -to ddr4_dq[34]
PIN_H47 -to ddr4_dq[35]
PIN_F51 -to ddr4_dq[36]
PIN_H51 -to ddr4_dq[37]
PIN_G52 -to ddr4_dq[38]
PIN_J52 -to ddr4_dq[39]
PIN_F55 -to ddr4_dq[40]
PIN_G54 -to ddr4_dq[41]
PIN_H55 -to ddr4_dq[42]
PIN_J54 -to ddr4_dq[43]
PIN_J58 -to ddr4_dq[44]
PIN_F59 -to ddr4_dq[45]
PIN_G58 -to ddr4_dq[46]
PIN_H59 -to ddr4_dq[47]
PIN_B55 -to ddr4_dq[48]
PIN_A54 -to ddr4_dq[49]
PIN_D55 -to ddr4_dq[50]
PIN_C54 -to ddr4_dq[51]
PIN_D59 -to ddr4_dq[52]
PIN_C58 -to ddr4_dq[53]
PIN_F61 -to ddr4_dq[54]
PIN_H61 -to ddr4_dq[55]
PIN_V55 -to ddr4_dq[56]
PIN_T55 -to ddr4_dq[57]
PIN_W54 -to ddr4_dq[58]
PIN_U54 -to ddr4_dq[59]
PIN_W58 -to ddr4_dq[60]
PIN_T59 -to ddr4_dq[61]
PIN_U58 -to ddr4_dq[62]
PIN_V59 -to ddr4_dq[63]
PIN_A48 -to ddr4_dq[64]
PIN_B47 -to ddr4_dq[65]
PIN_C48 -to ddr4_dq[66]
PIN_D47 -to ddr4_dq[67]
PIN_C52 -to ddr4_dq[68]
PIN_D51 -to ddr4_dq[69]
PIN_B51 -to ddr4_dq[70]
PIN_A52 -to ddr4_dq[71]
PIN_G36 -to ddr4_dbi_n[0]
PIN_A36 -to ddr4_dbi_n[1]
PIN_B43 -to ddr4_dbi_n[2]
PIN_F43 -to ddr4_dbi_n[3]
PIN_G50 -to ddr4_dbi_n[4]
PIN_F57 -to ddr4_dbi_n[5]
PIN_B57 -to ddr4_dbi_n[6]
PIN_T57 -to ddr4_dbi_n[7]
PIN_A50 -to ddr4_dbi_n[8]
PIN_H35 -to ddr4_dqs_n[0]
PIN_F35 -to ddr4_dqs_p[0]
PIN_D35 -to ddr4_dqs_n[1]
PIN_B35 -to ddr4_dqs_p[1]
PIN_C42 -to ddr4_dqs_n[2]
PIN_A42 -to ddr4_dqs_p[2]
PIN_J42 -to ddr4_dqs_n[3]
PIN_G42 -to ddr4_dqs_p[3]
PIN_H49 -to ddr4_dqs_n[4]
PIN_F49 -to ddr4_dqs_p[4]
PIN_J56 -to ddr4_dqs_n[5]
PIN_G56 -to ddr4_dqs_p[5]
PIN_C56 -to ddr4_dqs_n[6]
PIN_A56 -to ddr4_dqs_p[6]
PIN_W56 -to ddr4_dqs_n[7]
PIN_U56 -to ddr4_dqs_p[7]
PIN_D49 -to ddr4_dqs_n[8]
PIN_B49 -to ddr4_dqs_p[8]
PIN_P37 -to ddr4_ck_n[0]
PIN_M37 -to ddr4_ck_p[0]
PIN_P43 -to ddr4_a[16]
PIN_M43 -to ddr4_a[15]
PIN_N42 -to ddr4_a[14]
PIN_L42 -to ddr4_a[13]
PIN_P41 -to ddr4_a[12]
PIN_W38 -to ddr4_a[11]
PIN_U38 -to ddr4_a[10]
PIN_V37 -to ddr4_a[9]
PIN_T37 -to ddr4_a[8]
PIN_W36 -to ddr4_a[7]
PIN_U36 -to ddr4_a[6]
PIN_V35 -to ddr4_a[5]
PIN_T35 -to ddr4_a[4]
PIN_W34 -to ddr4_a[3]
PIN_U34 -to ddr4_a[2]
PIN_V33 -to ddr4_a[1]
PIN_T33 -to ddr4_a[0]
PIN_L34 -to ddr4_cs_n[0]
PIN_P45 -to ddr4_bg[0]
PIN_M33 -to ddr4_bg[1]
PIN_N44 -to ddr4_ba[0]
PIN_M45 -to ddr4_ba[1]
PIN_L36 -to ddr4_cke[0]
PIN_M35 -to ddr4_odt[0]
PIN_U44 -to ddr4_alert_n
PIN_M41 -to oct_rzqin
PIN_N38 -to ddr4_par
PIN_N34 -to ddr4_act_n
PIN_P33 -to ddr4_reset_n
PIN_AA6 -to tx
PIN_F1 -to rx
1 PIN_A24 -to cpu_resetn
2 PIN_CU24 -to pll_ref_clk_p
3 PIN_C30 -to led[0]
4 PIN_A30 -to led[1]
5 PIN_D31 -to led[2]
6 PIN_B31 -to led[3]
7 PIN_L40 -to clk_ddr4_ch0_p
8 PIN_F33 -to ddr4_dq[0]
9 PIN_H33 -to ddr4_dq[1]
10 PIN_G34 -to ddr4_dq[2]
11 PIN_J34 -to ddr4_dq[3]
12 PIN_J38 -to ddr4_dq[4]
13 PIN_G38 -to ddr4_dq[5]
14 PIN_F37 -to ddr4_dq[6]
15 PIN_H37 -to ddr4_dq[7]
16 PIN_B33 -to ddr4_dq[8]
17 PIN_D33 -to ddr4_dq[9]
18 PIN_A34 -to ddr4_dq[10]
19 PIN_C34 -to ddr4_dq[11]
20 PIN_D37 -to ddr4_dq[12]
21 PIN_A38 -to ddr4_dq[13]
22 PIN_B37 -to ddr4_dq[14]
23 PIN_C38 -to ddr4_dq[15]
24 PIN_A40 -to ddr4_dq[16]
25 PIN_C40 -to ddr4_dq[17]
26 PIN_B41 -to ddr4_dq[18]
27 PIN_D41 -to ddr4_dq[19]
28 PIN_D45 -to ddr4_dq[20]
29 PIN_B45 -to ddr4_dq[21]
30 PIN_A44 -to ddr4_dq[22]
31 PIN_C44 -to ddr4_dq[23]
32 PIN_G40 -to ddr4_dq[24]
33 PIN_J40 -to ddr4_dq[25]
34 PIN_F41 -to ddr4_dq[26]
35 PIN_H41 -to ddr4_dq[27]
36 PIN_J44 -to ddr4_dq[28]
37 PIN_H45 -to ddr4_dq[29]
38 PIN_G44 -to ddr4_dq[30]
39 PIN_F45 -to ddr4_dq[31]
40 PIN_G48 -to ddr4_dq[32]
41 PIN_F47 -to ddr4_dq[33]
42 PIN_J48 -to ddr4_dq[34]
43 PIN_H47 -to ddr4_dq[35]
44 PIN_F51 -to ddr4_dq[36]
45 PIN_H51 -to ddr4_dq[37]
46 PIN_G52 -to ddr4_dq[38]
47 PIN_J52 -to ddr4_dq[39]
48 PIN_F55 -to ddr4_dq[40]
49 PIN_G54 -to ddr4_dq[41]
50 PIN_H55 -to ddr4_dq[42]
51 PIN_J54 -to ddr4_dq[43]
52 PIN_J58 -to ddr4_dq[44]
53 PIN_F59 -to ddr4_dq[45]
54 PIN_G58 -to ddr4_dq[46]
55 PIN_H59 -to ddr4_dq[47]
56 PIN_B55 -to ddr4_dq[48]
57 PIN_A54 -to ddr4_dq[49]
58 PIN_D55 -to ddr4_dq[50]
59 PIN_C54 -to ddr4_dq[51]
60 PIN_D59 -to ddr4_dq[52]
61 PIN_C58 -to ddr4_dq[53]
62 PIN_F61 -to ddr4_dq[54]
63 PIN_H61 -to ddr4_dq[55]
64 PIN_V55 -to ddr4_dq[56]
65 PIN_T55 -to ddr4_dq[57]
66 PIN_W54 -to ddr4_dq[58]
67 PIN_U54 -to ddr4_dq[59]
68 PIN_W58 -to ddr4_dq[60]
69 PIN_T59 -to ddr4_dq[61]
70 PIN_U58 -to ddr4_dq[62]
71 PIN_V59 -to ddr4_dq[63]
72 PIN_A48 -to ddr4_dq[64]
73 PIN_B47 -to ddr4_dq[65]
74 PIN_C48 -to ddr4_dq[66]
75 PIN_D47 -to ddr4_dq[67]
76 PIN_C52 -to ddr4_dq[68]
77 PIN_D51 -to ddr4_dq[69]
78 PIN_B51 -to ddr4_dq[70]
79 PIN_A52 -to ddr4_dq[71]
80 PIN_G36 -to ddr4_dbi_n[0]
81 PIN_A36 -to ddr4_dbi_n[1]
82 PIN_B43 -to ddr4_dbi_n[2]
83 PIN_F43 -to ddr4_dbi_n[3]
84 PIN_G50 -to ddr4_dbi_n[4]
85 PIN_F57 -to ddr4_dbi_n[5]
86 PIN_B57 -to ddr4_dbi_n[6]
87 PIN_T57 -to ddr4_dbi_n[7]
88 PIN_A50 -to ddr4_dbi_n[8]
89 PIN_H35 -to ddr4_dqs_n[0]
90 PIN_F35 -to ddr4_dqs_p[0]
91 PIN_D35 -to ddr4_dqs_n[1]
92 PIN_B35 -to ddr4_dqs_p[1]
93 PIN_C42 -to ddr4_dqs_n[2]
94 PIN_A42 -to ddr4_dqs_p[2]
95 PIN_J42 -to ddr4_dqs_n[3]
96 PIN_G42 -to ddr4_dqs_p[3]
97 PIN_H49 -to ddr4_dqs_n[4]
98 PIN_F49 -to ddr4_dqs_p[4]
99 PIN_J56 -to ddr4_dqs_n[5]
100 PIN_G56 -to ddr4_dqs_p[5]
101 PIN_C56 -to ddr4_dqs_n[6]
102 PIN_A56 -to ddr4_dqs_p[6]
103 PIN_W56 -to ddr4_dqs_n[7]
104 PIN_U56 -to ddr4_dqs_p[7]
105 PIN_D49 -to ddr4_dqs_n[8]
106 PIN_B49 -to ddr4_dqs_p[8]
107 PIN_P37 -to ddr4_ck_n[0]
108 PIN_M37 -to ddr4_ck_p[0]
109 PIN_P43 -to ddr4_a[16]
110 PIN_M43 -to ddr4_a[15]
111 PIN_N42 -to ddr4_a[14]
112 PIN_L42 -to ddr4_a[13]
113 PIN_P41 -to ddr4_a[12]
114 PIN_W38 -to ddr4_a[11]
115 PIN_U38 -to ddr4_a[10]
116 PIN_V37 -to ddr4_a[9]
117 PIN_T37 -to ddr4_a[8]
118 PIN_W36 -to ddr4_a[7]
119 PIN_U36 -to ddr4_a[6]
120 PIN_V35 -to ddr4_a[5]
121 PIN_T35 -to ddr4_a[4]
122 PIN_W34 -to ddr4_a[3]
123 PIN_U34 -to ddr4_a[2]
124 PIN_V33 -to ddr4_a[1]
125 PIN_T33 -to ddr4_a[0]
126 PIN_L34 -to ddr4_cs_n[0]
127 PIN_P45 -to ddr4_bg[0]
128 PIN_M33 -to ddr4_bg[1]
129 PIN_N44 -to ddr4_ba[0]
130 PIN_M45 -to ddr4_ba[1]
131 PIN_L36 -to ddr4_cke[0]
132 PIN_M35 -to ddr4_odt[0]
133 PIN_U44 -to ddr4_alert_n
134 PIN_M41 -to oct_rzqin
135 PIN_N38 -to ddr4_par
136 PIN_N34 -to ddr4_act_n
137 PIN_P33 -to ddr4_reset_n
138 PIN_AA6 -to tx
139 PIN_F1 -to rx

View file

@ -0,0 +1,9 @@
"../fpga/src/apb/include"
"../fpga/src"
"../fpga/"
"../../vendor/pulp-platform/common_cells/include"
"../../vendor/pulp-platform/axi/include"
"../../core/cache_subsystem/hpdcache/rtl/include"
"../../core/include"
"../register_interface/include"
"../"
1 ../fpga/src/apb/include
2 ../fpga/src
3 ../fpga/
4 ../../vendor/pulp-platform/common_cells/include
5 ../../vendor/pulp-platform/axi/include
6 ../../core/cache_subsystem/hpdcache/rtl/include
7 ../../core/include
8 ../register_interface/include
9 ../

View file

@ -0,0 +1,45 @@
TOP_LEVEL_ENTITY cva6_altera
ORIGINAL_QUARTUS_VERSION 24.1.0
PROJECT_CREATION_TIME_DATE "14:07:44 JUNE 03, 2024"
LAST_QUARTUS_VERSION "24.1.0 Pro Edition"
PROJECT_OUTPUT_DIRECTORY output_files
MIN_CORE_JUNCTION_TEMP 0
MAX_CORE_JUNCTION_TEMP 100
DEVICE AGFB014R24B2E2V
FAMILY "Agilex 7"
ERROR_CHECK_FREQUENCY_DIVISOR 256
EDA_SIMULATION_TOOL "QuestaSim (Verilog)"
EDA_TIME_SCALE "1 ps" -section_id eda_simulation
EDA_OUTPUT_DATA_FORMAT "VERILOG HDL" -section_id eda_simulation
STRATIXV_CONFIGURATION_SCHEME "ACTIVE SERIAL X4"
USE_CONFIGURATION_DEVICE ON
GENERATE_PR_RBF_FILE ON
ENABLE_ED_CRC_CHECK ON
MINIMUM_SEU_INTERVAL 0
PWRMGT_SLAVE_DEVICE_TYPE ED8401
PWRMGT_SLAVE_DEVICE0_ADDRESS 47
PWRMGT_SLAVE_DEVICE1_ADDRESS 00
PWRMGT_SLAVE_DEVICE2_ADDRESS 00
ACTIVE_SERIAL_CLOCK AS_FREQ_100MHZ
USE_PWRMGT_SCL SDM_IO14
USE_PWRMGT_SDA SDM_IO11
USE_CONF_DONE SDM_IO16
AUTO_RESTART_CONFIGURATION OFF
USE_CVP_CONFDONE SDM_IO10
DEVICE_INITIALIZATION_CLOCK OSC_CLK_1_125MHZ
PWRMGT_PAGE_COMMAND_ENABLE OFF
PWRMGT_VOLTAGE_OUTPUT_FORMAT "LINEAR FORMAT"
PWRMGT_LINEAR_FORMAT_N "-13"
POWER_APPLY_THERMAL_MARGIN ADDITIONAL
USE_INIT_DONE SDM_IO0
BOARD default
OPTIMIZATION_MODE "OPTIMIZE NETLIST FOR ROUTABILITY"
ALM_REGISTER_PACKING_EFFORT "LOW"
ADVANCED_PHYSICAL_SYNTHESIS "ON"
PLACEMENT_EFFORT_MULTIPLIER 50
ROUTER_TIMING_OPTIMIZATION_LEVEL "MAXIMUM"
FINAL_PLACEMENT_OPTIMIZATION "AUTOMATICALLY"
FITTER_AGGRESSIVE_ROUTABILITY_OPTIMIZATION ALWAYS
GLOBAL_PLACEMENT_EFFORT "MAXIMUM EFFORT"
QII_AUTO_PACKED_REGISTERS SPARSE
OPTIMIZATION_TECHNIQUE SPEED
Can't render this file because it contains an unexpected character in line 3 and column 28.

View file

@ -0,0 +1,21 @@
// Copyright 2018 ETH Zurich and University of Bologna.
// Copyright and related rights are licensed under the Solderpad Hardware
// License, Version 0.51 (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the License at
// http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
// or agreed to in writing, software, hardware and materials distributed under
// this License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.
// Description: Set global FPGA degines
// Author: Florian Zaruba <zarubaf@iis.ee.ethz.ch>
`define AGILEX7
// include KINTEX7 specific code (relevant for KC705, GENESYSII,...)
`define KINTEX7
`define ARIANE_DATA_WIDTH 64
// Instantiate protocl checker
// `define PROTOCOL_CHECKER

View file

@ -20,7 +20,7 @@ endif
CC = $(RISCV)/bin/${CROSSCOMPILE}gcc
OBJCOPY = $(RISCV)/bin/$(CROSSCOMPILE)objcopy
SED = sed
PLATFORM_DEFINES = -DCLOCK_FREQUENCY=$(CLOCK_FREQUENCY) -DUART_BITRATE=$(UART_BITRATE)
PLATFORM_DEFINES = -DCLOCK_FREQUENCY=$(CLOCK_FREQUENCY) -DUART_BITRATE=$(UART_BITRATE) -D$(PLATFORM)
ifeq ($(XLEN), 64)
CFLAGS = $(PLATFORM_DEFINES) -Os -ggdb -march=rv64im_zicsr -mabi=lp64 -Wall -mcmodel=medany -mexplicit-relocs -ffreestanding
@ -56,6 +56,7 @@ endif
$(MAIN): $(DTB) $(OBJS_C) $(OBJS_S) linker.lds
$(CC) $(CFLAGS) $(LDFLAGS) $(INCLUDES) -Tlinker.lds $(OBJS_S) $(OBJS_C) -o $(MAIN)
@echo "LD >= $(MAIN)"
@echo "BOOTROM PLATFORM IS : $(PLATFORM)"
%.img: %.bin
dd if=$< of=$@ bs=128

View file

@ -48,7 +48,9 @@ int main()
uint8_t uart_res = 0;
uintptr_t start;
init_uart(CLOCK_FREQUENCY, UART_BITRATE);
#ifndef PLAT_AGILEX
init_uart(CLOCK_FREQUENCY, UART_BITRATE); //not needed in intel setup as UART IP is already configured via HW
#endif
print_uart("Hello World!\r\n");
// See if we should enter update mode
@ -70,9 +72,12 @@ int main()
res = update((uint8_t *)0x80000000UL);
} else {
print_uart(" booting!\r\n");
res = gpt_find_boot_partition((uint8_t *)0x80000000UL, 2 * 16384);
#ifndef PLAT_AGILEX
res = gpt_find_boot_partition((uint8_t *)0x80000000UL, 2 * 16384); // linux boot not yet supported for altera
#endif
}
#ifndef PLAT_AGILEX // linux boot not yet supported for altera
if (res == 0)
{
// jump to the address
@ -81,6 +86,7 @@ int main()
"la a1, _dtb;"
"jr s0");
}
#endif
while (1)
{

View file

@ -20,15 +20,27 @@ int is_transmit_empty()
return read_reg_u8(UART_LINE_STATUS) & 0x20;
}
char is_transmit_empty_altera()
{
return read_reg_u8(UART_THR+6);
}
int is_receive_empty()
{
return !(read_reg_u8(UART_LINE_STATUS) & 0x1);
#ifndef PLAT_AGILEX
return !(read_reg_u8(UART_LINE_STATUS) & 0x1);
#else
return !(read_reg_u8(UART_THR+1) & 0x8);
#endif
}
void write_serial(char a)
{
while (is_transmit_empty() == 0) {};
#ifndef PLAT_AGILEX
while (is_transmit_empty() == 0) {};
#else
while (is_transmit_empty_altera() < 8) {};
#endif
write_reg_u8(UART_THR, a);
}