From 37b92e7f2bb44e1f6490ede0a19aac3fcff83d1d Mon Sep 17 00:00:00 2001 From: Erik Kooistra <kooistra@astron.nl> Date: Thu, 8 Jan 2015 13:01:10 +0000 Subject: [PATCH] Pass on local_init_done from IP via ctlr_miso.done instead of via separate signal ctlr_init_done. --- libraries/io/ddr/src/vhdl/io_ddr.vhd | 6 ------ libraries/io/ddr/src/vhdl/io_ddr_driver.vhd | 12 ++++++------ libraries/technology/ddr/tech_ddr.vhd | 8 -------- libraries/technology/ddr/tech_ddr_stratixiv.vhd | 16 ++++++++++++---- 4 files changed, 18 insertions(+), 24 deletions(-) diff --git a/libraries/io/ddr/src/vhdl/io_ddr.vhd b/libraries/io/ddr/src/vhdl/io_ddr.vhd index 2298d1363c..80fbd7a884 100644 --- a/libraries/io/ddr/src/vhdl/io_ddr.vhd +++ b/libraries/io/ddr/src/vhdl/io_ddr.vhd @@ -85,7 +85,6 @@ -- rd_fifo_usedw <---|widths | . |_______| . |______|---\ -- |________| . . | -- ctlr_rd_src ctlr_miso | --- ctlr_init_done | -- | -- ctlr_clk /------ctlr_clk_in -------> | -- \------ctlr_clk_out-----------------------------------------------/ @@ -185,8 +184,6 @@ ARCHITECTURE str OF io_ddr IS SIGNAL ctlr_dvr_miso : t_mem_ctlr_miso; SIGNAL ctlr_dvr_mosi : t_mem_ctlr_mosi; - SIGNAL ctlr_init_done : STD_LOGIC; - SIGNAL ctlr_mosi : t_mem_ctlr_mosi := c_mem_ctlr_mosi_rst; SIGNAL ctlr_miso : t_mem_ctlr_miso := c_mem_ctlr_miso_rst; @@ -369,7 +366,6 @@ BEGIN rd_src_out => ctlr_rd_src_out, rd_src_in => ctlr_rd_src_in, - ctlr_init_done => ctlr_init_done, ctlr_miso => ctlr_miso, ctlr_mosi => ctlr_mosi ); @@ -390,8 +386,6 @@ BEGIN ctlr_gen_clk_2x => OPEN, ctlr_gen_rst_2x => OPEN, - ctlr_init_done => ctlr_init_done, - ctlr_mosi => ctlr_mosi, ctlr_miso => ctlr_miso, diff --git a/libraries/io/ddr/src/vhdl/io_ddr_driver.vhd b/libraries/io/ddr/src/vhdl/io_ddr_driver.vhd index 926ae5e64f..80cdc38fcd 100644 --- a/libraries/io/ddr/src/vhdl/io_ddr_driver.vhd +++ b/libraries/io/ddr/src/vhdl/io_ddr_driver.vhd @@ -62,7 +62,6 @@ ENTITY io_ddr_driver IS rd_src_out : OUT t_dp_sosi; rd_src_in : IN t_dp_siso; - ctlr_init_done : IN STD_LOGIC; ctlr_miso : IN t_mem_ctlr_miso; ctlr_mosi : OUT t_mem_ctlr_mosi ); @@ -141,9 +140,10 @@ BEGIN rd_src_out.valid <= ctlr_miso.rdval; rd_src_out.data <= RESIZE_DP_DATA(ctlr_miso.rddata); - p_state : PROCESS(prev_state, state, ctlr_init_done, - dvr_en, dvr_wr_not_rd, ctlr_miso, wr_snk_in, rd_src_in, - burst_size, burst_wr_cnt, dvr_start_address, cur_address, address_cnt) + p_state : PROCESS(prev_state, state, + dvr_en, dvr_wr_not_rd, dvr_start_address, dvr_nof_data, + ctlr_miso, wr_snk_in, rd_src_in, + burst_size, burst_wr_cnt, cur_address, address_cnt) BEGIN nxt_state <= state; @@ -238,8 +238,8 @@ BEGIN WHEN OTHERS => -- s_init nxt_dvr_done <= '0'; - IF ctlr_init_done = '1' THEN - nxt_state <= s_idle; -- and assert dvr_done when in s_idle to indicate ctlr_init_done + IF ctlr_miso.done = '1' THEN + nxt_state <= s_idle; -- and assert dvr_done when in s_idle to indicate ctlr_miso.done END IF; END CASE; diff --git a/libraries/technology/ddr/tech_ddr.vhd b/libraries/technology/ddr/tech_ddr.vhd index c13dcec25f..e6c138b97f 100644 --- a/libraries/technology/ddr/tech_ddr.vhd +++ b/libraries/technology/ddr/tech_ddr.vhd @@ -23,11 +23,6 @@ -- Purpose: Technology independent component for DDR memory access. -- Description: -- The component also supports different types of DDR, so DDR3 and DDR4. --- Remarks: --- . The ctlr_init_done goes high after power up. It could have been AND-ed --- with ctlr_miso.waitrequest_n to avoid having it as a port. However the --- timing closure for ctlr_miso.waitrequest_n can be critical, so therefore --- it is better not to combinatorially load it with the AND ctlr_init_done. LIBRARY IEEE, common_lib, technology_lib, tech_ddr_lib; USE IEEE.STD_LOGIC_1164.ALL; @@ -52,8 +47,6 @@ ENTITY tech_ddr IS ctlr_gen_clk_2x : OUT STD_LOGIC; ctlr_gen_rst_2x : OUT STD_LOGIC; - ctlr_init_done : OUT STD_LOGIC; - ctlr_mosi : IN t_mem_ctlr_mosi; ctlr_miso : OUT t_mem_ctlr_miso; @@ -74,7 +67,6 @@ BEGIN GENERIC MAP (g_tech_ddr) PORT MAP (ctlr_ref_clk, ctlr_ref_rst, ctlr_gen_clk, ctlr_gen_rst, ctlr_gen_clk_2x, ctlr_gen_rst_2x, - ctlr_init_done, ctlr_mosi, ctlr_miso, phy_in, phy_io, phy_ou); END GENERATE; diff --git a/libraries/technology/ddr/tech_ddr_stratixiv.vhd b/libraries/technology/ddr/tech_ddr_stratixiv.vhd index cb627df48f..f95ae40138 100644 --- a/libraries/technology/ddr/tech_ddr_stratixiv.vhd +++ b/libraries/technology/ddr/tech_ddr_stratixiv.vhd @@ -20,6 +20,16 @@ -- -------------------------------------------------------------------------------- + +-- Purpose: DDR3 memory access component for Stratix IV. +-- Description: +-- Remarks: +-- . The local_init_done goes high some time after power up. It could have been +-- AND-ed with ctlr_miso.waitrequest_n. However the timing closure for +-- ctlr_miso.waitrequest_n can be critical, so therefore it is better not +-- to combinatorially load it with the AND local_init_done. Instead a +-- ctlr_miso.done field was added and used to pass on local_init_done. + -- Declare IP libraries to ensure default binding in simulation. The IP library clause is ignored by synthesis. LIBRARY ip_stratixiv_ddr3_uphy_4g_800_master_lib; LIBRARY ip_stratixiv_ddr3_uphy_4g_800_slave_lib; @@ -46,8 +56,6 @@ ENTITY tech_ddr_stratixiv IS ctlr_gen_clk_2x : OUT STD_LOGIC; ctlr_gen_rst_2x : OUT STD_LOGIC; - ctlr_init_done : OUT STD_LOGIC; - ctlr_mosi : IN t_mem_ctlr_mosi; ctlr_miso : OUT t_mem_ctlr_miso; @@ -111,7 +119,7 @@ BEGIN avl_read_req => ctlr_mosi.rd, -- .read avl_write_req => ctlr_mosi.wr, -- .write avl_size => ctlr_mosi.burstsize(g_tech_ddr.maxburstsize_w-1 DOWNTO 0), -- .burstcount - local_init_done => ctlr_init_done, -- status.local_init_done + local_init_done => ctlr_miso.done, -- status.local_init_done local_cal_success => OPEN, -- .local_cal_success local_cal_fail => OPEN, -- .local_cal_fail oct_rdn => phy_in.oct_rdn, -- oct.rdn @@ -163,7 +171,7 @@ BEGIN avl_read_req => ctlr_mosi.rd, -- .read avl_write_req => ctlr_mosi.wr, -- .write avl_size => ctlr_mosi.burstsize(g_tech_ddr.maxburstsize_w-1 DOWNTO 0), -- .burstcount - local_init_done => ctlr_init_done, -- status.local_init_done + local_init_done => ctlr_miso.done, -- status.local_init_done local_cal_success => OPEN, -- .local_cal_success local_cal_fail => OPEN, -- .local_cal_fail seriesterminationcontrol => phy_in.seriesterminationcontrol(g_tech_ddr.terminationcontrol_w-1 DOWNTO 0), -- oct_sharing.seriesterminationcontrol -- GitLab