From 08d9a16e8f3ad2c16d587f3d0024de3f6fedb1d9 Mon Sep 17 00:00:00 2001 From: Leon Hiemstra <hiemstra@astron.nl> Date: Tue, 18 Aug 2015 12:14:53 +0000 Subject: [PATCH] added ddr4_4g_2000 IP --- libraries/technology/ddr/hdllib.cfg | 1 + libraries/technology/ddr/tech_ddr_arria10.vhd | 8 ++-- .../technology/ddr/tech_ddr_component_pkg.vhd | 38 +++++++++++++++++++ libraries/technology/ddr/tech_ddr_pkg.vhd | 1 + 4 files changed, 45 insertions(+), 3 deletions(-) diff --git a/libraries/technology/ddr/hdllib.cfg b/libraries/technology/ddr/hdllib.cfg index 0f67ecdab8..fb82184f8e 100644 --- a/libraries/technology/ddr/hdllib.cfg +++ b/libraries/technology/ddr/hdllib.cfg @@ -5,6 +5,7 @@ hdl_lib_uses_synth = ip_stratixiv_ddr3_uphy_4g_800_master ip_stratixiv_ddr3_uphy_4g_single_rank_800_master ip_stratixiv_ddr3_uphy_4g_single_rank_800_slave ip_arria10_ddr4_4g_1600 + ip_arria10_ddr4_4g_2000 ip_arria10_ddr4_8g_2400 common hdl_lib_uses_sim = ip_stratixiv_ddr3_mem_model diff --git a/libraries/technology/ddr/tech_ddr_arria10.vhd b/libraries/technology/ddr/tech_ddr_arria10.vhd index e2e2f555cd..2cc4c4f484 100644 --- a/libraries/technology/ddr/tech_ddr_arria10.vhd +++ b/libraries/technology/ddr/tech_ddr_arria10.vhd @@ -34,7 +34,8 @@ -- DDR interface monitoring purposes. -- Declare IP libraries to ensure default binding in simulation. The IP library clause is ignored by synthesis. -LIBRARY ip_arria10_ddr4_4g_1600_altera_emif_150; +--LIBRARY ip_arria10_ddr4_4g_1600_altera_emif_150; +LIBRARY ip_arria10_ddr4_4g_2000_altera_emif_150; LIBRARY IEEE, technology_lib, common_lib; USE IEEE.STD_LOGIC_1164.ALL; @@ -89,13 +90,14 @@ BEGIN ref_rst_n <= NOT ref_rst; ctlr_gen_rst <= NOT ctlr_gen_rst_n; - gen_ip_arria10_ddr4_4g_1600 : IF g_tech_ddr.name="DDR4" AND c_gigabytes=4 AND g_tech_ddr.mts=1600 GENERATE + --gen_ip_arria10_ddr4_4g_1600 : IF g_tech_ddr.name="DDR4" AND c_gigabytes=4 AND g_tech_ddr.mts=1600 GENERATE + gen_ip_arria10_ddr4_4g_2000 : IF g_tech_ddr.name="DDR4" AND c_gigabytes=4 AND g_tech_ddr.mts=1600 GENERATE phy_ou.cs_n(1) <= '1'; phy_ou.cke(1) <= '0'; phy_ou.odt(1) <= '0'; - u_ip_arria10_ddr4_4g_1600 : ip_arria10_ddr4_4g_1600 + u_ip_arria10_ddr4_4g_2000 : ip_arria10_ddr4_4g_2000 PORT MAP ( amm_ready_0 => ctlr_miso.waitrequest_n, -- ctrl_amm_avalon_slave_0.waitrequest_n amm_read_0 => ctlr_mosi.rd, -- .read diff --git a/libraries/technology/ddr/tech_ddr_component_pkg.vhd b/libraries/technology/ddr/tech_ddr_component_pkg.vhd index e8ec59b962..f536709936 100644 --- a/libraries/technology/ddr/tech_ddr_component_pkg.vhd +++ b/libraries/technology/ddr/tech_ddr_component_pkg.vhd @@ -278,6 +278,44 @@ PACKAGE tech_ddr_component_pkg IS local_cal_fail : out std_logic -- .local_cal_fail ); END COMPONENT; + + -- Manually derived VHDL entity from VHDL file $RADIOHDL/libraries/technology/ip_arria10/ddr4_4g_2000/generated/sim/ip_arria10_ddr4_4g_2000.vhd + COMPONENT ip_arria10_ddr4_4g_2000 IS + PORT ( + amm_ready_0 : out std_logic; -- ctrl_amm_avalon_slave_0.waitrequest_n + amm_read_0 : in std_logic := '0'; -- .read + amm_write_0 : in std_logic := '0'; -- .write + amm_address_0 : in std_logic_vector(25 downto 0) := (others => '0'); -- .address + amm_readdata_0 : out std_logic_vector(575 downto 0); -- .readdata + amm_writedata_0 : in std_logic_vector(575 downto 0) := (others => '0'); -- .writedata + amm_burstcount_0 : in std_logic_vector(6 downto 0) := (others => '0'); -- .burstcount + amm_byteenable_0 : in std_logic_vector(71 downto 0) := (others => '0'); -- .byteenable + amm_readdatavalid_0 : out std_logic; -- .readdatavalid + emif_usr_clk : out std_logic; -- emif_usr_clk_clock_source.clk + emif_usr_reset_n : out std_logic; -- emif_usr_reset_reset_source.reset_n + global_reset_n : in std_logic := '0'; -- global_reset_reset_sink.reset_n + mem_ck : out std_logic_vector(0 downto 0); -- mem_conduit_end.mem_ck + mem_ck_n : out std_logic_vector(0 downto 0); -- .mem_ck_n + mem_a : out std_logic_vector(16 downto 0); -- .mem_a + mem_act_n : out std_logic_vector(0 downto 0); -- .mem_act_n + mem_ba : out std_logic_vector(1 downto 0); -- .mem_ba + mem_bg : out std_logic_vector(1 downto 0); -- .mem_bg + mem_cke : out std_logic_vector(0 downto 0); -- .mem_cke + mem_cs_n : out std_logic_vector(0 downto 0); -- .mem_cs_n + mem_odt : out std_logic_vector(0 downto 0); -- .mem_odt + mem_reset_n : out std_logic_vector(0 downto 0); -- .mem_reset_n + mem_par : out std_logic_vector(0 downto 0); -- .mem_par + mem_alert_n : in std_logic_vector(0 downto 0) := (others => '0'); -- .mem_alert_n + mem_dqs : inout std_logic_vector(8 downto 0) := (others => '0'); -- .mem_dqs + mem_dqs_n : inout std_logic_vector(8 downto 0) := (others => '0'); -- .mem_dqs_n + mem_dq : inout std_logic_vector(71 downto 0) := (others => '0'); -- .mem_dq + mem_dbi_n : inout std_logic_vector(8 downto 0) := (others => '0'); -- .mem_dbi_n + oct_rzqin : in std_logic := '0'; -- oct_conduit_end.oct_rzqin + pll_ref_clk : in std_logic := '0'; -- pll_ref_clk_clock_sink.clk + local_cal_success : out std_logic; -- status_conduit_end.local_cal_success + local_cal_fail : out std_logic -- .local_cal_fail + ); + END COMPONENT; END tech_ddr_component_pkg; diff --git a/libraries/technology/ddr/tech_ddr_pkg.vhd b/libraries/technology/ddr/tech_ddr_pkg.vhd index 8ded1a8da3..f00411dff2 100644 --- a/libraries/technology/ddr/tech_ddr_pkg.vhd +++ b/libraries/technology/ddr/tech_ddr_pkg.vhd @@ -91,6 +91,7 @@ PACKAGE tech_ddr_pkg IS 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_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_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); -- PHY in, inout and out signal records TYPE t_tech_ddr3_phy_in IS RECORD -- DDR3 Description -- GitLab