Add Agilex HPS in Altera FPGA design (#2956)

Add Altera HPS to design in order to be able to access the peripherals connected to it.
This commit is contained in:
AngelaGonzalezMarino 2025-05-15 02:23:20 +02:00 committed by GitHub
parent 7555cb7d60
commit a2c2f60e5b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 3039 additions and 17 deletions

View file

@ -72,9 +72,13 @@ create_project:
@touch "$(PROJECT).qsf"
$(QSYS_PATH)qsys-script --script=ip/interconnect.tcl
$(QSYS_PATH)qsys-generate interconnect.qsys --quartus_project=ip/interconnect --synthesis
$(QSYS_PATH)qsys-script --script=ip/hps_cva6_altera.tcl
$(QSYS_PATH)qsys-generate system.qsys --quartus_project=ip/hps_cva6_altera --synthesis
rm -f interconnect/*.v
rm -f interconnect/*.vhd
rm -f interconnect/synth/*.v
rm -f system/*.v
rm -f system/*.vhd
write_settings:
@echo "Reading from settings.csv and writing to $(PROJECT).qsf with modifications"
@ -108,6 +112,7 @@ write_search_paths:
write_source_files:
@find ./interconnect -type f -name "*.v" -o -name "*.sv" -o -name "*.svh" >> $(SOURCES_FILE)
@find ./system -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"
@ -191,6 +196,7 @@ clean:
rm -rf interconnect
rm -rf io_pll
rm -rf iobuf
rm -rf system
$(QUARTUS_PATH)quartus_ipgenerate --clean $(PROJECT)

View file

@ -5,3 +5,71 @@ 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
IO_STANDARD "1.8-V" -to hps_emac0_MDC -entity ghrd
IO_STANDARD "1.8-V" -to hps_emac0_MDIO -entity ghrd
IO_STANDARD "1.8-V" -to hps_emac0_RXD0 -entity ghrd
IO_STANDARD "1.8-V" -to hps_emac0_RXD1 -entity ghrd
IO_STANDARD "1.8-V" -to hps_emac0_RXD2 -entity ghrd
IO_STANDARD "1.8-V" -to hps_emac0_RXD3 -entity ghrd
IO_STANDARD "1.8-V" -to hps_emac0_RX_CLK -entity ghrd
IO_STANDARD "1.8-V" -to hps_emac0_RX_CTL -entity ghrd
IO_STANDARD "1.8-V" -to hps_emac0_TXD0 -entity ghrd
IO_STANDARD "1.8-V" -to hps_emac0_TXD1 -entity ghrd
IO_STANDARD "1.8-V" -to hps_emac0_TXD2 -entity ghrd
IO_STANDARD "1.8-V" -to hps_emac0_TXD3 -entity ghrd
IO_STANDARD "1.8-V" -to hps_emac0_TX_CLK -entity ghrd
IO_STANDARD "1.8-V" -to hps_emac0_TX_CTL -entity ghrd
IO_STANDARD "1.8-V" -to hps_i2c1_SCL -entity ghrd
IO_STANDARD "1.8-V" -to hps_i2c1_SDA -entity ghrd
IO_STANDARD "1.8-V" -to hps_jtag_tck -entity ghrd
IO_STANDARD "1.8-V" -to hps_jtag_tdo -entity ghrd
IO_STANDARD "1.8-V" -to hps_ref_clk -entity ghrd
IO_STANDARD "1.8 V" -to hps_sdmmc_CMD -entity ghrd
IO_STANDARD "1.8 V" -to hps_sdmmc_CCLK -entity ghrd
IO_STANDARD "1.8 V" -to hps_sdmmc_D0 -entity ghrd
IO_STANDARD "1.8 V" -to hps_sdmmc_D1 -entity ghrd
IO_STANDARD "1.8 V" -to hps_sdmmc_D2 -entity ghrd
IO_STANDARD "1.8 V" -to hps_sdmmc_D3 -entity ghrd
IO_STANDARD "1.8 V" -to hps_uart0_TX -entity ghrd
IO_STANDARD "1.8 V" -to hps_uart0_RX -entity ghrd
IO_STANDARD "TRUE DIFFERENTIAL SIGNALING" -to fpga_clk_100 -entity ghrd
CURRENT_STRENGTH_NEW 4MA -to hps_emac0_MDC -entity ghrd
CURRENT_STRENGTH_NEW 4MA -to hps_emac0_MDIO -entity ghrd
AUTO_OPEN_DRAIN_PINS ON -to hps_emac0_MDIO -entity ghrd
WEAK_PULL_UP_RESISTOR ON -to hps_emac0_MDIO -entity ghrd
WEAK_PULL_UP_RESISTOR ON -to hps_emac0_RXD0 -entity ghrd
WEAK_PULL_UP_RESISTOR ON -to hps_emac0_RXD1 -entity ghrd
WEAK_PULL_UP_RESISTOR ON -to hps_emac0_RXD2 -entity ghrd
WEAK_PULL_UP_RESISTOR ON -to hps_emac0_RXD3 -entity ghrd
WEAK_PULL_UP_RESISTOR ON -to hps_emac0_RX_CLK -entity ghrd
WEAK_PULL_UP_RESISTOR ON -to hps_emac0_RX_CTL -entity ghrd
CURRENT_STRENGTH_NEW 8MA -to hps_emac0_TXD0 -entity ghrd
CURRENT_STRENGTH_NEW 8MA -to hps_emac0_TXD1 -entity ghrd
CURRENT_STRENGTH_NEW 8MA -to hps_emac0_TXD2 -entity ghrd
CURRENT_STRENGTH_NEW 8MA -to hps_emac0_TXD3 -entity ghrd
CURRENT_STRENGTH_NEW 8MA -to hps_emac0_TX_CLK -entity ghrd
CURRENT_STRENGTH_NEW 8MA -to hps_emac0_TX_CTL -entity ghrd
CURRENT_STRENGTH_NEW 4MA -to hps_i2c1_SCL -entity ghrd
AUTO_OPEN_DRAIN_PINS ON -to hps_i2c1_SCL -entity ghrd
WEAK_PULL_UP_RESISTOR ON -to hps_i2c1_SCL -entity ghrd
CURRENT_STRENGTH_NEW 4MA -to hps_i2c1_SDA -entity ghrd
AUTO_OPEN_DRAIN_PINS ON -to hps_i2c1_SDA -entity ghrd
WEAK_PULL_UP_RESISTOR ON -to hps_i2c1_SDA -entity ghrd
WEAK_PULL_UP_RESISTOR ON -to hps_jtag_tck -entity ghrd
IO_STANDARD "1.8-V" -to hps_jtag_tdi -entity ghrd
WEAK_PULL_UP_RESISTOR ON -to hps_jtag_tdi -entity ghrd
CURRENT_STRENGTH_NEW 4MA -to hps_jtag_tdo -entity ghrd
WEAK_PULL_UP_RESISTOR ON -to hps_jtag_tms -entity ghrd
CURRENT_STRENGTH_NEW 8MA -to hps_sdmmc_CMD -entity ghrd
CURRENT_STRENGTH_NEW 8MA -to hps_sdmmc_CCLK -entity ghrd
WEAK_PULL_UP_RESISTOR ON -to hps_sdmmc_CMD -entity ghrd
CURRENT_STRENGTH_NEW 8MA -to hps_sdmmc_D0 -entity ghrd
WEAK_PULL_UP_RESISTOR ON -to hps_sdmmc_D0 -entity ghrd
CURRENT_STRENGTH_NEW 8MA -to hps_sdmmc_D1 -entity ghrd
WEAK_PULL_UP_RESISTOR ON -to hps_sdmmc_D1 -entity ghrd
CURRENT_STRENGTH_NEW 8MA -to hps_sdmmc_D2 -entity ghrd
WEAK_PULL_UP_RESISTOR ON -to hps_sdmmc_D2 -entity ghrd
CURRENT_STRENGTH_NEW 8MA -to hps_sdmmc_D3 -entity ghrd
WEAK_PULL_UP_RESISTOR ON -to hps_sdmmc_D3 -entity ghrd
CURRENT_STRENGTH_NEW 4MA -to hps_uart0_TX -entity ghrd
WEAK_PULL_UP_RESISTOR ON -to hps_uart0_RX -entity ghrd
Can't render this file because it contains an unexpected character in line 1 and column 13.

View file

@ -24,7 +24,7 @@ proc do_create_emif_cal {} {
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 {NUM_CALBUS_INTERFACE} {2}
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

File diff suppressed because it is too large Load diff

View file

@ -7,3 +7,7 @@
./emif_cal.ip
./vJTAG.ip
./cva6_intel_jtag_uart_0.ip
./ip/system/hps.ip
./ip/system/hps_emif.ip
./ip/system/init_done.ip
./ip/system/system_intel_cache_coherency_translator.ip

1 ./test_mm_ccb_0.ip
7 ./emif_cal.ip
8 ./vJTAG.ip
9 ./cva6_intel_jtag_uart_0.ip
10 ./ip/system/hps.ip
11 ./ip/system/hps_emif.ip
12 ./ip/system/init_done.ip
13 ./ip/system/system_intel_cache_coherency_translator.ip

View file

@ -137,3 +137,134 @@ PIN_N34 -to ddr4_act_n
PIN_P33 -to ddr4_reset_n
PIN_AA6 -to tx
PIN_F1 -to rx
PIN_L10 -to emif_hps_pll_ref_clk_p
PIN_M9 -to emif_hps_oct_oct_rzqin
PIN_T17 -to emif_hps_mem_mem_a[0]
PIN_V17 -to emif_hps_mem_mem_a[1]
PIN_U16 -to emif_hps_mem_mem_a[2]
PIN_W16 -to emif_hps_mem_mem_a[3]
PIN_T15 -to emif_hps_mem_mem_a[4]
PIN_V15 -to emif_hps_mem_mem_a[5]
PIN_U14 -to emif_hps_mem_mem_a[6]
PIN_W14 -to emif_hps_mem_mem_a[7]
PIN_T13 -to emif_hps_mem_mem_a[8]
PIN_V13 -to emif_hps_mem_mem_a[9]
PIN_U12 -to emif_hps_mem_mem_a[10]
PIN_W12 -to emif_hps_mem_mem_a[11]
PIN_P9 -to emif_hps_mem_mem_a[12]
PIN_L8 -to emif_hps_mem_mem_a[13]
PIN_N8 -to emif_hps_mem_mem_a[14]
PIN_M7 -to emif_hps_mem_mem_a[15]
PIN_P7 -to emif_hps_mem_mem_a[16]
PIN_N6 -to emif_hps_mem_mem_ba[0]
PIN_M5 -to emif_hps_mem_mem_ba[1]
PIN_P5 -to emif_hps_mem_mem_bg[0]
PIN_N16 -to emif_hps_mem_mem_act_n
PIN_L6 -to emif_hps_mem_mem_alert_n
PIN_M13 -to emif_hps_mem_mem_ck[0]
PIN_P13 -to emif_hps_mem_mem_ck_n[0]
PIN_L14 -to emif_hps_mem_mem_cke[0]
PIN_L16 -to emif_hps_mem_mem_cs_n[0]
PIN_M15 -to emif_hps_mem_mem_odt[0]
PIN_N12 -to emif_hps_mem_mem_par
PIN_P17 -to emif_hps_mem_mem_reset_n
PIN_A8 -to emif_hps_mem_mem_dqs[0]
PIN_G8 -to emif_hps_mem_mem_dqs[1]
PIN_F15 -to emif_hps_mem_mem_dqs[2]
PIN_B15 -to emif_hps_mem_mem_dqs[3]
PIN_U22 -to emif_hps_mem_mem_dqs[4]
PIN_L22 -to emif_hps_mem_mem_dqs[5]
PIN_M29 -to emif_hps_mem_mem_dqs[6]
PIN_T29 -to emif_hps_mem_mem_dqs[7]
PIN_U8 -to emif_hps_mem_mem_dqs[8]
PIN_C8 -to emif_hps_mem_mem_dqs_n[0]
PIN_J8 -to emif_hps_mem_mem_dqs_n[1]
PIN_H15 -to emif_hps_mem_mem_dqs_n[2]
PIN_D15 -to emif_hps_mem_mem_dqs_n[3]
PIN_W22 -to emif_hps_mem_mem_dqs_n[4]
PIN_N22 -to emif_hps_mem_mem_dqs_n[5]
PIN_P29 -to emif_hps_mem_mem_dqs_n[6]
PIN_V29 -to emif_hps_mem_mem_dqs_n[7]
PIN_W8 -to emif_hps_mem_mem_dqs_n[8]
PIN_B7 -to emif_hps_mem_mem_dbi_n[0]
PIN_F7 -to emif_hps_mem_mem_dbi_n[1]
PIN_G14 -to emif_hps_mem_mem_dbi_n[2]
PIN_A14 -to emif_hps_mem_mem_dbi_n[3]
PIN_T21 -to emif_hps_mem_mem_dbi_n[4]
PIN_M21 -to emif_hps_mem_mem_dbi_n[5]
PIN_L28 -to emif_hps_mem_mem_dbi_n[6]
PIN_U28 -to emif_hps_mem_mem_dbi_n[7]
PIN_T7 -to emif_hps_mem_mem_dbi_n[8]
PIN_A10 -to emif_hps_mem_mem_dq[0]
PIN_C10 -to emif_hps_mem_mem_dq[1]
PIN_B9 -to emif_hps_mem_mem_dq[2]
PIN_D9 -to emif_hps_mem_mem_dq[3]
PIN_A6 -to emif_hps_mem_mem_dq[4]
PIN_B5 -to emif_hps_mem_mem_dq[5]
PIN_C6 -to emif_hps_mem_mem_dq[6]
PIN_D5 -to emif_hps_mem_mem_dq[7]
PIN_G10 -to emif_hps_mem_mem_dq[8]
PIN_J10 -to emif_hps_mem_mem_dq[9]
PIN_F9 -to emif_hps_mem_mem_dq[10]
PIN_H9 -to emif_hps_mem_mem_dq[11]
PIN_G6 -to emif_hps_mem_mem_dq[12]
PIN_J6 -to emif_hps_mem_mem_dq[13]
PIN_F5 -to emif_hps_mem_mem_dq[14]
PIN_H5 -to emif_hps_mem_mem_dq[15]
PIN_F17 -to emif_hps_mem_mem_dq[16]
PIN_H17 -to emif_hps_mem_mem_dq[17]
PIN_G16 -to emif_hps_mem_mem_dq[18]
PIN_J16 -to emif_hps_mem_mem_dq[19]
PIN_F13 -to emif_hps_mem_mem_dq[20]
PIN_J12 -to emif_hps_mem_mem_dq[21]
PIN_H13 -to emif_hps_mem_mem_dq[22]
PIN_G12 -to emif_hps_mem_mem_dq[23]
PIN_B17 -to emif_hps_mem_mem_dq[24]
PIN_D17 -to emif_hps_mem_mem_dq[25]
PIN_A16 -to emif_hps_mem_mem_dq[26]
PIN_C16 -to emif_hps_mem_mem_dq[27]
PIN_B13 -to emif_hps_mem_mem_dq[28]
PIN_D13 -to emif_hps_mem_mem_dq[29]
PIN_A12 -to emif_hps_mem_mem_dq[30]
PIN_C12 -to emif_hps_mem_mem_dq[31]
PIN_U24 -to emif_hps_mem_mem_dq[32]
PIN_W24 -to emif_hps_mem_mem_dq[33]
PIN_T23 -to emif_hps_mem_mem_dq[34]
PIN_V23 -to emif_hps_mem_mem_dq[35]
PIN_U20 -to emif_hps_mem_mem_dq[36]
PIN_W20 -to emif_hps_mem_mem_dq[37]
PIN_T19 -to emif_hps_mem_mem_dq[38]
PIN_V19 -to emif_hps_mem_mem_dq[39]
PIN_L24 -to emif_hps_mem_mem_dq[40]
PIN_N24 -to emif_hps_mem_mem_dq[41]
PIN_M23 -to emif_hps_mem_mem_dq[42]
PIN_P23 -to emif_hps_mem_mem_dq[43]
PIN_L20 -to emif_hps_mem_mem_dq[44]
PIN_P19 -to emif_hps_mem_mem_dq[45]
PIN_N20 -to emif_hps_mem_mem_dq[46]
PIN_M19 -to emif_hps_mem_mem_dq[47]
PIN_M31 -to emif_hps_mem_mem_dq[48]
PIN_P31 -to emif_hps_mem_mem_dq[49]
PIN_L30 -to emif_hps_mem_mem_dq[50]
PIN_N30 -to emif_hps_mem_mem_dq[51]
PIN_M27 -to emif_hps_mem_mem_dq[52]
PIN_P27 -to emif_hps_mem_mem_dq[53]
PIN_L26 -to emif_hps_mem_mem_dq[54]
PIN_N26 -to emif_hps_mem_mem_dq[55]
PIN_T31 -to emif_hps_mem_mem_dq[56]
PIN_V31 -to emif_hps_mem_mem_dq[57]
PIN_U30 -to emif_hps_mem_mem_dq[58]
PIN_W30 -to emif_hps_mem_mem_dq[59]
PIN_T27 -to emif_hps_mem_mem_dq[60]
PIN_W26 -to emif_hps_mem_mem_dq[61]
PIN_V27 -to emif_hps_mem_mem_dq[62]
PIN_U26 -to emif_hps_mem_mem_dq[63]
PIN_U10 -to emif_hps_mem_mem_dq[64]
PIN_W10 -to emif_hps_mem_mem_dq[65]
PIN_T9 -to emif_hps_mem_mem_dq[66]
PIN_V9 -to emif_hps_mem_mem_dq[67]
PIN_U6 -to emif_hps_mem_mem_dq[68]
PIN_W6 -to emif_hps_mem_mem_dq[69]
PIN_T5 -to emif_hps_mem_mem_dq[70]
PIN_V5 -to emif_hps_mem_mem_dq[71]
PIN_M17 -to emif_hps_mem_mem_bg[1] -comment IOBANK_3D

1 PIN_A24 -to cpu_resetn
137 PIN_P33 -to ddr4_reset_n
138 PIN_AA6 -to tx
139 PIN_F1 -to rx
140 PIN_L10 -to emif_hps_pll_ref_clk_p
141 PIN_M9 -to emif_hps_oct_oct_rzqin
142 PIN_T17 -to emif_hps_mem_mem_a[0]
143 PIN_V17 -to emif_hps_mem_mem_a[1]
144 PIN_U16 -to emif_hps_mem_mem_a[2]
145 PIN_W16 -to emif_hps_mem_mem_a[3]
146 PIN_T15 -to emif_hps_mem_mem_a[4]
147 PIN_V15 -to emif_hps_mem_mem_a[5]
148 PIN_U14 -to emif_hps_mem_mem_a[6]
149 PIN_W14 -to emif_hps_mem_mem_a[7]
150 PIN_T13 -to emif_hps_mem_mem_a[8]
151 PIN_V13 -to emif_hps_mem_mem_a[9]
152 PIN_U12 -to emif_hps_mem_mem_a[10]
153 PIN_W12 -to emif_hps_mem_mem_a[11]
154 PIN_P9 -to emif_hps_mem_mem_a[12]
155 PIN_L8 -to emif_hps_mem_mem_a[13]
156 PIN_N8 -to emif_hps_mem_mem_a[14]
157 PIN_M7 -to emif_hps_mem_mem_a[15]
158 PIN_P7 -to emif_hps_mem_mem_a[16]
159 PIN_N6 -to emif_hps_mem_mem_ba[0]
160 PIN_M5 -to emif_hps_mem_mem_ba[1]
161 PIN_P5 -to emif_hps_mem_mem_bg[0]
162 PIN_N16 -to emif_hps_mem_mem_act_n
163 PIN_L6 -to emif_hps_mem_mem_alert_n
164 PIN_M13 -to emif_hps_mem_mem_ck[0]
165 PIN_P13 -to emif_hps_mem_mem_ck_n[0]
166 PIN_L14 -to emif_hps_mem_mem_cke[0]
167 PIN_L16 -to emif_hps_mem_mem_cs_n[0]
168 PIN_M15 -to emif_hps_mem_mem_odt[0]
169 PIN_N12 -to emif_hps_mem_mem_par
170 PIN_P17 -to emif_hps_mem_mem_reset_n
171 PIN_A8 -to emif_hps_mem_mem_dqs[0]
172 PIN_G8 -to emif_hps_mem_mem_dqs[1]
173 PIN_F15 -to emif_hps_mem_mem_dqs[2]
174 PIN_B15 -to emif_hps_mem_mem_dqs[3]
175 PIN_U22 -to emif_hps_mem_mem_dqs[4]
176 PIN_L22 -to emif_hps_mem_mem_dqs[5]
177 PIN_M29 -to emif_hps_mem_mem_dqs[6]
178 PIN_T29 -to emif_hps_mem_mem_dqs[7]
179 PIN_U8 -to emif_hps_mem_mem_dqs[8]
180 PIN_C8 -to emif_hps_mem_mem_dqs_n[0]
181 PIN_J8 -to emif_hps_mem_mem_dqs_n[1]
182 PIN_H15 -to emif_hps_mem_mem_dqs_n[2]
183 PIN_D15 -to emif_hps_mem_mem_dqs_n[3]
184 PIN_W22 -to emif_hps_mem_mem_dqs_n[4]
185 PIN_N22 -to emif_hps_mem_mem_dqs_n[5]
186 PIN_P29 -to emif_hps_mem_mem_dqs_n[6]
187 PIN_V29 -to emif_hps_mem_mem_dqs_n[7]
188 PIN_W8 -to emif_hps_mem_mem_dqs_n[8]
189 PIN_B7 -to emif_hps_mem_mem_dbi_n[0]
190 PIN_F7 -to emif_hps_mem_mem_dbi_n[1]
191 PIN_G14 -to emif_hps_mem_mem_dbi_n[2]
192 PIN_A14 -to emif_hps_mem_mem_dbi_n[3]
193 PIN_T21 -to emif_hps_mem_mem_dbi_n[4]
194 PIN_M21 -to emif_hps_mem_mem_dbi_n[5]
195 PIN_L28 -to emif_hps_mem_mem_dbi_n[6]
196 PIN_U28 -to emif_hps_mem_mem_dbi_n[7]
197 PIN_T7 -to emif_hps_mem_mem_dbi_n[8]
198 PIN_A10 -to emif_hps_mem_mem_dq[0]
199 PIN_C10 -to emif_hps_mem_mem_dq[1]
200 PIN_B9 -to emif_hps_mem_mem_dq[2]
201 PIN_D9 -to emif_hps_mem_mem_dq[3]
202 PIN_A6 -to emif_hps_mem_mem_dq[4]
203 PIN_B5 -to emif_hps_mem_mem_dq[5]
204 PIN_C6 -to emif_hps_mem_mem_dq[6]
205 PIN_D5 -to emif_hps_mem_mem_dq[7]
206 PIN_G10 -to emif_hps_mem_mem_dq[8]
207 PIN_J10 -to emif_hps_mem_mem_dq[9]
208 PIN_F9 -to emif_hps_mem_mem_dq[10]
209 PIN_H9 -to emif_hps_mem_mem_dq[11]
210 PIN_G6 -to emif_hps_mem_mem_dq[12]
211 PIN_J6 -to emif_hps_mem_mem_dq[13]
212 PIN_F5 -to emif_hps_mem_mem_dq[14]
213 PIN_H5 -to emif_hps_mem_mem_dq[15]
214 PIN_F17 -to emif_hps_mem_mem_dq[16]
215 PIN_H17 -to emif_hps_mem_mem_dq[17]
216 PIN_G16 -to emif_hps_mem_mem_dq[18]
217 PIN_J16 -to emif_hps_mem_mem_dq[19]
218 PIN_F13 -to emif_hps_mem_mem_dq[20]
219 PIN_J12 -to emif_hps_mem_mem_dq[21]
220 PIN_H13 -to emif_hps_mem_mem_dq[22]
221 PIN_G12 -to emif_hps_mem_mem_dq[23]
222 PIN_B17 -to emif_hps_mem_mem_dq[24]
223 PIN_D17 -to emif_hps_mem_mem_dq[25]
224 PIN_A16 -to emif_hps_mem_mem_dq[26]
225 PIN_C16 -to emif_hps_mem_mem_dq[27]
226 PIN_B13 -to emif_hps_mem_mem_dq[28]
227 PIN_D13 -to emif_hps_mem_mem_dq[29]
228 PIN_A12 -to emif_hps_mem_mem_dq[30]
229 PIN_C12 -to emif_hps_mem_mem_dq[31]
230 PIN_U24 -to emif_hps_mem_mem_dq[32]
231 PIN_W24 -to emif_hps_mem_mem_dq[33]
232 PIN_T23 -to emif_hps_mem_mem_dq[34]
233 PIN_V23 -to emif_hps_mem_mem_dq[35]
234 PIN_U20 -to emif_hps_mem_mem_dq[36]
235 PIN_W20 -to emif_hps_mem_mem_dq[37]
236 PIN_T19 -to emif_hps_mem_mem_dq[38]
237 PIN_V19 -to emif_hps_mem_mem_dq[39]
238 PIN_L24 -to emif_hps_mem_mem_dq[40]
239 PIN_N24 -to emif_hps_mem_mem_dq[41]
240 PIN_M23 -to emif_hps_mem_mem_dq[42]
241 PIN_P23 -to emif_hps_mem_mem_dq[43]
242 PIN_L20 -to emif_hps_mem_mem_dq[44]
243 PIN_P19 -to emif_hps_mem_mem_dq[45]
244 PIN_N20 -to emif_hps_mem_mem_dq[46]
245 PIN_M19 -to emif_hps_mem_mem_dq[47]
246 PIN_M31 -to emif_hps_mem_mem_dq[48]
247 PIN_P31 -to emif_hps_mem_mem_dq[49]
248 PIN_L30 -to emif_hps_mem_mem_dq[50]
249 PIN_N30 -to emif_hps_mem_mem_dq[51]
250 PIN_M27 -to emif_hps_mem_mem_dq[52]
251 PIN_P27 -to emif_hps_mem_mem_dq[53]
252 PIN_L26 -to emif_hps_mem_mem_dq[54]
253 PIN_N26 -to emif_hps_mem_mem_dq[55]
254 PIN_T31 -to emif_hps_mem_mem_dq[56]
255 PIN_V31 -to emif_hps_mem_mem_dq[57]
256 PIN_U30 -to emif_hps_mem_mem_dq[58]
257 PIN_W30 -to emif_hps_mem_mem_dq[59]
258 PIN_T27 -to emif_hps_mem_mem_dq[60]
259 PIN_W26 -to emif_hps_mem_mem_dq[61]
260 PIN_V27 -to emif_hps_mem_mem_dq[62]
261 PIN_U26 -to emif_hps_mem_mem_dq[63]
262 PIN_U10 -to emif_hps_mem_mem_dq[64]
263 PIN_W10 -to emif_hps_mem_mem_dq[65]
264 PIN_T9 -to emif_hps_mem_mem_dq[66]
265 PIN_V9 -to emif_hps_mem_mem_dq[67]
266 PIN_U6 -to emif_hps_mem_mem_dq[68]
267 PIN_W6 -to emif_hps_mem_mem_dq[69]
268 PIN_T5 -to emif_hps_mem_mem_dq[70]
269 PIN_V5 -to emif_hps_mem_mem_dq[71]
270 PIN_M17 -to emif_hps_mem_mem_bg[1] -comment IOBANK_3D

View file

@ -43,3 +43,24 @@ FITTER_AGGRESSIVE_ROUTABILITY_OPTIMIZATION ALWAYS
GLOBAL_PLACEMENT_EFFORT "MAXIMUM EFFORT"
QII_AUTO_PACKED_REGISTERS SPARSE
OPTIMIZATION_TECHNIQUE SPEED
AUTO_RESTART_CONFIGURATION OFF
USE_PWRMGT_SCL SDM_IO14
USE_PWRMGT_SDA SDM_IO11
USE_CONF_DONE SDM_IO16
USE_INIT_DONE SDM_IO0
USE_CVP_CONFDONE SDM_IO10
POWER_APPLY_THERMAL_MARGIN ADDITIONAL
PWRMGT_BUS_SPEED_MODE "100 KHZ"
PWRMGT_SLAVE_DEVICE_TYPE ED8401
PWRMGT_SLAVE_DEVICE0_ADDRESS 47
PWRMGT_SLAVE_DEVICE1_ADDRESS 00
PWRMGT_SLAVE_DEVICE2_ADDRESS 00
PWRMGT_SLAVE_DEVICE3_ADDRESS 00
PWRMGT_SLAVE_DEVICE4_ADDRESS 00
PWRMGT_SLAVE_DEVICE5_ADDRESS 00
PWRMGT_SLAVE_DEVICE6_ADDRESS 00
PWRMGT_SLAVE_DEVICE7_ADDRESS 00
PWRMGT_TRANSLATED_VOLTAGE_VALUE_UNIT VOLTS
PWRMGT_PAGE_COMMAND_ENABLE OFF
PWRMGT_VOLTAGE_OUTPUT_FORMAT "LINEAR FORMAT"
PWRMGT_LINEAR_FORMAT_N "-13"
Can't render this file because it contains an unexpected character in line 3 and column 28.

View file

@ -44,7 +44,57 @@ module cva6_altera (
input logic [ 0:0] ddr4_alert_n,
input logic oct_rzqin ,
output logic [ 3:0] led
output logic [ 3:0] led ,
//HPS
// HPS EMIF
output wire [0:0] emif_hps_mem_mem_ck,
output wire [0:0] emif_hps_mem_mem_ck_n,
output wire [16:0] emif_hps_mem_mem_a,
output wire [0:0] emif_hps_mem_mem_act_n,
output wire [1:0] emif_hps_mem_mem_ba,
output wire [1:0] emif_hps_mem_mem_bg,
output wire [0:0] emif_hps_mem_mem_cke,
output wire [0:0] emif_hps_mem_mem_cs_n,
output wire [0:0] emif_hps_mem_mem_odt,
output wire [0:0] emif_hps_mem_mem_reset_n,
output wire [0:0] emif_hps_mem_mem_par,
input wire [0:0] emif_hps_mem_mem_alert_n,
input wire emif_hps_oct_oct_rzqin,
input wire emif_hps_pll_ref_clk_p,
inout wire [8-1:0] emif_hps_mem_mem_dbi_n,
inout wire [64-1:0] emif_hps_mem_mem_dq,
inout wire [8-1:0] emif_hps_mem_mem_dqs,
inout wire [8-1:0] emif_hps_mem_mem_dqs_n,
input wire hps_jtag_tck,
input wire hps_jtag_tms,
output wire hps_jtag_tdo,
input wire hps_jtag_tdi,
output wire hps_sdmmc_CCLK,
inout wire hps_sdmmc_CMD,
inout wire hps_sdmmc_D0,
inout wire hps_sdmmc_D1,
inout wire hps_sdmmc_D2,
inout wire hps_sdmmc_D3,
output wire hps_emac0_TX_CLK,
input wire hps_emac0_RX_CLK,
output wire hps_emac0_TX_CTL,
input wire hps_emac0_RX_CTL,
output wire hps_emac0_TXD0,
output wire hps_emac0_TXD1,
input wire hps_emac0_RXD0,
input wire hps_emac0_RXD1,
output wire hps_emac0_TXD2,
output wire hps_emac0_TXD3,
input wire hps_emac0_RXD2,
input wire hps_emac0_RXD3,
inout wire hps_emac0_MDIO,
output wire hps_emac0_MDC,
input wire hps_uart0_RX,
output wire hps_uart0_TX,
inout wire hps_i2c1_SDA,
inout wire hps_i2c1_SCL,
inout wire hps_gpio1_io0,
input wire hps_ref_clk
);
// CVA6 Intel configuration
@ -99,7 +149,7 @@ AXI_BUS #(
.AXI_DATA_WIDTH ( AxiDataWidth ),
.AXI_ID_WIDTH ( AxiIdWidthSlaves ),
.AXI_USER_WIDTH ( AxiUserWidth )
) master[ariane_soc::NB_PERIPHERALS-1:0]();
) master[ariane_soc::NB_PERIPHERALS:0]();
AXI_BUS #(
.AXI_ADDR_WIDTH ( CVA6Cfg.XLEN ),
@ -170,7 +220,7 @@ assign rst = ~ddr_sync_reset;
// AXI Xbar
// ---------------
axi_pkg::xbar_rule_64_t [ariane_soc::NB_PERIPHERALS-1:0] addr_map;
axi_pkg::xbar_rule_64_t [ariane_soc::NB_PERIPHERALS:0] addr_map;
assign addr_map = '{
'{ idx: ariane_soc::Debug, start_addr: ariane_soc::DebugBase, end_addr: ariane_soc::DebugBase + ariane_soc::DebugLength },
@ -182,12 +232,13 @@ assign addr_map = '{
'{ idx: ariane_soc::SPI, start_addr: ariane_soc::SPIBase, end_addr: ariane_soc::SPIBase + ariane_soc::SPILength },
'{ idx: ariane_soc::Ethernet, start_addr: ariane_soc::EthernetBase, end_addr: ariane_soc::EthernetBase + ariane_soc::EthernetLength },
'{ idx: ariane_soc::GPIO, start_addr: ariane_soc::GPIOBase, end_addr: ariane_soc::GPIOBase + ariane_soc::GPIOLength },
'{ idx: ariane_soc::DRAM, start_addr: ariane_soc::DRAMBase, end_addr: ariane_soc::DRAMBase + ariane_soc::DRAMLength }
'{ idx: ariane_soc::DRAM, start_addr: ariane_soc::DRAMBase, end_addr: ariane_soc::DRAMBase + ariane_soc::DRAMLength },
'{ idx: ariane_soc::HPS, start_addr: ariane_soc::HPSBase, end_addr: ariane_soc::HPSBase + ariane_soc::HPSLength }
};
localparam axi_pkg::xbar_cfg_t AXI_XBAR_CFG = '{
NoSlvPorts: ariane_soc::NrSlaves,
NoMstPorts: ariane_soc::NB_PERIPHERALS,
NoMstPorts: ariane_soc::NB_PERIPHERALS+1,
MaxMstTrans: 1, // Probably requires update
MaxSlvTrans: 1, // Probably requires update
FallThrough: 1'b0,
@ -197,7 +248,7 @@ localparam axi_pkg::xbar_cfg_t AXI_XBAR_CFG = '{
UniqueIds: 1'b0,
AxiAddrWidth: AxiAddrWidth,
AxiDataWidth: AxiDataWidth,
NoAddrRules: ariane_soc::NB_PERIPHERALS
NoAddrRules: ariane_soc::NB_PERIPHERALS+1
};
axi_xbar_intf #(
@ -818,11 +869,11 @@ logic [6:0] ddr_sc_amm_burstcount;
logic [63:0] ddr_sc_amm_byteenable;
logic ddr_sc_amm_readdatavalid;
logic calbus_read, calbus_write, calbus_clk, ddr_pll_locked, ddr_rst_req, ddr_rst_done;
logic [19:0] calbus_addr;
logic [31:0] calbus_wdata;
logic [31:0] calbus_rdata;
logic [4095:0] calbus_seq_param_tbl;
logic calbus_read, calbus_write, calbus_clk, calbus_read1, calbus_write1, calbus_clk1, ddr_pll_locked, ddr_rst_req, ddr_rst_done;
logic [19:0] calbus_addr,calbus_addr1;
logic [31:0] calbus_wdata, calbus_wdata1;
logic [31:0] calbus_rdata, calbus_rdata1;
logic [4095:0] calbus_seq_param_tbl, calbus_seq_param_tbl1;
logic cal_success;
logic ddr_amm_wait_request;
@ -1040,9 +1091,214 @@ emif_cal ddr_calibration (
.calbus_wdata_0 (calbus_wdata), // output, width = 32, .calbus_wdata
.calbus_rdata_0 (calbus_rdata), // input, width = 32, .calbus_rdata
.calbus_seq_param_tbl_0 (calbus_seq_param_tbl), // input, width = 4096, .calbus_seq_param_tbl
.calbus_clk (calbus_clk) // output, width = 1, emif_calbus_clk.clk
);
.calbus_read_1 (calbus_read1), // output, width = 1, emif_calbus_1.calbus_read
.calbus_write_1 (calbus_write1), // output, width = 1, .calbus_write
.calbus_address_1 (calbus_addr1), // output, width = 20, .calbus_address
.calbus_wdata_1 (calbus_wdata1), // output, width = 32, .calbus_wdata
.calbus_rdata_1 (calbus_rdata1), // input, width = 32, .calbus_rdata
.calbus_seq_param_tbl_1 (calbus_seq_param_tbl1), // input, width = 4096, .calbus_seq_param_tbl
.calbus_clk (calbus_clk) // output, width = 1, emif_calbus_clk.clk
);
wire h2f_reset;
wire ninit_done;
assign system_reset_n = ~h2f_reset & ~ninit_done;
AXI_BUS #(
.AXI_ADDR_WIDTH ( CVA6Cfg.XLEN ),
.AXI_DATA_WIDTH ( 128 ),
.AXI_ID_WIDTH ( AxiIdWidthSlaves ),
.AXI_USER_WIDTH ( AxiUserWidth )
) master_to_hps[0:0]();
axi_dw_adapter #(
.ADDR_WIDTH (CVA6Cfg.XLEN),
.S_DATA_WIDTH (AxiAddrWidth),
.M_DATA_WIDTH (128),
.ID_WIDTH (AxiIdWidthSlaves)
)i_axi_dwidth_converter_hps(
.clk(clk),
.rst(~ndmreset_n),
.s_axi_awid(master[ariane_soc::HPS].aw_id),
.s_axi_awaddr(master[ariane_soc::HPS].aw_addr[31:0]),
.s_axi_awlen(master[ariane_soc::HPS].aw_len),
.s_axi_awsize(master[ariane_soc::HPS].aw_size),
.s_axi_awburst(master[ariane_soc::HPS].aw_burst),
.s_axi_awlock(master[ariane_soc::HPS].aw_lock),
.s_axi_awcache(master[ariane_soc::HPS].aw_cache),
.s_axi_awprot(master[ariane_soc::HPS].aw_prot),
.s_axi_awregion(master[ariane_soc::HPS].aw_region),
.s_axi_awqos(master[ariane_soc::HPS].aw_qos),
.s_axi_awvalid(master[ariane_soc::HPS].aw_valid),
.s_axi_awready(master[ariane_soc::HPS].aw_ready),
.s_axi_wdata(master[ariane_soc::HPS].w_data),
.s_axi_wstrb(master[ariane_soc::HPS].w_strb),
.s_axi_wlast(master[ariane_soc::HPS].w_last),
.s_axi_wvalid(master[ariane_soc::HPS].w_valid),
.s_axi_wready(master[ariane_soc::HPS].w_ready),
.s_axi_bid(master[ariane_soc::HPS].b_id),
.s_axi_bresp(master[ariane_soc::HPS].b_resp),
.s_axi_bvalid(master[ariane_soc::HPS].b_valid),
.s_axi_bready(master[ariane_soc::HPS].b_ready),
.s_axi_arid(master[ariane_soc::HPS].ar_id),
.s_axi_araddr(master[ariane_soc::HPS].ar_addr[31:0]),
.s_axi_arlen(master[ariane_soc::HPS].ar_len),
.s_axi_arsize(master[ariane_soc::HPS].ar_size),
.s_axi_arburst(master[ariane_soc::HPS].ar_burst),
.s_axi_arlock(master[ariane_soc::HPS].ar_lock),
.s_axi_arcache(master[ariane_soc::HPS].ar_cache),
.s_axi_arprot(master[ariane_soc::HPS].ar_prot),
.s_axi_arregion(master[ariane_soc::HPS].ar_region),
.s_axi_arqos(master[ariane_soc::HPS].ar_qos),
.s_axi_arvalid(master[ariane_soc::HPS].ar_valid),
.s_axi_arready(master[ariane_soc::HPS].ar_ready),
.s_axi_rid(master[ariane_soc::HPS].r_id),
.s_axi_rdata(master[ariane_soc::HPS].r_data),
.s_axi_rresp(master[ariane_soc::HPS].r_resp),
.s_axi_rlast(master[ariane_soc::HPS].r_last),
.s_axi_rvalid(master[ariane_soc::HPS].r_valid),
.s_axi_rready(master[ariane_soc::HPS].r_ready),
.m_axi_awaddr(master_to_hps[0].aw_addr),
.m_axi_awlen(master_to_hps[0].aw_len),
.m_axi_awsize(master_to_hps[0].aw_size),
.m_axi_awburst(master_to_hps[0].aw_burst),
.m_axi_awlock(master_to_hps[0].aw_lock),
.m_axi_awcache(master_to_hps[0].aw_cache),
.m_axi_awprot(master_to_hps[0].aw_prot),
.m_axi_awregion(master_to_hps[0].aw_region),
.m_axi_awqos(master_to_hps[0].aw_qos),
.m_axi_awvalid(master_to_hps[0].aw_valid),
.m_axi_awready(master_to_hps[0].aw_ready),
.m_axi_wdata(master_to_hps[0].w_data ),
.m_axi_wstrb(master_to_hps[0].w_strb),
.m_axi_wlast(master_to_hps[0].w_last),
.m_axi_wvalid(master_to_hps[0].w_valid),
.m_axi_wready(master_to_hps[0].w_ready),
.m_axi_bresp(master_to_hps[0].b_resp),
.m_axi_bvalid(master_to_hps[0].b_valid),
.m_axi_bready(master_to_hps[0].b_ready),
.m_axi_araddr(master_to_hps[0].ar_addr),
.m_axi_arlen(master_to_hps[0].ar_len),
.m_axi_arsize(master_to_hps[0].ar_size),
.m_axi_arburst(master_to_hps[0].ar_burst),
.m_axi_arlock(master_to_hps[0].ar_lock),
.m_axi_arcache(master_to_hps[0].ar_cache),
.m_axi_arprot(master_to_hps[0].ar_prot),
.m_axi_arregion(master_to_hps[0].ar_region),
.m_axi_arqos(master_to_hps[0].ar_qos),
.m_axi_arvalid(master_to_hps[0].ar_valid),
.m_axi_arready(master_to_hps[0].ar_ready),
.m_axi_rdata(master_to_hps[0].r_data),
.m_axi_rresp(master_to_hps[0].r_resp),
.m_axi_rlast(master_to_hps[0].r_last),
.m_axi_rvalid(master_to_hps[0].r_valid),
.m_axi_rready(master_to_hps[0].r_ready)
);
system hps_minimal (
.hps_hps_io_EMAC0_TX_CLK (hps_emac0_TX_CLK), // output, width = 1, hps_hps_io.EMAC0_TX_CLK
.hps_hps_io_EMAC0_TXD0 (hps_emac0_TXD0), // output, width = 1, .EMAC0_TXD0
.hps_hps_io_EMAC0_TXD1 (hps_emac0_TXD1), // output, width = 1, .EMAC0_TXD1
.hps_hps_io_EMAC0_TXD2 (hps_emac0_TXD2), // output, width = 1, .EMAC0_TXD2
.hps_hps_io_EMAC0_TXD3 (hps_emac0_TXD3), // output, width = 1, .EMAC0_TXD3
.hps_hps_io_EMAC0_RX_CTL (hps_emac0_RX_CTL), // input, width = 1, .EMAC0_RX_CTL
.hps_hps_io_EMAC0_TX_CTL (hps_emac0_TX_CTL), // output, width = 1, .EMAC0_TX_CTL
.hps_hps_io_EMAC0_RX_CLK (hps_emac0_RX_CLK), // input, width = 1, .EMAC0_RX_CLK
.hps_hps_io_EMAC0_RXD0 (hps_emac0_RXD0), // input, width = 1, .EMAC0_RXD0
.hps_hps_io_EMAC0_RXD1 (hps_emac0_RXD1), // input, width = 1, .EMAC0_RXD1
.hps_hps_io_EMAC0_RXD2 (hps_emac0_RXD2), // input, width = 1, .EMAC0_RXD2
.hps_hps_io_EMAC0_RXD3 (hps_emac0_RXD3), // input, width = 1, .EMAC0_RXD3
.hps_hps_io_EMAC0_MDIO (hps_emac0_MDIO), // inout, width = 1, .EMAC0_MDIO
.hps_hps_io_EMAC0_MDC (hps_emac0_MDC), // output, width = 1, .EMAC0_MDC
.hps_hps_io_SDMMC_CMD (hps_sdmmc_CMD), // inout, width = 1, .SDMMC_CMD
.hps_hps_io_SDMMC_D0 (hps_sdmmc_D0), // inout, width = 1, .SDMMC_D0
.hps_hps_io_SDMMC_D1 (hps_sdmmc_D1), // inout, width = 1, .SDMMC_D1
.hps_hps_io_SDMMC_D2 (hps_sdmmc_D2), // inout, width = 1, .SDMMC_D2
.hps_hps_io_SDMMC_D3 (hps_sdmmc_D3), // inout, width = 1, .SDMMC_D3
.hps_hps_io_SDMMC_CCLK (hps_sdmmc_CCLK), // output, width = 1, .SDMMC_CCLK
.hps_hps_io_UART0_RX (hps_uart0_RX), // input, width = 1, .UART0_RX
.hps_hps_io_UART0_TX (hps_uart0_TX), // output, width = 1, .UART0_TX
.hps_hps_io_I2C1_SDA (hps_i2c1_SDA), // inout, width = 1, .I2C1_SDA
.hps_hps_io_I2C1_SCL (hps_i2c1_SCL), // inout, width = 1, .I2C1_SCL
.hps_hps_io_gpio1_io0 (hps_gpio1_io0), // inout, width = 1, .gpio1_io0
.hps_hps_io_jtag_tck (hps_jtag_tck), // input, width = 1, .jtag_tck
.hps_hps_io_jtag_tms (hps_jtag_tms), // input, width = 1, .jtag_tms
.hps_hps_io_jtag_tdo (hps_jtag_tdo), // output, width = 1, .jtag_tdo
.hps_hps_io_jtag_tdi (hps_jtag_tdi), // input, width = 1, .jtag_tdi
.hps_hps_io_hps_osc_clk (hps_ref_clk), // input, width = 1, .hps_osc_clk
.h2f_reset_reset (h2f_reset), // output, width = 1, h2f_reset.reset
.hps_f2h_axi_clock_clk (clk), // input, width = 1, hps_f2h_axi_clock.clk
.hps_f2h_axi_reset_reset_n(ndmreset_n), // input, width = 1, hps_f2h_axi_reset.reset_n
.hps_emif_pll_ref_clk_clk (emif_hps_pll_ref_clk_p), // input, width = 1, hps_emif_pll_ref_clk.clk
.hps_emif_oct_oct_rzqin (emif_hps_oct_oct_rzqin), // input, width = 1, hps_emif_oct.oct_rzqin
.hps_emif_mem_mem_ck (emif_hps_mem_mem_ck), // output, width = 1, hps_emif_mem.mem_ck
.hps_emif_mem_mem_ck_n (emif_hps_mem_mem_ck_n), // output, width = 1, .mem_ck_n
.hps_emif_mem_mem_a (emif_hps_mem_mem_a), // output, width = 17, .mem_a
.hps_emif_mem_mem_act_n (emif_hps_mem_mem_act_n), // output, width = 1, .mem_act_n
.hps_emif_mem_mem_ba (emif_hps_mem_mem_ba), // output, width = 2, .mem_ba
.hps_emif_mem_mem_bg (emif_hps_mem_mem_bg), // output, width = 2, .mem_bg
.hps_emif_mem_mem_cke (emif_hps_mem_mem_cke), // output, width = 1, .mem_cke
.hps_emif_mem_mem_cs_n (emif_hps_mem_mem_cs_n), // output, width = 1, .mem_cs_n
.hps_emif_mem_mem_odt (emif_hps_mem_mem_odt), // output, width = 1, .mem_odt
.hps_emif_mem_mem_reset_n (emif_hps_mem_mem_reset_n), // output, width = 1, .mem_reset_n
.hps_emif_mem_mem_par (emif_hps_mem_mem_par), // output, width = 1, .mem_par
.hps_emif_mem_mem_alert_n (emif_hps_mem_mem_alert_n), // input, width = 1, .mem_alert_n
.hps_emif_mem_mem_dqs (emif_hps_mem_mem_dqs), // inout, width = 8, .mem_dqs
.hps_emif_mem_mem_dqs_n (emif_hps_mem_mem_dqs_n), // inout, width = 8, .mem_dqs_n
.hps_emif_mem_mem_dq (emif_hps_mem_mem_dq), // inout, width = 64, .mem_dq
.hps_emif_mem_mem_dbi_n (emif_hps_mem_mem_dbi_n), // inout, width = 8, .mem_dbi_n
.hps_emif_emif_calbus_calbus_read (calbus_read1), // input, width = 1, hps_emif_emif_calbus.calbus_read
.hps_emif_emif_calbus_calbus_write (calbus_write1), // input, width = 1, .calbus_write
.hps_emif_emif_calbus_calbus_address (calbus_address1), // input, width = 20, .calbus_address
.hps_emif_emif_calbus_calbus_wdata (calbus_wdata1), // input, width = 32, .calbus_wdata
.hps_emif_emif_calbus_calbus_rdata (calbus_rdata1), // output, width = 32, .calbus_rdata
.hps_emif_emif_calbus_calbus_seq_param_tbl (calbus_seq_param_tbl1), // output, width = 4096, .calbus_seq_param_tbl
.hps_emif_emif_calbus_clk_clk (calbus_clk), // input, width = 1, hps_emif_emif_calbus_clk.clk
.ninit_done_ninit_done (ninit_done), // output, width = 1, ninit_done.ninit_done
.system_intel_cache_coherency_translator_clock_clk (clk), // input, width = 1, system_intel_cache_coherency_translator_clock.clk
.system_intel_cache_coherency_translator_reset_reset (~ndmreset_n), // input, width = 1, system_intel_cache_coherency_translator_reset.reset
.system_intel_cache_coherency_translator_s0_araddr (master_to_hps[0].ar_addr), // input, width = 32, system_intel_cache_coherency_translator_s0.araddr
.system_intel_cache_coherency_translator_s0_arburst (master_to_hps[0].ar_burst), // input, width = 2, .arburst
.system_intel_cache_coherency_translator_s0_arcache (master_to_hps[0].ar_cache), // input, width = 4, .arcache
.system_intel_cache_coherency_translator_s0_arid (master_to_hps[0].ar_id), // input, width = 5, .arid
.system_intel_cache_coherency_translator_s0_arlen (master_to_hps[0].ar_len), // input, width = 8, .arlen
.system_intel_cache_coherency_translator_s0_arlock (master_to_hps[0].ar_lock), // input, width = 1, .arlock
.system_intel_cache_coherency_translator_s0_arprot (master_to_hps[0].ar_prot), // input, width = 3, .arprot
.system_intel_cache_coherency_translator_s0_arready (master_to_hps[0].ar_ready), // output, width = 1, .arready
.system_intel_cache_coherency_translator_s0_arsize (master_to_hps[0].ar_size), // input, width = 3, .arsize
.system_intel_cache_coherency_translator_s0_arvalid (master_to_hps[0].ar_valid), // input, width = 1, .arvalid
.system_intel_cache_coherency_translator_s0_awaddr (master_to_hps[0].aw_addr), // input, width = 32, .awaddr
.system_intel_cache_coherency_translator_s0_awburst (master_to_hps[0].aw_burst), // input, width = 2, .awburst
.system_intel_cache_coherency_translator_s0_awcache (master_to_hps[0].aw_cache), // input, width = 4, .awcache
.system_intel_cache_coherency_translator_s0_awid (master_to_hps[0].aw_id), // input, width = 5, .awid
.system_intel_cache_coherency_translator_s0_awlen (master_to_hps[0].aw_len), // input, width = 8, .awlen
.system_intel_cache_coherency_translator_s0_awlock (master_to_hps[0].aw_lock), // input, width = 1, .awlock
.system_intel_cache_coherency_translator_s0_awprot (master_to_hps[0].aw_prot), // input, width = 3, .awprot
.system_intel_cache_coherency_translator_s0_awready (master_to_hps[0].aw_ready), // output, width = 1, .awready
.system_intel_cache_coherency_translator_s0_awsize (master_to_hps[0].aw_size), // input, width = 3, .awsize
.system_intel_cache_coherency_translator_s0_awvalid (master_to_hps[0].aw_valid), // input, width = 1, .awvalid
.system_intel_cache_coherency_translator_s0_bid (master_to_hps[0].b_id), // output, width = 5, .bid
.system_intel_cache_coherency_translator_s0_bready (master_to_hps[0].b_ready), // input, width = 1, .bready
.system_intel_cache_coherency_translator_s0_bresp (master_to_hps[0].b_resp), // output, width = 2, .bresp
.system_intel_cache_coherency_translator_s0_bvalid (master_to_hps[0].b_valid), // output, width = 1, .bvalid
.system_intel_cache_coherency_translator_s0_rdata (master_to_hps[0].r_data), // output, width = 128, .rdata
.system_intel_cache_coherency_translator_s0_rid (master_to_hps[0].r_id), // output, width = 5, .rid
.system_intel_cache_coherency_translator_s0_rlast (master_to_hps[0].r_last), // output, width = 1, .rlast
.system_intel_cache_coherency_translator_s0_rready (master_to_hps[0].r_ready), // input, width = 1, .rready
.system_intel_cache_coherency_translator_s0_rresp (master_to_hps[0].r_resp), // output, width = 2, .rresp
.system_intel_cache_coherency_translator_s0_rvalid (master_to_hps[0].r_valid), // output, width = 1, .rvalid
.system_intel_cache_coherency_translator_s0_wdata (master_to_hps[0].w_data), // input, width = 128, .wdata
.system_intel_cache_coherency_translator_s0_wlast (master_to_hps[0].w_last), // input, width = 1, .wlast
.system_intel_cache_coherency_translator_s0_wready (master_to_hps[0].w_ready), // output, width = 1, .wready
.system_intel_cache_coherency_translator_s0_wstrb (master_to_hps[0].w_strb), // input, width = 16, .wstrb
.system_intel_cache_coherency_translator_s0_wvalid (master_to_hps[0].w_valid) // input, width = 1, .wvalid
);
//
//clocks

View file

@ -29,12 +29,12 @@ package ariane_soc;
PLIC = 6,
CLINT = 7,
ROM = 8,
Debug = 9
Debug = 9,
HPS = 10
} axi_slaves_t;
localparam NB_PERIPHERALS = Debug + 1;
localparam logic[63:0] DebugLength = 64'h1000;
localparam logic[63:0] ROMLength = 64'h10000;
localparam logic[63:0] CLINTLength = 64'hC0000;
@ -44,6 +44,7 @@ package ariane_soc;
localparam logic[63:0] SPILength = 64'h800000;
localparam logic[63:0] EthernetLength = 64'h10000;
localparam logic[63:0] GPIOLength = 64'h1000;
localparam logic[63:0] HPSLength = 64'h800000;
`ifdef NEXYS_VIDEO
localparam logic[63:0] DRAMLength = 64'h20000000; // 512MByte of DDR on Nexys video board
`else
@ -63,7 +64,8 @@ package ariane_soc;
SPIBase = 64'h2000_0000,
EthernetBase = 64'h3000_0000,
GPIOBase = 64'h4000_0000,
DRAMBase = 64'h8000_0000
DRAMBase = 64'h8000_0000,
HPSBase = 64'hFF80_0000
} soc_bus_start_t;
localparam NrRegion = 1;