From 45dea1663da1786dd6d4e79d8c5abc0deebcdec8 Mon Sep 17 00:00:00 2001
From: Erik Kooistra <kooistra@astron.nl>
Date: Mon, 22 Dec 2014 12:14:56 +0000
Subject: [PATCH] use func_tech_ddr_dq_address() for end_address, start_address
 and for cur_addr.

---
 libraries/io/ddr/src/vhdl/io_ddr_driver.vhd | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/libraries/io/ddr/src/vhdl/io_ddr_driver.vhd b/libraries/io/ddr/src/vhdl/io_ddr_driver.vhd
index dab999a695..fdd662524d 100644
--- a/libraries/io/ddr/src/vhdl/io_ddr_driver.vhd
+++ b/libraries/io/ddr/src/vhdl/io_ddr_driver.vhd
@@ -35,8 +35,8 @@ ENTITY io_ddr_driver IS
     clk                : IN  STD_LOGIC;
     rst                : IN  STD_LOGIC;
 
-    ctlr_rdy           : IN  STD_LOGIC;
     ctlr_init_done     : IN  STD_LOGIC;
+    ctlr_rdy           : IN  STD_LOGIC;
     ctlr_burst         : OUT STD_LOGIC;
     ctlr_burst_size    : OUT STD_LOGIC_VECTOR(g_tech_ddr.maxburstsize_w-1 DOWNTO 0);
     ctlr_wr_req        : OUT STD_LOGIC;   
@@ -61,8 +61,7 @@ END io_ddr_driver;
 
 ARCHITECTURE str OF io_ddr_driver IS
 
-  CONSTANT c_chip_addr_w        : NATURAL := ceil_log2(g_tech_ddr.cs_w); --Chip sel lines converted to logical address
-  CONSTANT c_address_w          : NATURAL := c_chip_addr_w + g_tech_ddr.ba_w + g_tech_ddr.a_w + g_tech_ddr.a_col_w +1; -- 1 bit added to detect overflow
+  CONSTANT c_address_w          : NATURAL := func_tech_ddr_dq_address_w(g_tech_ddr) + 1;  -- 1 bit added to detect overflow
  
   CONSTANT c_margin             : NATURAL := 2; -- wr_burst_size is updated one cycle after reading actual nof available words.
                                                 -- Subtract two (wr_fifo_usedw and wr_burst_size are both registered) so we cannot 
@@ -264,13 +263,10 @@ BEGIN
     END CASE;
   END PROCESS;
 
-  end_address   <= RESIZE_UVEC(  end_addr.chip &  end_addr.bank  &   end_addr.row(g_tech_ddr.a_w-1 DOWNTO 0) &   end_addr.column(g_tech_ddr.a_col_w-1 DOWNTO 0), c_address_w);  
-  start_address <= RESIZE_UVEC(start_addr.chip & start_addr.bank & start_addr.row(g_tech_ddr.a_w-1 DOWNTO 0) & start_addr.column(g_tech_ddr.a_col_w-1 DOWNTO 0), c_address_w); 
+  end_address   <= func_tech_ddr_dq_address(  end_addr, g_tech_ddr, c_address_w);
+  start_address <= func_tech_ddr_dq_address(start_addr, g_tech_ddr, c_address_w);
   
-  cur_addr.chip(  c_chip_addr_w     -1 DOWNTO 0) <= cur_address(c_chip_addr_w+g_tech_ddr.ba_w+g_tech_ddr.a_w+g_tech_ddr.a_col_w-1 DOWNTO g_tech_ddr.ba_w+g_tech_ddr.a_w+g_tech_ddr.a_col_w); 
-  cur_addr.bank(  g_tech_ddr.ba_w   -1 DOWNTO 0) <= cur_address(              g_tech_ddr.ba_w+g_tech_ddr.a_w+g_tech_ddr.a_col_w-1 DOWNTO                 g_tech_ddr.a_w+g_tech_ddr.a_col_w);
-  cur_addr.row(   g_tech_ddr.a_w    -1 DOWNTO 0) <= cur_address(                              g_tech_ddr.a_w+g_tech_ddr.a_col_w-1 DOWNTO                                g_tech_ddr.a_col_w);
-  cur_addr.column(g_tech_ddr.a_col_w-1 DOWNTO 0) <= cur_address(                                             g_tech_ddr.a_col_w-1 DOWNTO                                                 0);
+  cur_addr <= func_tech_ddr_dq_address(cur_address, g_tech_ddr);
   
 END str;
 
-- 
GitLab