g_tb_end:BOOLEAN:=TRUE;-- when TRUE then tb_end ends this simulation, else a higher multi-testbench will end the simulation
g_cross_domain_dvr_ctlr:BOOLEAN:=TRUE;-- when TRUE insert clock cross domain logic
g_ctlr_ref_clk_period:TIME:=5000ps;-- 200 MHz
g_dvr_clk_period:TIME:=5000ps;-- 50 MHz
g_dp_clk_period:TIME:=5000ps;-- 200 MHz
g_mm_clk_period:TIME:=8000ps;-- 125 MHz
g_cross_domain_dvr_ctlr:BOOLEAN:=TRUE;-- when TRUE insert clock cross domain logic and also insert clock cross domain logic when g_dvr_clk_period/=c_ctlr_clk_period
g_dvr_clk_period:TIME:=5ns;-- 200 MHz
g_dp_factor:NATURAL:=4;-- 1 or power of 2, c_dp_data_w = c_ctlr_data_w / g_dp_factor
g_rd_fifo_depth:NATURAL:=512;-- default 256 because 32b*256 fits in 1 M9K, use larger to fit more read bursts eg. in case g_dp_factor>1
g_block_len:NATURAL:=2500;-- block length for a DDR write access and read back access in number of c_ctlr_data_w words
g_block_len:NATURAL:=100;-- block length for a DDR write access and read back access in number of c_ctlr_data_w words
g_nof_block:NATURAL:=2;-- number of blocks that will be written to DDR and readback from DDR
g_nof_wr_per_block:NATURAL:=1;-- number of write accesses per block
g_nof_rd_per_block:NATURAL:=1;-- number of read accesses per block
...
...
@@ -75,15 +71,20 @@ ARCHITECTURE str of tb_io_ddr IS
-- Distinghuis between tests for DDR3 and DDR4, because the Quartus 14.1 ip_arria10 DDR4 model simulates about 40x slower than the Quartus 11.1 ip_stratixiv DDR3 uniphy model.