diff --git a/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.fpga.yaml b/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.fpga.yaml index 87a56501014ef31f56ea825959ad286ac766af87..049d49e757afc23cc41cd45851f0291976895032 100644 --- a/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.fpga.yaml +++ b/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.fpga.yaml @@ -199,6 +199,8 @@ peripherals: ############################################################################# - peripheral_name: si/si + parameter_overrides: + - { name: g_nof_streams, value: c_S_pn } mm_port_names: - REG_SI diff --git a/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.mmap.gold b/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.mmap.gold index 8f34189c14fb832d6b2bb80947a5c62548138a71..c5ba7e8ef763f59d004eb353dc4bbaf7c3f69106 100644 --- a/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.mmap.gold +++ b/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.mmap.gold @@ -183,7 +183,7 @@ number_of_columns = 13 REG_DIAG_DATA_BUFFER_BSN 1 12 REG sync_cnt 0x000b0000 1 RO uint32 b[31:0] - - 2 - - - - word_cnt 0x000b0001 1 RO uint32 b[31:0] - - - RAM_DIAG_DATA_BUFFER_BSN 1 12 RAM data 0x000b4000 1024 RW uint32 b[31:0] b[15:0] - 1024 - REG_SI 1 1 REG enable 0x000b8000 1 RW uint32 b[0:0] - - - + REG_SI 1 1 REG enable 0x000b8000 1 RW uint32 b[11:0] - - - RAM_FIL_COEFS 2 16 RAM data 0x000c0000 1024 RW uint32 b[15:0] - 16384 1024 RAM_EQUALIZER_GAINS 1 12 RAM data 0x000c8000 1024 RW cint16_ir b[31:0] - - 1024 REG_DP_SELECTOR 1 1 REG input_select 0x000d0000 1 RW uint32 b[0:0] - - - diff --git a/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.mmap.qsys.gold b/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.mmap.qsys.gold index 1b53885aa12434da53bd7505e5b28defe6d2632c..53598b995cca9269d8dc866fc316918f6631aba0 100644 --- a/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.mmap.qsys.gold +++ b/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.mmap.qsys.gold @@ -183,7 +183,7 @@ number_of_columns = 13 REG_DIAG_DATA_BUFFER_BSN 1 12 REG sync_cnt 0x0004d1a0 1 RO uint32 b[31:0] - - 2 - - - - word_cnt 0x0004d1a1 1 RO uint32 b[31:0] - - - RAM_DIAG_DATA_BUFFER_BSN 1 12 RAM data 0x00200000 1024 RW uint32 b[31:0] b[15:0] - 1024 - REG_SI 1 1 REG enable 0x0004d2fa 1 RW uint32 b[0:0] - - - + REG_SI 1 1 REG enable 0x0004d2fa 1 RW uint32 b[11:0] - - - RAM_FIL_COEFS 2 16 RAM data 0x00030000 1024 RW uint32 b[15:0] - 16384 1024 RAM_EQUALIZER_GAINS 1 12 RAM data 0x00040000 1024 RW cint16_ir b[31:0] - - 1024 REG_DP_SELECTOR 1 1 REG input_select 0x0004d2f6 1 RW uint32 b[0:0] - - - diff --git a/applications/lofar2/designs/lofar2_unb2c_sdp_station/lofar2_unb2c_sdp_station.fpga.yaml b/applications/lofar2/designs/lofar2_unb2c_sdp_station/lofar2_unb2c_sdp_station.fpga.yaml index d82446632b6a9a0ca53ac9bb6d3f8fe2a71474b3..b350714e1ecfbd8ff5c857721530b21153f03412 100644 --- a/applications/lofar2/designs/lofar2_unb2c_sdp_station/lofar2_unb2c_sdp_station.fpga.yaml +++ b/applications/lofar2/designs/lofar2_unb2c_sdp_station/lofar2_unb2c_sdp_station.fpga.yaml @@ -199,6 +199,8 @@ peripherals: ############################################################################# - peripheral_name: si/si + parameter_overrides: + - { name: g_nof_streams, value: c_S_pn } mm_port_names: - REG_SI diff --git a/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G/hdllib.cfg b/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G/hdllib.cfg new file mode 100644 index 0000000000000000000000000000000000000000..05fda726d03ecaa75e70a78a485a8f8f63a8dcc3 --- /dev/null +++ b/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G/hdllib.cfg @@ -0,0 +1,119 @@ +hdl_lib_name = unb2c_test_ddr_16G +hdl_library_clause_name = unb2c_test_ddr_16G_lib +hdl_lib_uses_synth = common mm technology unb2c_board unb2c_test +hdl_lib_uses_sim = +hdl_lib_technology = ip_arria10_e2sg +hdl_lib_include_ip = + # Comment all IP that is not used in this design + # DDR memory + ip_arria10_e2sg_ddr4_16g_1600_64b + ip_arria10_e2sg_ddr4_16g_1600_72b + +synth_files = + unb2c_test_ddr_16G.vhd + +test_bench_files = + tb_unb2c_test_ddr_16G.vhd + +regression_test_vhdl = + tb_unb2c_test_ddr_16G.vhd + + +[modelsim_project_file] +modelsim_copy_files = + ../../src/hex hex + + +[quartus_project_file] +synth_top_level_entity = + +quartus_copy_files = + quartus . + ../../quartus . + ../../src/hex hex + +quartus_qsf_files = + $RADIOHDL_WORK/boards/uniboard2c/libraries/unb2c_board/quartus/unb2c_board.qsf + +quartus_sdc_pre_files = + quartus/unb2c_test_ddr_16G.sdc + $RADIOHDL_WORK/boards/uniboard2c/libraries/unb2c_board/quartus/unb2c_board_pre.sdc + +quartus_sdc_files = + $RADIOHDL_WORK/boards/uniboard2c/libraries/unb2c_board/quartus/unb2c_board.sdc + +quartus_tcl_files = + quartus/unb2c_test_ddr_16G_pins.tcl + +quartus_vhdl_files = + +quartus_qip_files = + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr_16G/qsys_unb2c_test/qsys_unb2c_test.qip + +quartus_ip_files = + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_avs2_eth_coe_0.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_avs2_eth_coe_1.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_clk_0.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_jesd204b.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_jtag_uart_0.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_nios2_gen2_0.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_onchip_memory2_0.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_pio_jesd_ctrl.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_pio_pps.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_pio_system_info.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_pio_wdi.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_ram_diag_bg_10gbe.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_ram_diag_data_buffer_10gbe.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_ram_diag_data_buffer_bsn.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_ram_diag_data_buffer_ddr_MB_II.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_ram_diag_data_buffer_ddr_MB_I.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_ram_scrap.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_bsn_monitor_10GbE.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_bsn_monitor_input.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_bsn_scheduler.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_bsn_source.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_bg_10gbe.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_data_buffer_10gbe.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_data_buffer_bsn.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_data_buffer_ddr_MB_II.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_data_buffer_ddr_MB_I.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_rx_seq_10gbe.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_rx_seq_ddr_MB_II.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_rx_seq_ddr_MB_I.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_tx_seq_10gbe.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_tx_seq_ddr_MB_II.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_tx_seq_ddr_MB_I.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_dpmm_ctrl.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_dpmm_data.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_epcs.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_eth10g_back0.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_eth10g_back1.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_eth10g_qsfp_ring.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_fpga_temp_sens.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_fpga_voltage_sens.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_heater.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_io_ddr_MB_II.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_io_ddr_MB_I.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_mmdp_ctrl.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_mmdp_data.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_remu.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_tr_10GbE_back0.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_tr_10GbE_back1.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_tr_10GbE_qsfp_ring.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_wdi.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_rom_system_info.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_timer_0.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_bg_eth_0.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_hdr_dat_eth_0.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_bsn_monitor_v2_tx_eth_0.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_bsn_monitor_v2_rx_eth_0.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_strobe_total_count_tx_eth_0.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_strobe_total_count_rx_eth_0.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_bg_eth_1.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_hdr_dat_eth_1.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_bsn_monitor_v2_tx_eth_1.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_bsn_monitor_v2_rx_eth_1.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_strobe_total_count_tx_eth_1.ip + $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_strobe_total_count_rx_eth_1.ip + +nios2_app_userflags = -DCOMPILE_FOR_GEN2_UNB2 diff --git a/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G/quartus/unb2c_test_ddr_16G_pins.tcl b/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G/quartus/unb2c_test_ddr_16G_pins.tcl new file mode 100644 index 0000000000000000000000000000000000000000..776b733cab71d36b5b3bb51beafe10e7b9142542 --- /dev/null +++ b/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G/quartus/unb2c_test_ddr_16G_pins.tcl @@ -0,0 +1,576 @@ +############################################################################### +# +# Copyright (C) 2014 +# ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/> +# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +############################################################################### + +source $::env(RADIOHDL_WORK)/boards/uniboard2c/libraries/unb2c_board/quartus/pinning/unb2c_minimal_pins.tcl + +# module I: +set_location_assignment PIN_AP20 -to MB_I_OU.a[0] +set_location_assignment PIN_AR20 -to MB_I_OU.a[1] +set_location_assignment PIN_AP19 -to MB_I_OU.a[2] +set_location_assignment PIN_AR19 -to MB_I_OU.a[3] +set_location_assignment PIN_AR18 -to MB_I_OU.a[4] +set_location_assignment PIN_AT17 -to MB_I_OU.a[5] +set_location_assignment PIN_AU19 -to MB_I_OU.a[6] +set_location_assignment PIN_AT18 -to MB_I_OU.a[7] +set_location_assignment PIN_AL17 -to MB_I_OU.a[8] +set_location_assignment PIN_AM18 -to MB_I_OU.a[9] +set_location_assignment PIN_AM19 -to MB_I_OU.a[10] +set_location_assignment PIN_AN19 -to MB_I_OU.a[11] +set_location_assignment PIN_BA17 -to MB_I_OU.a[12] +set_location_assignment PIN_BD17 -to MB_I_OU.a[13] +set_location_assignment PIN_AY18 -to MB_I_OU.act_n +set_location_assignment PIN_AV29 -to MB_I_IN.alert_n +set_location_assignment PIN_BB16 -to MB_I_OU.ba[0] +set_location_assignment PIN_BD16 -to MB_I_OU.ba[1] +set_location_assignment PIN_BC16 -to MB_I_OU.bg[0] +set_location_assignment PIN_AW19 -to MB_I_OU.bg[1] +set_location_assignment PIN_BA15 -to MB_I_OU.a[15] +#set_location_assignment PIN_BC21 -to MB_I_IO.dq[64] +#set_location_assignment PIN_BA22 -to MB_I_IO.dq[65] +#set_location_assignment PIN_BD21 -to MB_I_IO.dq[66] +#set_location_assignment PIN_BB20 -to MB_I_IO.dq[67] +#set_location_assignment PIN_BA20 -to MB_I_IO.dq[68] +#set_location_assignment PIN_BD20 -to MB_I_IO.dq[69] +#set_location_assignment PIN_AY20 -to MB_I_IO.dq[70] +#set_location_assignment PIN_AY22 -to MB_I_IO.dq[71] +set_location_assignment PIN_AU18 -to MB_I_OU.ck[0] +#set_location_assignment PIN_AV18 -to MB_I_OU.ck_n[0] +set_location_assignment PIN_AT16 -to MB_I_OU.ck[1] +#set_location_assignment PIN_AU16 -to MB_I_OU.ck_n[1] +set_location_assignment PIN_BB19 -to MB_I_OU.cke[0] +set_location_assignment PIN_AP16 -to MB_I_OU.cke[1] +set_location_assignment PIN_AY19 -to MB_I_OU.cs_n[0] +set_location_assignment PIN_AN16 -to MB_I_OU.cs_n[1] +set_location_assignment PIN_BC29 -to MB_I_IO.dbi_n[0] +set_location_assignment PIN_AR27 -to MB_I_IO.dbi_n[1] +set_location_assignment PIN_BD24 -to MB_I_IO.dbi_n[2] +set_location_assignment PIN_AM23 -to MB_I_IO.dbi_n[3] +set_location_assignment PIN_AU12 -to MB_I_IO.dbi_n[4] +set_location_assignment PIN_AU13 -to MB_I_IO.dbi_n[5] +set_location_assignment PIN_AM14 -to MB_I_IO.dbi_n[6] +set_location_assignment PIN_AM16 -to MB_I_IO.dbi_n[7] +#set_location_assignment PIN_BA21 -to MB_I_IO.dbi_n[8] +set_location_assignment PIN_BA28 -to MB_I_IO.dqs[0] +set_location_assignment PIN_AM28 -to MB_I_IO.dqs[1] +set_location_assignment PIN_AV24 -to MB_I_IO.dqs[2] +set_location_assignment PIN_AN24 -to MB_I_IO.dqs[3] +set_location_assignment PIN_BC14 -to MB_I_IO.dqs[4] +set_location_assignment PIN_AW14 -to MB_I_IO.dqs[5] +set_location_assignment PIN_AN12 -to MB_I_IO.dqs[6] +set_location_assignment PIN_AK15 -to MB_I_IO.dqs[7] +#set_location_assignment PIN_BC22 -to MB_I_IO.dqs[8] + +set_location_assignment PIN_BD19 -to MB_I_OU.odt[0] +set_location_assignment PIN_AR17 -to MB_I_OU.odt[1] +set_location_assignment PIN_BC18 -to MB_I_OU.par +set_location_assignment PIN_BB15 -to MB_I_OU.a[16] + +set_location_assignment PIN_AW17 -to MB_I_REF_CLK + +set_location_assignment PIN_AV19 -to MB_I_OU.reset_n +set_location_assignment PIN_AY17 -to MB_I_IN.oct_rzqin +set_location_assignment PIN_BC17 -to MB_I_OU.a[14] + + +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.cke[1] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.cs_n[1] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.odt[1] +set_instance_assignment -name IO_STANDARD "1.2 V" -to MB_I_REF_CLK +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IN.oct_rzqin + +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[0] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[1] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[2] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[3] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[4] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[5] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[6] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[7] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[8] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[9] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[10] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[11] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[12] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[13] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.act_n +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.ba[0] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.ba[1] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.bg[0] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.bg[1] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[15] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V SSTL" -to MB_I_OU.ck[0] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V SSTL" -to MB_I_OU.ck[1] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.cke[0] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.cs_n[0] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.par +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[16] +set_instance_assignment -name IO_STANDARD "1.2 V" -to MB_I_OU.reset_n +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[14] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.odt[0] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IN.alert_n +#set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[64] +#set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[65] +#set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[66] +#set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[67] +#set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[68] +#set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[69] +#set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[70] +#set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[71] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dbi_n[0] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dbi_n[1] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dbi_n[2] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dbi_n[3] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dbi_n[4] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dbi_n[5] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dbi_n[6] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dbi_n[7] +#set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dbi_n[8] + +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_I_IO.dqs[0] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_I_IO.dqs[1] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_I_IO.dqs[2] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_I_IO.dqs[3] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_I_IO.dqs[4] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_I_IO.dqs[5] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_I_IO.dqs[6] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_I_IO.dqs[7] +#set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_I_IO.dqs[8] + +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[0] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[1] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[2] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[3] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[4] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[5] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[6] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[7] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[8] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[9] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[10] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[11] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[12] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[13] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[14] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[15] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[16] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[17] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[18] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[19] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[20] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[21] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[22] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[23] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[24] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[25] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[26] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[27] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[28] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[29] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[30] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[31] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[32] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[33] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[34] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[35] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[36] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[37] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[38] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[39] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[40] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[41] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[42] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[43] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[44] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[45] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[46] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[47] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[48] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[49] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[50] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[51] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[52] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[53] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[54] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[55] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[56] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[57] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[58] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[59] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[60] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[61] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[62] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[63] + +set_location_assignment PIN_M16 -to MB_I_IN.evt + +set_location_assignment PIN_AU29 -to MB_I_IO.dq[0] +set_location_assignment PIN_BC28 -to MB_I_IO.dq[1] +set_location_assignment PIN_AY29 -to MB_I_IO.dq[2] +set_location_assignment PIN_BB28 -to MB_I_IO.dq[3] +set_location_assignment PIN_BB29 -to MB_I_IO.dq[4] +set_location_assignment PIN_AW29 -to MB_I_IO.dq[5] +set_location_assignment PIN_BC27 -to MB_I_IO.dq[6] +set_location_assignment PIN_BD29 -to MB_I_IO.dq[7] +set_location_assignment PIN_AR28 -to MB_I_IO.dq[8] +set_location_assignment PIN_AR29 -to MB_I_IO.dq[9] +set_location_assignment PIN_AV27 -to MB_I_IO.dq[10] +set_location_assignment PIN_AU28 -to MB_I_IO.dq[11] +set_location_assignment PIN_AW27 -to MB_I_IO.dq[12] +set_location_assignment PIN_AT28 -to MB_I_IO.dq[13] +set_location_assignment PIN_AV28 -to MB_I_IO.dq[14] +set_location_assignment PIN_AP27 -to MB_I_IO.dq[15] +set_location_assignment PIN_BC24 -to MB_I_IO.dq[16] +set_location_assignment PIN_BB24 -to MB_I_IO.dq[17] +set_location_assignment PIN_BB23 -to MB_I_IO.dq[18] +set_location_assignment PIN_AW22 -to MB_I_IO.dq[19] +set_location_assignment PIN_BA23 -to MB_I_IO.dq[20] +set_location_assignment PIN_BC23 -to MB_I_IO.dq[21] +set_location_assignment PIN_AY23 -to MB_I_IO.dq[22] +set_location_assignment PIN_AY24 -to MB_I_IO.dq[23] +set_location_assignment PIN_AP22 -to MB_I_IO.dq[24] +set_location_assignment PIN_AN23 -to MB_I_IO.dq[25] +set_location_assignment PIN_AR23 -to MB_I_IO.dq[26] +set_location_assignment PIN_AT23 -to MB_I_IO.dq[27] +set_location_assignment PIN_AU23 -to MB_I_IO.dq[28] +set_location_assignment PIN_AV23 -to MB_I_IO.dq[29] +set_location_assignment PIN_AR24 -to MB_I_IO.dq[30] +set_location_assignment PIN_AP24 -to MB_I_IO.dq[31] +set_location_assignment PIN_AV12 -to MB_I_IO.dq[32] +set_location_assignment PIN_AY13 -to MB_I_IO.dq[33] +set_location_assignment PIN_BD14 -to MB_I_IO.dq[34] +set_location_assignment PIN_AY12 -to MB_I_IO.dq[35] +set_location_assignment PIN_BA13 -to MB_I_IO.dq[36] +set_location_assignment PIN_BA12 -to MB_I_IO.dq[37] +set_location_assignment PIN_AW12 -to MB_I_IO.dq[38] +set_location_assignment PIN_BB13 -to MB_I_IO.dq[39] +set_location_assignment PIN_AV13 -to MB_I_IO.dq[40] +set_location_assignment PIN_AR13 -to MB_I_IO.dq[41] +set_location_assignment PIN_AR15 -to MB_I_IO.dq[42] +set_location_assignment PIN_AP15 -to MB_I_IO.dq[43] +set_location_assignment PIN_AT15 -to MB_I_IO.dq[44] +set_location_assignment PIN_AU14 -to MB_I_IO.dq[45] +set_location_assignment PIN_AU15 -to MB_I_IO.dq[46] +set_location_assignment PIN_AV14 -to MB_I_IO.dq[47] +set_location_assignment PIN_AM13 -to MB_I_IO.dq[48] +set_location_assignment PIN_AT13 -to MB_I_IO.dq[49] +set_location_assignment PIN_AT12 -to MB_I_IO.dq[50] +set_location_assignment PIN_AP14 -to MB_I_IO.dq[51] +set_location_assignment PIN_AN13 -to MB_I_IO.dq[52] +set_location_assignment PIN_AK13 -to MB_I_IO.dq[53] +set_location_assignment PIN_AM12 -to MB_I_IO.dq[54] +set_location_assignment PIN_AL13 -to MB_I_IO.dq[55] +set_location_assignment PIN_AH13 -to MB_I_IO.dq[56] +set_location_assignment PIN_AL15 -to MB_I_IO.dq[57] +set_location_assignment PIN_AM15 -to MB_I_IO.dq[58] +set_location_assignment PIN_AJ14 -to MB_I_IO.dq[59] +set_location_assignment PIN_AJ12 -to MB_I_IO.dq[60] +set_location_assignment PIN_AL16 -to MB_I_IO.dq[61] +set_location_assignment PIN_AK12 -to MB_I_IO.dq[62] +set_location_assignment PIN_AH14 -to MB_I_IO.dq[63] +set_location_assignment PIN_AY28 -to MB_I_IO.dqs_n[0] +set_location_assignment PIN_AN28 -to MB_I_IO.dqs_n[1] +set_location_assignment PIN_AU24 -to MB_I_IO.dqs_n[2] +set_location_assignment PIN_AM24 -to MB_I_IO.dqs_n[3] +set_location_assignment PIN_BB14 -to MB_I_IO.dqs_n[4] +set_location_assignment PIN_AY14 -to MB_I_IO.dqs_n[5] +set_location_assignment PIN_AP12 -to MB_I_IO.dqs_n[6] +set_location_assignment PIN_AK14 -to MB_I_IO.dqs_n[7] +#set_location_assignment PIN_BD22 -to MB_I_IO.dqs_n[8] + + + + + +# module II: +set_location_assignment PIN_A29 -to MB_II_OU.a[0] +set_location_assignment PIN_B29 -to MB_II_OU.a[1] +set_location_assignment PIN_H29 -to MB_II_OU.a[2] +set_location_assignment PIN_G29 -to MB_II_OU.a[3] +set_location_assignment PIN_D29 -to MB_II_OU.a[4] +set_location_assignment PIN_E29 -to MB_II_OU.a[5] +set_location_assignment PIN_C29 -to MB_II_OU.a[6] +set_location_assignment PIN_C28 -to MB_II_OU.a[7] +set_location_assignment PIN_E30 -to MB_II_OU.a[8] +set_location_assignment PIN_D30 -to MB_II_OU.a[9] +set_location_assignment PIN_B28 -to MB_II_OU.a[10] +set_location_assignment PIN_A28 -to MB_II_OU.a[11] +set_location_assignment PIN_H27 -to MB_II_OU.a[12] +set_location_assignment PIN_E28 -to MB_II_OU.a[13] +set_location_assignment PIN_K28 -to MB_II_OU.act_n +set_location_assignment PIN_C16 -to MB_II_IN.alert_n +set_location_assignment PIN_C27 -to MB_II_OU.ba[0] +set_location_assignment PIN_A27 -to MB_II_OU.ba[1] +set_location_assignment PIN_B26 -to MB_II_OU.bg[0] +set_location_assignment PIN_L27 -to MB_II_OU.bg[1] +set_location_assignment PIN_F28 -to MB_II_OU.a[15] +set_location_assignment PIN_E24 -to MB_II_IO.dq[64] +set_location_assignment PIN_J25 -to MB_II_IO.dq[65] +set_location_assignment PIN_A25 -to MB_II_IO.dq[66] +set_location_assignment PIN_G25 -to MB_II_IO.dq[67] +set_location_assignment PIN_D25 -to MB_II_IO.dq[68] +set_location_assignment PIN_K25 -to MB_II_IO.dq[69] +set_location_assignment PIN_D24 -to MB_II_IO.dq[70] +set_location_assignment PIN_F25 -to MB_II_IO.dq[71] +set_location_assignment PIN_N27 -to MB_II_OU.ck[0] +#set_location_assignment PIN_M28 -to MB_II_OU.ck_n[0] ;# +set_location_assignment PIN_K27 -to MB_II_OU.ck[1] +#set_location_assignment PIN_J26 -to MB_II_OU.ck_n[1] ;# +set_location_assignment PIN_N28 -to MB_II_OU.cke[0] +set_location_assignment PIN_P26 -to MB_II_OU.cke[1] +set_location_assignment PIN_K29 -to MB_II_OU.cs_n[0] +set_location_assignment PIN_H26 -to MB_II_OU.cs_n[1] +set_location_assignment PIN_A16 -to MB_II_IO.dbi_n[0] +set_location_assignment PIN_M21 -to MB_II_IO.dbi_n[1] +set_location_assignment PIN_K22 -to MB_II_IO.dbi_n[2] +set_location_assignment PIN_D19 -to MB_II_IO.dbi_n[3] +set_location_assignment PIN_G30 -to MB_II_IO.dbi_n[4] +set_location_assignment PIN_R32 -to MB_II_IO.dbi_n[5] +set_location_assignment PIN_G32 -to MB_II_IO.dbi_n[6] +set_location_assignment PIN_AC32 -to MB_II_IO.dbi_n[7] +set_location_assignment PIN_E25 -to MB_II_IO.dbi_n[8] +set_location_assignment PIN_F17 -to MB_II_IO.dqs[0] +set_location_assignment PIN_L20 -to MB_II_IO.dqs[1] +set_location_assignment PIN_J22 -to MB_II_IO.dqs[2] +set_location_assignment PIN_B19 -to MB_II_IO.dqs[3] +set_location_assignment PIN_L31 -to MB_II_IO.dqs[4] +set_location_assignment PIN_P31 -to MB_II_IO.dqs[5] +set_location_assignment PIN_N33 -to MB_II_IO.dqs[6] +set_location_assignment PIN_T33 -to MB_II_IO.dqs[7] +set_location_assignment PIN_A26 -to MB_II_IO.dqs[8] + +set_location_assignment PIN_K30 -to MB_II_OU.odt[0] +set_location_assignment PIN_R27 -to MB_II_OU.odt[1] +set_location_assignment PIN_R28 -to MB_II_OU.par +set_location_assignment PIN_G28 -to MB_II_OU.a[16] + +set_location_assignment PIN_J29 -to MB_II_REF_CLK + +set_location_assignment PIN_L28 -to MB_II_OU.reset_n +set_location_assignment PIN_J27 -to MB_II_IN.oct_rzqin +set_location_assignment PIN_F27 -to MB_II_OU.a[14] + + +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.cke[1] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.cs_n[1] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.odt[1] +set_instance_assignment -name IO_STANDARD "1.2 V" -to MB_II_REF_CLK ;# +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IN.oct_rzqin ;# + +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[0] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[1] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[2] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[3] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[4] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[5] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[6] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[7] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[8] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[9] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[10] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[11] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[12] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[13] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.act_n +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.ba[0] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.ba[1] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.bg[0] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.bg[1] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[15] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V SSTL" -to MB_II_OU.ck[0] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V SSTL" -to MB_II_OU.ck[1] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.cke[0] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.cs_n[0] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.par +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[16] +set_instance_assignment -name IO_STANDARD "1.2 V" -to MB_II_OU.reset_n ;# +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[14] +set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.odt[0] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IN.alert_n ;# +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[64] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[65] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[66] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[67] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[68] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[69] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[70] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[71] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dbi_n[0] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dbi_n[1] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dbi_n[2] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dbi_n[3] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dbi_n[4] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dbi_n[5] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dbi_n[6] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dbi_n[7] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dbi_n[8] + +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_II_IO.dqs[0] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_II_IO.dqs[1] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_II_IO.dqs[2] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_II_IO.dqs[3] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_II_IO.dqs[4] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_II_IO.dqs[5] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_II_IO.dqs[6] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_II_IO.dqs[7] +set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_II_IO.dqs[8] + +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[0] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[1] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[2] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[3] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[4] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[5] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[6] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[7] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[8] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[9] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[10] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[11] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[12] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[13] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[14] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[15] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[16] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[17] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[18] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[19] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[20] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[21] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[22] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[23] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[24] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[25] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[26] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[27] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[28] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[29] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[30] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[31] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[32] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[33] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[34] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[35] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[36] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[37] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[38] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[39] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[40] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[41] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[42] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[43] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[44] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[45] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[46] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[47] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[48] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[49] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[50] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[51] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[52] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[53] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[54] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[55] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[56] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[57] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[58] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[59] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[60] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[61] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[62] +set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[63] + + + + +set_location_assignment PIN_A17 -to MB_II_IO.dq[0] +set_location_assignment PIN_B16 -to MB_II_IO.dq[1] +set_location_assignment PIN_D16 -to MB_II_IO.dq[2] +set_location_assignment PIN_A18 -to MB_II_IO.dq[3] +set_location_assignment PIN_B18 -to MB_II_IO.dq[4] +set_location_assignment PIN_C17 -to MB_II_IO.dq[5] +set_location_assignment PIN_E18 -to MB_II_IO.dq[6] +set_location_assignment PIN_F18 -to MB_II_IO.dq[7] +set_location_assignment PIN_R22 -to MB_II_IO.dq[8] +set_location_assignment PIN_J20 -to MB_II_IO.dq[9] +set_location_assignment PIN_L21 -to MB_II_IO.dq[10] +set_location_assignment PIN_M20 -to MB_II_IO.dq[11] +set_location_assignment PIN_J21 -to MB_II_IO.dq[12] +set_location_assignment PIN_P21 -to MB_II_IO.dq[13] +set_location_assignment PIN_R20 -to MB_II_IO.dq[14] +set_location_assignment PIN_N21 -to MB_II_IO.dq[15] +set_location_assignment PIN_L22 -to MB_II_IO.dq[16] +set_location_assignment PIN_G20 -to MB_II_IO.dq[17] +set_location_assignment PIN_H21 -to MB_II_IO.dq[18] +set_location_assignment PIN_N22 -to MB_II_IO.dq[19] +set_location_assignment PIN_P22 -to MB_II_IO.dq[20] +set_location_assignment PIN_F20 -to MB_II_IO.dq[21] +set_location_assignment PIN_G21 -to MB_II_IO.dq[22] +set_location_assignment PIN_F21 -to MB_II_IO.dq[23] +set_location_assignment PIN_E19 -to MB_II_IO.dq[24] +set_location_assignment PIN_B20 -to MB_II_IO.dq[25] +set_location_assignment PIN_A20 -to MB_II_IO.dq[26] +set_location_assignment PIN_G19 -to MB_II_IO.dq[27] +set_location_assignment PIN_D20 -to MB_II_IO.dq[28] +set_location_assignment PIN_E20 -to MB_II_IO.dq[29] +set_location_assignment PIN_D17 -to MB_II_IO.dq[30] +set_location_assignment PIN_C18 -to MB_II_IO.dq[31] +set_location_assignment PIN_F30 -to MB_II_IO.dq[32] +set_location_assignment PIN_L30 -to MB_II_IO.dq[33] +set_location_assignment PIN_M30 -to MB_II_IO.dq[34] +set_location_assignment PIN_C31 -to MB_II_IO.dq[35] +set_location_assignment PIN_D31 -to MB_II_IO.dq[36] +set_location_assignment PIN_H31 -to MB_II_IO.dq[37] +set_location_assignment PIN_J31 -to MB_II_IO.dq[38] +set_location_assignment PIN_F31 -to MB_II_IO.dq[39] +set_location_assignment PIN_P32 -to MB_II_IO.dq[40] +set_location_assignment PIN_R30 -to MB_II_IO.dq[41] +set_location_assignment PIN_U31 -to MB_II_IO.dq[42] +set_location_assignment PIN_W31 -to MB_II_IO.dq[43] +set_location_assignment PIN_P29 -to MB_II_IO.dq[44] +set_location_assignment PIN_P30 -to MB_II_IO.dq[45] +set_location_assignment PIN_V31 -to MB_II_IO.dq[46] +set_location_assignment PIN_R29 -to MB_II_IO.dq[47] +set_location_assignment PIN_M33 -to MB_II_IO.dq[48] +set_location_assignment PIN_J33 -to MB_II_IO.dq[49] +set_location_assignment PIN_H33 -to MB_II_IO.dq[50] +set_location_assignment PIN_H32 -to MB_II_IO.dq[51] +set_location_assignment PIN_J32 -to MB_II_IO.dq[52] +set_location_assignment PIN_K33 -to MB_II_IO.dq[53] +set_location_assignment PIN_K32 -to MB_II_IO.dq[54] +set_location_assignment PIN_L32 -to MB_II_IO.dq[55] +set_location_assignment PIN_AB33 -to MB_II_IO.dq[56] +set_location_assignment PIN_AA32 -to MB_II_IO.dq[57] +set_location_assignment PIN_W32 -to MB_II_IO.dq[58] +set_location_assignment PIN_U33 -to MB_II_IO.dq[59] +set_location_assignment PIN_Y33 -to MB_II_IO.dq[60] +set_location_assignment PIN_AA33 -to MB_II_IO.dq[61] +set_location_assignment PIN_V33 -to MB_II_IO.dq[62] +set_location_assignment PIN_Y32 -to MB_II_IO.dq[63] +set_location_assignment PIN_E17 -to MB_II_IO.dqs_n[0] +set_location_assignment PIN_K20 -to MB_II_IO.dqs_n[1] +set_location_assignment PIN_H22 -to MB_II_IO.dqs_n[2] +set_location_assignment PIN_C19 -to MB_II_IO.dqs_n[3] +set_location_assignment PIN_M31 -to MB_II_IO.dqs_n[4] +set_location_assignment PIN_N31 -to MB_II_IO.dqs_n[5] +set_location_assignment PIN_P33 -to MB_II_IO.dqs_n[6] +set_location_assignment PIN_T32 -to MB_II_IO.dqs_n[7] +set_location_assignment PIN_B25 -to MB_II_IO.dqs_n[8] + diff --git a/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G/tb_unb2c_test_ddr_16G.vhd b/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G/tb_unb2c_test_ddr_16G.vhd new file mode 100644 index 0000000000000000000000000000000000000000..e10c278e6e691ccee15c2cbf12f1bb1b7c096d5d --- /dev/null +++ b/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G/tb_unb2c_test_ddr_16G.vhd @@ -0,0 +1,38 @@ +------------------------------------------------------------------------------- +-- +-- Copyright (C) 2015 +-- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/> +-- JIVE (Joint Institute for VLBI in Europe) <http://www.jive.nl/> +-- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. +-- +------------------------------------------------------------------------------- + +LIBRARY IEEE, unb2c_test_lib; +USE IEEE.std_logic_1164.ALL; + + +ENTITY tb_unb2c_test_ddr_16G IS +END tb_unb2c_test_ddr_16G; + + +ARCHITECTURE tb OF tb_unb2c_test_ddr_16G IS +BEGIN + u_tb_unb2c_test : ENTITY unb2c_test_lib.tb_unb2c_test + GENERIC MAP ( + g_design_name => "unb2c_test_ddr_16G" + ); +END tb; + diff --git a/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G/unb2c_test_ddr_16G.vhd b/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G/unb2c_test_ddr_16G.vhd new file mode 100644 index 0000000000000000000000000000000000000000..3080e83b78142200481da6e3ac01969814c70734 --- /dev/null +++ b/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G/unb2c_test_ddr_16G.vhd @@ -0,0 +1,130 @@ +------------------------------------------------------------------------------- +-- +-- Copyright (C) 2015 +-- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/> +-- JIVE (Joint Institute for VLBI in Europe) <http://www.jive.nl/> +-- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. +-- +------------------------------------------------------------------------------- + +LIBRARY IEEE, common_lib, unb2c_board_lib, unb2c_test_lib, technology_lib, tech_ddr_lib; +USE IEEE.STD_LOGIC_1164.ALL; +USE IEEE.NUMERIC_STD.ALL; +USE common_lib.common_pkg.ALL; +USE unb2c_board_lib.unb2c_board_pkg.ALL; +USE technology_lib.technology_pkg.ALL; +USE tech_ddr_lib.tech_ddr_pkg.ALL; + + +ENTITY unb2c_test_ddr_16G IS + GENERIC ( + g_design_name : STRING := "unb2c_test_ddr_16G"; + g_design_note : STRING := "DDR: MB I and II"; + g_sim : BOOLEAN := FALSE; --Overridden by TB + g_sim_unb_nr : NATURAL := 0; + g_sim_node_nr : NATURAL := 0; + g_stamp_date : NATURAL := 0; -- Date (YYYYMMDD) -- set by QSF + g_stamp_time : NATURAL := 0; -- Time (HHMMSS) -- set by QSF + g_revision_id : STRING := "" -- revision ID -- set by QSF + ); + PORT ( + -- GENERAL + CLK : IN STD_LOGIC; -- System Clock + PPS : IN STD_LOGIC; -- System Sync + WDI : OUT STD_LOGIC; -- Watchdog Clear + INTA : INOUT STD_LOGIC; -- FPGA interconnect line + INTB : INOUT STD_LOGIC; -- FPGA interconnect line + + -- Others + VERSION : IN STD_LOGIC_VECTOR(c_unb2c_board_aux.version_w-1 DOWNTO 0); + ID : IN STD_LOGIC_VECTOR(c_unb2c_board_aux.id_w-1 DOWNTO 0); + TESTIO : INOUT STD_LOGIC_VECTOR(c_unb2c_board_aux.testio_w-1 DOWNTO 0); + + + -- 1GbE Control Interface + ETH_CLK : IN STD_LOGIC_VECTOR(c_unb2c_board_nof_eth-1 DOWNTO 0); + ETH_SGIN : IN STD_LOGIC_VECTOR(c_unb2c_board_nof_eth-1 DOWNTO 0); + ETH_SGOUT : OUT STD_LOGIC_VECTOR(c_unb2c_board_nof_eth-1 DOWNTO 0); + + -- DDR reference clocks + MB_I_REF_CLK : IN STD_LOGIC; -- Reference clock for MB_I + MB_II_REF_CLK : IN STD_LOGIC; -- Reference clock for MB_II + + -- SO-DIMM Memory Bank I + MB_I_IN : IN t_tech_ddr4_phy_in; + MB_I_IO : INOUT t_tech_ddr4_phy_io; + MB_I_OU : OUT t_tech_ddr4_phy_ou; + + -- SO-DIMM Memory Bank II + MB_II_IN : IN t_tech_ddr4_phy_in; + MB_II_IO : INOUT t_tech_ddr4_phy_io; + MB_II_OU : OUT t_tech_ddr4_phy_ou; + + QSFP_LED : OUT STD_LOGIC_VECTOR(c_unb2c_board_tr_qsfp_nof_leds-1 DOWNTO 0) + ); +END unb2c_test_ddr_16G; + + +ARCHITECTURE str OF unb2c_test_ddr_16G IS + +BEGIN + u_revision : ENTITY unb2c_test_lib.unb2c_test + GENERIC MAP ( + g_design_name => g_design_name, + g_design_note => g_design_note, + g_sim => g_sim, + g_sim_unb_nr => g_sim_unb_nr, + g_sim_node_nr => g_sim_node_nr, + g_stamp_date => g_stamp_date, + g_stamp_time => g_stamp_time, + g_revision_id => g_revision_id + ) + PORT MAP ( + -- GENERAL + CLK => CLK, + PPS => PPS, + WDI => WDI, + INTA => INTA, + INTB => INTB, + + -- Others + VERSION => VERSION, + ID => ID, + TESTIO => TESTIO, + + + -- 1GbE Control Interface + ETH_clk => ETH_clk, + ETH_SGIN => ETH_SGIN, + ETH_SGOUT => ETH_SGOUT, + + -- DDR reference clocks + MB_I_REF_CLK => MB_I_REF_CLK, + MB_II_REF_CLK => MB_II_REF_CLK, + + -- SO-DIMM Memory Bank I + MB_I_IN => MB_I_IN, + MB_I_IO => MB_I_IO, + MB_I_OU => MB_I_OU, + + -- SO-DIMM Memory Bank II + MB_II_IN => MB_II_IN, + MB_II_IO => MB_II_IO, + MB_II_OU => MB_II_OU, + + QSFP_LED => QSFP_LED + ); +END str; diff --git a/boards/uniboard2c/designs/unb2c_test/src/vhdl/unb2c_test.vhd b/boards/uniboard2c/designs/unb2c_test/src/vhdl/unb2c_test.vhd index 7a5dcff23ae8ff5e6716049f18ac0c0d1c0aa5ee..f584a6c375feb7ab4694d7e6fb1af511a3083148 100644 --- a/boards/uniboard2c/designs/unb2c_test/src/vhdl/unb2c_test.vhd +++ b/boards/uniboard2c/designs/unb2c_test/src/vhdl/unb2c_test.vhd @@ -180,7 +180,7 @@ ARCHITECTURE str OF unb2c_test IS -- ddr CONSTANT c_ddr_ctlr_data_w : NATURAL := func_tech_ddr_ctlr_data_w(c_ddr_MB_I); -- = 576, assume both MB_I and MB_II use the same ctlr_data_w - CONSTANT c_ddr_dp_data_w : NATURAL := 144; -- DDR4 with dq_w = 72, rsl = 8 so ctrl data width = 576 and therefore the mixed width FIFO ratio is 576 /144 = 4 + CONSTANT c_ddr_dp_data_w : NATURAL := c_ddr_ctlr_data_w / 4; -- DDR4 with dq_w = 72, rsl = 8 so ctrl data width = 576 and therefore the mixed width FIFO ratio is 576 /144 = 4 CONSTANT c_ddr_dp_seq_dat_w : NATURAL := 16; -- >= 1, test sequence data width. Choose c_ddr_dp_seq_dat_w <= c_ddr_dp_data_w. The seq data gets replicated to fill c_ddr_dp_data_w. CONSTANT c_ddr_dp_wr_fifo_depth : NATURAL := 256 * (c_ddr_ctlr_data_w/c_ddr_dp_data_w); -- defined at DP side of the FIFO, choose 256 * (ctrl_data_w/g_dp_data_w) to make full use of M9K which have at least 256 words CONSTANT c_ddr_dp_rd_fifo_depth : NATURAL := 256 * (c_ddr_ctlr_data_w/c_ddr_dp_data_w); -- defined at DP side of the FIFO, choose 256 * (ctrl_data_w/g_dp_data_w) or factors of 2 more to fit max number of read bursts diff --git a/boards/uniboard2c/designs/unb2c_test/src/vhdl/unb2c_test_pkg.vhd b/boards/uniboard2c/designs/unb2c_test/src/vhdl/unb2c_test_pkg.vhd index af5abbd581802a09607b7494b929966e3713a403..741947a20775c19e342ba9f3e3b8c44f6e0cdd6b 100644 --- a/boards/uniboard2c/designs/unb2c_test/src/vhdl/unb2c_test_pkg.vhd +++ b/boards/uniboard2c/designs/unb2c_test/src/vhdl/unb2c_test_pkg.vhd @@ -84,6 +84,7 @@ PACKAGE unb2c_test_pkg IS CONSTANT c_test_10GbE : t_unb2c_test_config := (FALSE,FALSE,FALSE, TRUE, TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,c_tech_ddr4_8g_1600m, c_tech_ddr4_8g_1600m); CONSTANT c_test_10GbE_qb : t_unb2c_test_config := (FALSE,FALSE,FALSE, TRUE,FALSE, TRUE,FALSE,FALSE,FALSE,FALSE,c_tech_ddr4_8g_1600m, c_tech_ddr4_8g_1600m); CONSTANT c_test_ddr : t_unb2c_test_config := (FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE, TRUE, TRUE,FALSE,c_tech_ddr4_8g_1600m, c_tech_ddr4_8g_1600m); + CONSTANT c_test_ddr_16G : t_unb2c_test_config := (FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE, TRUE, TRUE,FALSE,c_tech_ddr4_16g_1600m_64, c_tech_ddr4_16g_1600m_72_64); CONSTANT c_test_heater : t_unb2c_test_config := (FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE, TRUE,c_tech_ddr4_8g_1600m, c_tech_ddr4_8g_1600m); CONSTANT c_test_jesd204b : t_unb2c_test_config := (FALSE,FALSE,FALSE,FALSE,FALSE,FALSE, TRUE,FALSE,FALSE,FALSE,c_tech_ddr4_8g_1600m, c_tech_ddr4_8g_1600m); @@ -103,6 +104,7 @@ PACKAGE BODY unb2c_test_pkg IS ELSIF g_design_name = "unb2c_test_jesd204b" THEN RETURN c_test_jesd204b; ELSIF g_design_name = "unb2c_test_1GbE_I" THEN RETURN c_test_1GbE_I_UDP; ELSIF g_design_name = "unb2c_test_1GbE_II" THEN RETURN c_test_1GbE_II_UDP; + ELSIF g_design_name = "unb2c_test_ddr_16G" THEN RETURN c_test_ddr_16G; ELSE RETURN c_test_minimal; END IF; END; diff --git a/libraries/dsp/si/si.peripheral.yaml b/libraries/dsp/si/si.peripheral.yaml index 206534545d065f54e4b155f8ba1086225391e6c0..f32856fe37cc44bcb2a007011a7e9d070e84bbd8 100644 --- a/libraries/dsp/si/si.peripheral.yaml +++ b/libraries/dsp/si/si.peripheral.yaml @@ -8,6 +8,9 @@ hdl_library_description: "Spectral Inversion (SI)" peripherals: - peripheral_name: si # pi_si.py peripheral_description: "Spectral Inversion control." + parameters: + # Parameters of si_arr.vhd + - { name: g_nof_streams, value: 1 } mm_ports: # MM port for si_arr.vhd - mm_port_name: REG_SI @@ -15,6 +18,9 @@ peripherals: mm_port_description: "In the even Nyquist zones the sampled spectrum gets flipped in frequency. This flip can be compensated for by enabling spectral inversion (SI)." fields: - - field_name: enable - field_description: "When 0 then pass on the array of input signals, when 1 then enable spectral inversion for all the input signals." + field_description: | + "Set spectral inversion per input signal in [g_nof_streams-1:0]. + When enable[i] = 0 then pass on input signal i, when enable[i] = 1 + then enable spectral inversion for the input signal i." address_offset: 0x0 - mm_width: 1 + mm_width: g_nof_streams diff --git a/libraries/dsp/si/src/vhdl/si_arr.vhd b/libraries/dsp/si/src/vhdl/si_arr.vhd index faa86d371483f52f1a93f3903abc1393465f46e1..cb6a7a9339e7a6dc7763f3219843428ec345b729 100755 --- a/libraries/dsp/si/src/vhdl/si_arr.vhd +++ b/libraries/dsp/si/src/vhdl/si_arr.vhd @@ -56,9 +56,20 @@ END si_arr; ARCHITECTURE str OF si_arr IS - CONSTANT c_si_mem_reg : t_c_mem := (c_mem_reg_rd_latency, 1, 1, 1, '0'); + --TYPE t_c_mem IS RECORD + -- latency : NATURAL; -- read latency + -- adr_w : NATURAL; + -- dat_w : NATURAL; + -- nof_dat : NATURAL; -- optional, nof dat words <= 2**adr_w + -- init_sl : STD_LOGIC; -- optional, init all dat words to std_logic '0', '1' or 'X' + -- --init_file : STRING; -- "UNUSED", unconstrained length can not be in record + --END RECORD; - SIGNAL reg_si_en : STD_LOGIC_VECTOR(c_si_mem_reg.dat_w*c_si_mem_reg.nof_dat-1 DOWNTO 0); + -- Use one MM word to fit the si_en bits, so this suits g_nof_streams + -- <= c_word_w = 32. + CONSTANT c_si_mem_reg : t_c_mem := (c_mem_reg_rd_latency, 1, g_nof_streams, 1, '0'); + + SIGNAL reg_si_en : STD_LOGIC_VECTOR(g_nof_streams-1 DOWNTO 0); BEGIN @@ -88,7 +99,7 @@ BEGIN PORT MAP ( in_sosi => in_sosi_arr(I), out_sosi => out_sosi_arr(I), - si_en => reg_si_en(0), + si_en => reg_si_en(I), clk => dp_clk, rst => dp_rst ); diff --git a/libraries/technology/ddr/tech_ddr_arria10_e2sg.vhd b/libraries/technology/ddr/tech_ddr_arria10_e2sg.vhd index d936bdc4b7554ab45bff449f84b866d70b6ac42c..5b6f28915746718af3d4a3c20121f74b7c86d320 100644 --- a/libraries/technology/ddr/tech_ddr_arria10_e2sg.vhd +++ b/libraries/technology/ddr/tech_ddr_arria10_e2sg.vhd @@ -76,6 +76,7 @@ ARCHITECTURE str OF tech_ddr_arria10_e2sg IS CONSTANT c_gigabytes : NATURAL := func_tech_ddr_module_size(g_tech_ddr); CONSTANT c_ctlr_address_w : NATURAL := func_tech_ddr_ctlr_address_w(g_tech_ddr); + CONSTANT c_ctlr_ip_data_w : NATURAL := func_tech_ddr_ctlr_ip_data_w(g_tech_ddr); CONSTANT c_ctlr_data_w : NATURAL := func_tech_ddr_ctlr_data_w( g_tech_ddr); SIGNAL i_ctlr_gen_clk : STD_LOGIC; @@ -85,6 +86,10 @@ ARCHITECTURE str OF tech_ddr_arria10_e2sg IS SIGNAL local_cal_success : STD_LOGIC; SIGNAL local_cal_fail : STD_LOGIC; + SIGNAL amm_readdata : STD_LOGIC_VECTOR(c_ctlr_ip_data_w-1 DOWNTO 0) := (OTHERS => '0'); + SIGNAL amm_writedata : STD_LOGIC_VECTOR(c_ctlr_ip_data_w-1 DOWNTO 0) := (OTHERS => '0'); + + BEGIN ctlr_gen_clk <= i_ctlr_gen_clk; @@ -101,8 +106,8 @@ BEGIN amm_read_0 => ctlr_mosi.rd, -- .read amm_write_0 => ctlr_mosi.wr, -- .write amm_address_0 => ctlr_mosi.address(c_ctlr_address_w-1 DOWNTO 0), -- .address - amm_readdata_0 => ctlr_miso.rddata(c_ctlr_data_w-1 DOWNTO 0), -- .readdata - amm_writedata_0 => ctlr_mosi.wrdata(c_ctlr_data_w-1 DOWNTO 0), -- .writedata + amm_readdata_0 => ctlr_miso.rddata(c_ctlr_ip_data_w-1 DOWNTO 0), -- .readdata + amm_writedata_0 => ctlr_mosi.wrdata(c_ctlr_ip_data_w-1 DOWNTO 0), -- .writedata amm_burstcount_0 => ctlr_mosi.burstsize(g_tech_ddr.maxburstsize_w-1 DOWNTO 0), -- .burstcount amm_byteenable_0 => (OTHERS=>'1'), -- .byteenable amm_readdatavalid_0 => ctlr_miso.rdval, -- .readdatavalid @@ -155,8 +160,8 @@ BEGIN amm_read_0 => ctlr_mosi.rd, -- .read amm_write_0 => ctlr_mosi.wr, -- .write amm_address_0 => ctlr_mosi.address(c_ctlr_address_w-1 DOWNTO 0), -- .address - amm_readdata_0 => ctlr_miso.rddata(c_ctlr_data_w-1 DOWNTO 0), -- .readdata - amm_writedata_0 => ctlr_mosi.wrdata(c_ctlr_data_w-1 DOWNTO 0), -- .writedata + amm_readdata_0 => ctlr_miso.rddata(c_ctlr_ip_data_w-1 DOWNTO 0), -- .readdata + amm_writedata_0 => ctlr_mosi.wrdata(c_ctlr_ip_data_w-1 DOWNTO 0), -- .writedata amm_burstcount_0 => ctlr_mosi.burstsize(g_tech_ddr.maxburstsize_w-1 DOWNTO 0), -- .burstcount amm_byteenable_0 => (OTHERS=>'1'), -- .byteenable amm_readdatavalid_0 => ctlr_miso.rdval, -- .readdatavalid @@ -209,8 +214,8 @@ BEGIN amm_read_0 => ctlr_mosi.rd, -- .read amm_write_0 => ctlr_mosi.wr, -- .write amm_address_0 => ctlr_mosi.address(c_ctlr_address_w-1 DOWNTO 0), -- .address - amm_readdata_0 => ctlr_miso.rddata(c_ctlr_data_w-1 DOWNTO 0), -- .readdata - amm_writedata_0 => ctlr_mosi.wrdata(c_ctlr_data_w-1 DOWNTO 0), -- .writedata + amm_readdata_0 => ctlr_miso.rddata(c_ctlr_ip_data_w-1 DOWNTO 0), -- .readdata + amm_writedata_0 => ctlr_mosi.wrdata(c_ctlr_ip_data_w-1 DOWNTO 0), -- .writedata amm_burstcount_0 => ctlr_mosi.burstsize(g_tech_ddr.maxburstsize_w-1 DOWNTO 0), -- .burstcount amm_byteenable_0 => (OTHERS=>'1'), -- .byteenable amm_readdatavalid_0 => ctlr_miso.rdval, -- .readdatavalid @@ -263,8 +268,8 @@ BEGIN amm_read_0 => ctlr_mosi.rd, -- .read amm_write_0 => ctlr_mosi.wr, -- .write amm_address_0 => ctlr_mosi.address(c_ctlr_address_w-1 DOWNTO 0), -- .address - amm_readdata_0 => ctlr_miso.rddata(c_ctlr_data_w-1 DOWNTO 0), -- .readdata - amm_writedata_0 => ctlr_mosi.wrdata(c_ctlr_data_w-1 DOWNTO 0), -- .writedata + amm_readdata_0 => amm_readdata, -- .readdata + amm_writedata_0 => amm_writedata, -- .writedata amm_burstcount_0 => ctlr_mosi.burstsize(g_tech_ddr.maxburstsize_w-1 DOWNTO 0), -- .burstcount amm_byteenable_0 => (OTHERS=>'1'), -- .byteenable amm_readdatavalid_0 => ctlr_miso.rdval, -- .readdatavalid @@ -301,10 +306,25 @@ BEGIN --local_init_done => ctlr_miso.done, -- status.local_init_done -- local_init_done = ctlr_init_done originally and mapped to ctlr_miso.done for the DDR3 IP. For the DDR4 IP the local_cal_success and -- NOT local_cal_fail seem to serve as local_init_done + + gen_rewire_data : IF g_tech_ddr.mem_dq_w < g_tech_ddr.dq_w GENERATE -- Used when 64 bit modules are used in unb2c slot II as it only supports 72 bit IP (not 64 bit IP). + ctlr_miso.rddata(c_ctlr_data_w-1 DOWNTO 0) <= func_tech_ddr_rewire_72b_to_64b(g_tech_ddr, amm_readdata); + amm_writedata <= func_tech_ddr_rewire_64b_to_72b(g_tech_ddr, ctlr_mosi.wrdata(c_ctlr_data_w-1 DOWNTO 0)); - ctlr_miso.done <= local_cal_success AND NOT local_cal_fail WHEN rising_edge(i_ctlr_gen_clk); - ctlr_miso.cal_ok <= local_cal_success; - ctlr_miso.cal_fail <= local_cal_fail; + ctlr_miso.done <= '1'; + ctlr_miso.cal_ok <= '1'; + ctlr_miso.cal_fail <= '0'; + END GENERATE; + + + gen_no_rewire_data : IF g_tech_ddr.mem_dq_w = g_tech_ddr.dq_w GENERATE + ctlr_miso.rddata(c_ctlr_ip_data_w-1 DOWNTO 0) <= amm_readdata; + amm_writedata <= ctlr_mosi.wrdata(c_ctlr_ip_data_w-1 DOWNTO 0); + + ctlr_miso.done <= local_cal_success AND NOT local_cal_fail WHEN rising_edge(i_ctlr_gen_clk); + ctlr_miso.cal_ok <= local_cal_success; + ctlr_miso.cal_fail <= local_cal_fail; + END GENERATE; END GENERATE; diff --git a/libraries/technology/ddr/tech_ddr_pkg.vhd b/libraries/technology/ddr/tech_ddr_pkg.vhd index 79018075609422255cd3e366f9febd46258a3b77..894e988782ebaf62ed5d9017343291b3f72a6366 100644 --- a/libraries/technology/ddr/tech_ddr_pkg.vhd +++ b/libraries/technology/ddr/tech_ddr_pkg.vhd @@ -57,6 +57,7 @@ PACKAGE tech_ddr_pkg IS command_queue_depth : NATURAL; -- = 8 maxburstsize : NATURAL; -- = 64 maxburstsize_w : NATURAL; -- = 7 = ceil_log2(maxburstsize+1) + mem_dq_w : NATURAL; -- = 64 dq connected to the memory module, can be = dq_w or 64 whenn dq_w = 72 END RECORD; FUNCTION func_tech_sel_ddr(g_technology : NATURAL; g_ddr3, g_ddr4 : t_c_tech_ddr) RETURN t_c_tech_ddr; -- Select DDR3 or DDR4 dependent on the technology @@ -65,43 +66,46 @@ PACKAGE tech_ddr_pkg IS FUNCTION func_tech_ddr_dq_address_w( c_ddr : t_c_tech_ddr) RETURN NATURAL; -- return DDR address width for the DQ data at the PHY mts rate FUNCTION func_tech_ddr_ctlr_address_w(c_ddr : t_c_tech_ddr) RETURN NATURAL; -- return DDR address width for the controller data at the by rsl=4 reduced rate FUNCTION func_tech_ddr_ctlr_data_w( c_ddr : t_c_tech_ddr) RETURN NATURAL; -- return DDR data width for the controller data at the by rsl=4 reduced rate + FUNCTION func_tech_ddr_ctlr_ip_data_w(c_ddr : t_c_tech_ddr) RETURN NATURAL; -- return DDR data width for the controller data at the by rsl=4 reduced rate FUNCTION func_tech_ddr_module_size( c_ddr : t_c_tech_ddr) RETURN NATURAL; -- return DDR module size in GByte FUNCTION func_tech_ddr_sim_size(c_ddr : t_c_tech_ddr; sim_ctrl_addr_w : NATURAL) RETURN t_c_tech_ddr; -- derive sim_ddr from c_ddr (or alternatively use predefined c_tech_ddr*_sim) + FUNCTION func_tech_ddr_rewire_64b_to_72b(c_ddr : t_c_tech_ddr; vec_64b : STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR; + FUNCTION func_tech_ddr_rewire_72b_to_64b(c_ddr : t_c_tech_ddr; vec_72b : STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR; -- a a cs cs - -- name mts master rank a row col ba dq dqs dm dbi bg ck cke w w_w odt term rsl rsl_w cqd burst burst_w - CONSTANT c_tech_ddr3_max : t_c_tech_ddr := ("none", 800, TRUE, "DUAL ", 16, 16, 11, 3, 64, 8, 8, 0, 0, 2, 2, 2, 1, 2, 14, 4, 2, 4, 64, 7); -- maximum ranges for record field definitions + -- name mts master rank a row col ba dq dqs dm dbi bg ck cke w w_w odt term rsl rsl_w cqd burst burst_w mem_dq_w + CONSTANT c_tech_ddr3_max : t_c_tech_ddr := ("none", 800, TRUE, "DUAL ", 16, 16, 11, 3, 64, 8, 8, 0, 0, 2, 2, 2, 1, 2, 14, 4, 2, 4, 64, 7, 64); -- maximum ranges for record field definitions -- use predefined c_tech_ddr3_sim or derive it using func_tech_ddr_sim_size() - CONSTANT c_tech_ddr3_sim_8k : t_c_tech_ddr := ("DDR3", 800, TRUE, "DUAL ", 10, 1, 10, 3, 64, 8, 8, 0, 0, 2, 2, 2, 1, 2, 14, 4, 2, 4, 64, 7); -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col - rsl_w) - CONSTANT c_tech_ddr3_sim_16k : t_c_tech_ddr := ("DDR3", 800, TRUE, "DUAL ", 10, 2, 10, 3, 64, 8, 8, 0, 0, 2, 2, 2, 1, 2, 14, 4, 2, 4, 64, 7); -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col - rsl_w) - CONSTANT c_tech_ddr3_sim_128k : t_c_tech_ddr := ("DDR3", 800, TRUE, "DUAL ", 10, 5, 10, 3, 64, 8, 8, 0, 0, 2, 2, 2, 1, 2, 14, 4, 2, 4, 64, 7); -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col - rsl_w) - CONSTANT c_tech_ddr3_sim_1m : t_c_tech_ddr := ("DDR3", 800, TRUE, "DUAL ", 10, 8, 10, 3, 64, 8, 8, 0, 0, 2, 2, 2, 1, 2, 14, 4, 2, 4, 64, 7); -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col - rsl_w) + CONSTANT c_tech_ddr3_sim_8k : t_c_tech_ddr := ("DDR3", 800, TRUE, "DUAL ", 10, 1, 10, 3, 64, 8, 8, 0, 0, 2, 2, 2, 1, 2, 14, 4, 2, 4, 64, 7, 64); -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col - rsl_w) + CONSTANT c_tech_ddr3_sim_16k : t_c_tech_ddr := ("DDR3", 800, TRUE, "DUAL ", 10, 2, 10, 3, 64, 8, 8, 0, 0, 2, 2, 2, 1, 2, 14, 4, 2, 4, 64, 7, 64); -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col - rsl_w) + CONSTANT c_tech_ddr3_sim_128k : t_c_tech_ddr := ("DDR3", 800, TRUE, "DUAL ", 10, 5, 10, 3, 64, 8, 8, 0, 0, 2, 2, 2, 1, 2, 14, 4, 2, 4, 64, 7, 64); -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col - rsl_w) + CONSTANT c_tech_ddr3_sim_1m : t_c_tech_ddr := ("DDR3", 800, TRUE, "DUAL ", 10, 8, 10, 3, 64, 8, 8, 0, 0, 2, 2, 2, 1, 2, 14, 4, 2, 4, 64, 7, 64); -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col - rsl_w) - CONSTANT c_tech_ddr3_16g_dual_rank_800m : t_c_tech_ddr := ("DDR3", 800, TRUE, "DUAL ", 16, 16, 11, 3, 64, 8, 8, 0, 0, 2, 2, 2, 1, 2, 14, 4, 2, 4, 64, 7); - CONSTANT c_tech_ddr3_4g_800m_master : t_c_tech_ddr := ("DDR3", 800, TRUE, "DUAL ", 15, 15, 10, 3, 64, 8, 8, 0, 0, 2, 2, 2, 1, 2, 14, 4, 2, 4, 64, 7); - CONSTANT c_tech_ddr3_4g_800m_slave : t_c_tech_ddr := ("DDR3", 800, FALSE, "DUAL ", 15, 15, 10, 3, 64, 8, 8, 0, 0, 2, 2, 2, 1, 2, 14, 4, 2, 4, 64, 7); - CONSTANT c_tech_ddr3_4g_single_rank_800m_master : t_c_tech_ddr := ("DDR3", 800, TRUE, "SINGLE", 16, 16, 10, 3, 64, 8, 8, 0, 0, 2, 1, 1, 0, 1, 14, 4, 2, 4, 64, 7); - CONSTANT c_tech_ddr3_4g_single_rank_800m_slave : t_c_tech_ddr := ("DDR3", 800, FALSE, "SINGLE", 16, 16, 10, 3, 64, 8, 8, 0, 0, 2, 1, 1, 0, 1, 14, 4, 2, 4, 64, 7); + CONSTANT c_tech_ddr3_16g_dual_rank_800m : t_c_tech_ddr := ("DDR3", 800, TRUE, "DUAL ", 16, 16, 11, 3, 64, 8, 8, 0, 0, 2, 2, 2, 1, 2, 14, 4, 2, 4, 64, 7, 64); + CONSTANT c_tech_ddr3_4g_800m_master : t_c_tech_ddr := ("DDR3", 800, TRUE, "DUAL ", 15, 15, 10, 3, 64, 8, 8, 0, 0, 2, 2, 2, 1, 2, 14, 4, 2, 4, 64, 7, 64); + CONSTANT c_tech_ddr3_4g_800m_slave : t_c_tech_ddr := ("DDR3", 800, FALSE, "DUAL ", 15, 15, 10, 3, 64, 8, 8, 0, 0, 2, 2, 2, 1, 2, 14, 4, 2, 4, 64, 7, 64); + CONSTANT c_tech_ddr3_4g_single_rank_800m_master : t_c_tech_ddr := ("DDR3", 800, TRUE, "SINGLE", 16, 16, 10, 3, 64, 8, 8, 0, 0, 2, 1, 1, 0, 1, 14, 4, 2, 4, 64, 7, 64); + CONSTANT c_tech_ddr3_4g_single_rank_800m_slave : t_c_tech_ddr := ("DDR3", 800, FALSE, "SINGLE", 16, 16, 10, 3, 64, 8, 8, 0, 0, 2, 1, 1, 0, 1, 14, 4, 2, 4, 64, 7, 64); ---CONSTANT c_tech_ddr4_max : t_c_tech_ddr := ("none", 1600, TRUE, "DUAL ", 17, 15, 10, 2, 72, 9, 0, 9, 2, 1, 1, 1, 0, 1, 0, 8, 3, 8, 64, 7); -- maximum ranges for record field definitions - CONSTANT c_tech_ddr4_max : t_c_tech_ddr := ("none", 1600, TRUE, "DUAL ", 17, 15, 10, 2, 72, 9, 0, 9, 2, 2, 2, 2, 1, 2, 0, 8, 3, 8, 64, 7); -- maximum ranges for record field definitions +--CONSTANT c_tech_ddr4_max : t_c_tech_ddr := ("none", 1600, TRUE, "DUAL ", 17, 15, 10, 2, 72, 9, 0, 9, 2, 1, 1, 1, 0, 1, 0, 8, 3, 8, 64, 7, 72); -- maximum ranges for record field definitions + CONSTANT c_tech_ddr4_max : t_c_tech_ddr := ("none", 1600, TRUE, "DUAL ", 17, 15, 10, 2, 72, 9, 0, 9, 2, 2, 2, 2, 1, 2, 0, 8, 3, 8, 64, 7, 72); -- maximum ranges for record field definitions -- use predefined c_tech_ddr4_sim or derive it using func_tech_ddr_sim_size() - CONSTANT c_tech_ddr4_sim_4k : t_c_tech_ddr := ("DDR4", 1600, TRUE, "DUAL ", 10, 1, 10, 2, 72, 9, 0, 9, 2, 1, 1, 1, 0, 1, 0, 8, 3, 8, 64, 7); -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col + bg_w - rsl_w) - CONSTANT c_tech_ddr4_sim_8k : t_c_tech_ddr := ("DDR4", 1600, TRUE, "DUAL ", 10, 2, 10, 2, 72, 9, 0, 9, 2, 1, 1, 1, 0, 1, 0, 8, 3, 8, 64, 7); -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col + bg_w - rsl_w) - CONSTANT c_tech_ddr4_sim_16k : t_c_tech_ddr := ("DDR4", 1600, TRUE, "DUAL ", 10, 3, 10, 2, 72, 9, 0, 9, 2, 1, 1, 1, 0, 1, 0, 8, 3, 8, 64, 7); -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col + bg_w - rsl_w) - CONSTANT c_tech_ddr4_sim_128k : t_c_tech_ddr := ("DDR4", 1600, TRUE, "DUAL ", 10, 6, 10, 2, 72, 9, 0, 9, 2, 1, 1, 1, 0, 1, 0, 8, 3, 8, 64, 7); -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col + bg_w - rsl_w) - CONSTANT c_tech_ddr4_sim_1m : t_c_tech_ddr := ("DDR4", 1600, TRUE, "DUAL ", 10, 9, 10, 2, 72, 9, 0, 9, 2, 1, 1, 1, 0, 1, 0, 8, 3, 8, 64, 7); -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col + bg_w - rsl_w) + CONSTANT c_tech_ddr4_sim_4k : t_c_tech_ddr := ("DDR4", 1600, TRUE, "DUAL ", 10, 1, 10, 2, 72, 9, 0, 9, 2, 1, 1, 1, 0, 1, 0, 8, 3, 8, 64, 7, 72); -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col + bg_w - rsl_w) + CONSTANT c_tech_ddr4_sim_8k : t_c_tech_ddr := ("DDR4", 1600, TRUE, "DUAL ", 10, 2, 10, 2, 72, 9, 0, 9, 2, 1, 1, 1, 0, 1, 0, 8, 3, 8, 64, 7, 72); -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col + bg_w - rsl_w) + CONSTANT c_tech_ddr4_sim_16k : t_c_tech_ddr := ("DDR4", 1600, TRUE, "DUAL ", 10, 3, 10, 2, 72, 9, 0, 9, 2, 1, 1, 1, 0, 1, 0, 8, 3, 8, 64, 7, 72); -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col + bg_w - rsl_w) + CONSTANT c_tech_ddr4_sim_128k : t_c_tech_ddr := ("DDR4", 1600, TRUE, "DUAL ", 10, 6, 10, 2, 72, 9, 0, 9, 2, 1, 1, 1, 0, 1, 0, 8, 3, 8, 64, 7, 72); -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col + bg_w - rsl_w) + CONSTANT c_tech_ddr4_sim_1m : t_c_tech_ddr := ("DDR4", 1600, TRUE, "DUAL ", 10, 9, 10, 2, 72, 9, 0, 9, 2, 1, 1, 1, 0, 1, 0, 8, 3, 8, 64, 7, 72); -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col + bg_w - rsl_w) - CONSTANT c_tech_ddr4_4g_1600m : t_c_tech_ddr := ("DDR4", 1600, TRUE, "DUAL ", 17, 15, 10, 2, 72, 9, 0, 9, 2, 1, 1, 1, 0, 1, 0, 8, 3, 8, 64, 7); - CONSTANT c_tech_ddr4_8g_1600m : t_c_tech_ddr := ("DDR4", 1600, TRUE, "DUAL ", 17, 15, 10, 2, 72, 9, 0, 9, 2, 2, 2, 2, 1, 2, 0, 8, 3, 8, 64, 7); - CONSTANT c_tech_ddr4_16g_1600m_72 : t_c_tech_ddr := ("DDR4", 1600, TRUE, "DUAL ", 17, 16, 10, 2, 72, 9, 0, 9, 2, 1, 1, 1, 1, 1, 0, 8, 3, 8, 64, 7); - CONSTANT c_tech_ddr4_16g_1600m_64 : t_c_tech_ddr := ("DDR4", 1600, TRUE, "DUAL ", 17, 16, 10, 2, 64, 8, 0, 8, 2, 1, 1, 1, 1, 1, 0, 8, 3, 8, 64, 7); - CONSTANT c_tech_ddr4_8g_1600m_64 : t_c_tech_ddr := ("DDR4", 1600, TRUE, "DUAL ", 17, 15, 10, 2, 64, 8, 0, 8, 2, 2, 2, 2, 1, 2, 0, 8, 3, 8, 64, 7); - CONSTANT c_tech_ddr4_4g_2000m : t_c_tech_ddr := ("DDR4", 2000, TRUE, "DUAL ", 17, 15, 10, 2, 72, 9, 0, 9, 2, 1, 1, 1, 0, 1, 0, 8, 3, 8, 64, 7); - CONSTANT c_tech_ddr4_8g_2400m : t_c_tech_ddr := ("DDR4", 2400, TRUE, "DUAL ", 17, 15, 10, 2, 72, 9, 0, 9, 2, 2, 2, 2, 1, 2, 0, 8, 3, 8, 64, 7); + CONSTANT c_tech_ddr4_4g_1600m : t_c_tech_ddr := ("DDR4", 1600, TRUE, "DUAL ", 17, 15, 10, 2, 72, 9, 0, 9, 2, 1, 1, 1, 0, 1, 0, 8, 3, 8, 64, 7, 72); + CONSTANT c_tech_ddr4_8g_1600m : t_c_tech_ddr := ("DDR4", 1600, TRUE, "DUAL ", 17, 15, 10, 2, 72, 9, 0, 9, 2, 2, 2, 2, 1, 2, 0, 8, 3, 8, 64, 7, 72); + CONSTANT c_tech_ddr4_8g_1600m_64 : t_c_tech_ddr := ("DDR4", 1600, TRUE, "DUAL ", 17, 15, 10, 2, 64, 8, 0, 8, 2, 2, 2, 2, 1, 2, 0, 8, 3, 8, 64, 7, 64); + CONSTANT c_tech_ddr4_16g_1600m_72_64 : t_c_tech_ddr := ("DDR4", 1600, TRUE, "DUAL ", 17, 16, 10, 2, 72, 9, 0, 9, 2, 1, 1, 1, 1, 1, 0, 8, 3, 8, 64, 7, 64); -- 72b connection from IP, 64b to memory module (used for unb2c slot II with 64 bit modules) + CONSTANT c_tech_ddr4_16g_1600m_64 : t_c_tech_ddr := ("DDR4", 1600, TRUE, "DUAL ", 17, 16, 10, 2, 64, 8, 0, 8, 2, 1, 1, 1, 1, 1, 0, 8, 3, 8, 64, 7, 64); + CONSTANT c_tech_ddr4_4g_2000m : t_c_tech_ddr := ("DDR4", 2000, TRUE, "DUAL ", 17, 15, 10, 2, 72, 9, 0, 9, 2, 1, 1, 1, 0, 1, 0, 8, 3, 8, 64, 7, 72); + CONSTANT c_tech_ddr4_8g_2400m : t_c_tech_ddr := ("DDR4", 2400, TRUE, "DUAL ", 17, 15, 10, 2, 72, 9, 0, 9, 2, 2, 2, 2, 1, 2, 0, 8, 3, 8, 64, 7, 72); -- PHY in, inout and out signal records TYPE t_tech_ddr3_phy_in IS RECORD -- DDR3 Description @@ -227,9 +231,14 @@ PACKAGE BODY tech_ddr_pkg IS FUNCTION func_tech_ddr_ctlr_data_w(c_ddr : t_c_tech_ddr) RETURN NATURAL IS BEGIN - RETURN c_ddr.dq_w*c_ddr.rsl; -- CTLR data + RETURN c_ddr.mem_dq_w*c_ddr.rsl; -- CTLR data END; - + + FUNCTION func_tech_ddr_ctlr_ip_data_w(c_ddr : t_c_tech_ddr) RETURN NATURAL IS + BEGIN + RETURN c_ddr.dq_w*c_ddr.rsl; -- CTLR data + END; + FUNCTION func_tech_ddr_sim_size(c_ddr : t_c_tech_ddr; sim_ctrl_addr_w : NATURAL) RETURN t_c_tech_ddr IS VARIABLE v_ddr : t_c_tech_ddr := c_ddr; VARIABLE v_ctrl_addr_w : NATURAL; @@ -257,5 +266,23 @@ PACKAGE BODY tech_ddr_pkg IS END IF; END; + FUNCTION func_tech_ddr_rewire_64b_to_72b(c_ddr : t_c_tech_ddr; vec_64b : STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR IS + VARIABLE vec_72b : STD_LOGIC_VECTOR(func_tech_ddr_ctlr_ip_data_w(c_ddr) - 1 DOWNTO 0) := (OTHERS => '0'); + BEGIN + FOR w in 0 TO c_ddr.rsl - 1 LOOP + vec_72b( w * c_ddr.dq_w + c_ddr.mem_dq_w - 1 DOWNTO w * c_ddr.dq_w) := vec_64b((w+1) * c_ddr.mem_dq_w - 1 DOWNTO w * c_ddr.mem_dq_w); + END LOOP; + RETURN vec_72b; + END; + + FUNCTION func_tech_ddr_rewire_72b_to_64b(c_ddr : t_c_tech_ddr; vec_72b : STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR IS + VARIABLE vec_64b : STD_LOGIC_VECTOR(func_tech_ddr_ctlr_data_w(c_ddr) - 1 DOWNTO 0) := (OTHERS => '0'); + BEGIN + FOR w in 0 TO c_ddr.rsl - 1 LOOP + vec_64b((w+1) * c_ddr.mem_dq_w - 1 DOWNTO w * c_ddr.mem_dq_w) := vec_72b( w * c_ddr.dq_w + c_ddr.mem_dq_w - 1 DOWNTO w * c_ddr.dq_w); + END LOOP; + RETURN vec_64b; + END; + END tech_ddr_pkg; diff --git a/libraries/technology/ip_arria10_e2sg/altera_libraries/altera_emif_cal_slave_nf_191/compile_ip.tcl b/libraries/technology/ip_arria10_e2sg/altera_libraries/altera_emif_cal_slave_nf_191/compile_ip.tcl index e700baca19e5f5ce4b4f4e51c895b8a3220ea2cc..56bd8a7c2171aee9e7b9e6a5d9036179bfba681a 100644 --- a/libraries/technology/ip_arria10_e2sg/altera_libraries/altera_emif_cal_slave_nf_191/compile_ip.tcl +++ b/libraries/technology/ip_arria10_e2sg/altera_libraries/altera_emif_cal_slave_nf_191/compile_ip.tcl @@ -34,5 +34,13 @@ vmap altera_emif_cal_slave_nf_191 ./work/ set IP_DIR "$env(RADIOHDL_BUILD_DIR)/$env(BUILDSET)/qsys-generate/ip_arria10_e2sg_ddr4_8g_1600/sim" vcom "$IP_DIR/../altera_emif_cal_slave_nf_191/sim/ip_arria10_e2sg_ddr4_8g_1600_altera_emif_cal_slave_nf_191_rmzieji.vhd" -work altera_emif_cal_slave_nf_191 +#ddr4_16g_1600_64b +set IP_DIR "$env(RADIOHDL_BUILD_DIR)/$env(BUILDSET)/qsys-generate/ip_arria10_e2sg_ddr4_16g_1600_64b/sim" + vcom "$IP_DIR/../altera_emif_cal_slave_nf_191/sim/ip_arria10_e2sg_ddr4_16g_1600_64b_altera_emif_cal_slave_nf_191_rmzieji.vhd" -work altera_emif_cal_slave_nf_191 + +# ddr4_16g_1600_72b +set IP_DIR "$env(RADIOHDL_BUILD_DIR)/$env(BUILDSET)/qsys-generate/ip_arria10_e2sg_ddr4_16g_1600_72b/sim" + vcom "$IP_DIR/../altera_emif_cal_slave_nf_191/sim/ip_arria10_e2sg_ddr4_16g_1600_72b_altera_emif_cal_slave_nf_191_rmzieji.vhd" -work altera_emif_cal_slave_nf_191 +