From 17ede42824cc879c1251ebdb06d7ff7d9f7bb67a Mon Sep 17 00:00:00 2001 From: Erik Kooistra <kooistra@astron.nl> Date: Wed, 8 Apr 2015 14:29:36 +0000 Subject: [PATCH] Removed internal DDR memory model (now needs to be instantiated in tb). Use dedicated records for DDR3 and DDR4 phy interfaces, instead of the combined record. --- libraries/io/ddr/src/vhdl/io_ddr.vhd | 38 ++++++++++++++------------ libraries/io/ddr/tb/vhdl/tb_io_ddr.vhd | 38 ++++++++++++++++++-------- 2 files changed, 47 insertions(+), 29 deletions(-) diff --git a/libraries/io/ddr/src/vhdl/io_ddr.vhd b/libraries/io/ddr/src/vhdl/io_ddr.vhd index 26f21af7ba..adcbec171f 100644 --- a/libraries/io/ddr/src/vhdl/io_ddr.vhd +++ b/libraries/io/ddr/src/vhdl/io_ddr.vhd @@ -49,10 +49,6 @@ -- bursts already be pending. Therefore the g_rd_fifo_af_margin needs to be -- large enough to fit a number of read bursts. --- In simulation use g_use_ddr_memory_model=TRUE to also include the DDR --- memory model that is internally available within tech_ddr. This avoids --- having to connect a DDR memory model at top level in the test bench. --- -- Usage: -- . The dvr interface could be connected to a MM register. The DDR memory -- may then be used to capture (large) blocks of streaming data that can @@ -160,7 +156,6 @@ ENTITY io_ddr IS GENERIC( g_technology : NATURAL := c_tech_select_default; g_tech_ddr : t_c_tech_ddr; - g_use_ddr_memory_model : BOOLEAN := FALSE; -- when TRUE use internal DDR memory model, else connect DDR memory model in top level tb g_cross_domain_dvr_ctlr : BOOLEAN := TRUE; g_cross_domain_delay_len : NATURAL := c_meta_delay_len; g_wr_data_w : NATURAL := 32; @@ -216,13 +211,18 @@ ENTITY io_ddr IS rd_sosi : OUT t_dp_sosi; rd_siso : IN t_dp_siso; - term_ctrl_out : OUT t_tech_ddr_phy_terminationcontrol; - term_ctrl_in : IN t_tech_ddr_phy_terminationcontrol := c_tech_ddr_phy_terminationcontrol_rst; + term_ctrl_out : OUT t_tech_ddr3_phy_terminationcontrol; + term_ctrl_in : IN t_tech_ddr3_phy_terminationcontrol := c_tech_ddr3_phy_terminationcontrol_rst; + + -- DDR3 PHY external interface + phy3_in : IN t_tech_ddr3_phy_in := c_tech_ddr3_phy_in_x; + phy3_io : INOUT t_tech_ddr3_phy_io; + phy3_ou : OUT t_tech_ddr3_phy_ou; - -- DDR PHY external interface - phy_in : IN t_tech_ddr_phy_in := c_tech_ddr_phy_in_x; - phy_io : INOUT t_tech_ddr_phy_io; - phy_ou : OUT t_tech_ddr_phy_ou + -- DDR4 PHY external interface + phy4_in : IN t_tech_ddr4_phy_in := c_tech_ddr4_phy_in_x; + phy4_io : INOUT t_tech_ddr4_phy_io; + phy4_ou : OUT t_tech_ddr4_phy_ou ); END io_ddr; @@ -438,8 +438,7 @@ BEGIN u_tech_ddr : ENTITY tech_ddr_lib.tech_ddr GENERIC MAP ( g_technology => g_technology, - g_tech_ddr => g_tech_ddr, - g_use_ddr_memory_model => g_use_ddr_memory_model + g_tech_ddr => g_tech_ddr ) PORT MAP ( -- PLL reference clock @@ -458,10 +457,15 @@ BEGIN term_ctrl_out => term_ctrl_out, term_ctrl_in => term_ctrl_in, - -- PHY interface - phy_in => phy_in, - phy_io => phy_io, - phy_ou => phy_ou + -- DDR3 PHY interface + phy3_in => phy3_in, + phy3_io => phy3_io, + phy3_ou => phy3_ou, + + -- DDR4 PHY interface + phy4_in => phy4_in, + phy4_io => phy4_io, + phy4_ou => phy4_ou ); ctlr_rst_out <= ctlr_rst_out_i; diff --git a/libraries/io/ddr/tb/vhdl/tb_io_ddr.vhd b/libraries/io/ddr/tb/vhdl/tb_io_ddr.vhd index 3c25f729db..2f052b81c0 100644 --- a/libraries/io/ddr/tb/vhdl/tb_io_ddr.vhd +++ b/libraries/io/ddr/tb/vhdl/tb_io_ddr.vhd @@ -216,10 +216,15 @@ ARCHITECTURE str of tb_io_ddr IS SIGNAL snk_val_cnt : STD_LOGIC_VECTOR(31 DOWNTO 0); SIGNAL expected_cnt : NATURAL; - -- PHY interface - SIGNAL phy_in : t_tech_ddr_phy_in; - SIGNAL phy_io : t_tech_ddr_phy_io; - SIGNAL phy_ou : t_tech_ddr_phy_ou; + -- DDR3 PHY interface + SIGNAL phy3_in : t_tech_ddr3_phy_in; + SIGNAL phy3_io : t_tech_ddr3_phy_io; + SIGNAL phy3_ou : t_tech_ddr3_phy_ou; + + -- DDR4 PHY interface + SIGNAL phy4_in : t_tech_ddr4_phy_in; + SIGNAL phy4_io : t_tech_ddr4_phy_io; + SIGNAL phy4_ou : t_tech_ddr4_phy_ou; BEGIN @@ -453,22 +458,31 @@ BEGIN rd_sosi => diag_rd_snk_in, rd_siso => diag_rd_snk_out, - -- DDR PHY external interface - phy_ou => phy_ou, - phy_io => phy_io, - phy_in => phy_in + -- DDR3 PHY external interface + phy3_ou => phy3_ou, + phy3_io => phy3_io, + phy3_in => phy3_in, + + -- DDR4 PHY external interface + phy4_ou => phy4_ou, + phy4_io => phy4_io, + phy4_in => phy4_in ); u_tech_ddr_memory_model : ENTITY tech_ddr_lib.tech_ddr_memory_model GENERIC MAP ( - g_sim => TRUE, g_tech_ddr => c_tech_ddr ) PORT MAP ( - mem_in => phy_ou, - mem_io => phy_io + -- DDR3 PHY interface + mem3_in => phy3_ou, + mem3_io => phy3_io, + + -- DDR4 PHY interface + mem4_in => phy4_ou, + mem4_io => phy4_io ); - + END ARCHITECTURE str; -- GitLab