cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
2,407 Views
Registered: ‎02-22-2012

Testbench logic

I am using a MIG interface in a Spartan-6 FPGA to a DDR2 16-bit wide DRAM.  When I simulated the FPGA/DRAM interaction I saw that the MIG interface never finished calibrating.  Yet when I ran the MIG's testbench it seemed to work fine.  After a great deal of experimentation I found that the following logic in the MIG's testbench made all the difference.

 

-- ========================================================================== --
-- Memory model instances --
-- ========================================================================== --

mcb3_command <= (mcb3_dram_ras_n & mcb3_dram_cas_n & mcb3_dram_we_n);

 

process(mcb3_dram_ck)
begin
if (rising_edge(mcb3_dram_ck)) then
if (c3_sys_rst = '0') then
mcb3_enable1 <= '0';
mcb3_enable2 <= '0';
elsif (mcb3_command = "100") then
mcb3_enable2 <= '0';
elsif (mcb3_command = "101") then
mcb3_enable2 <= '1';
else
mcb3_enable2 <= mcb3_enable2;
end if;
mcb3_enable1 <= mcb3_enable2;
end if;
end process;

 

-----------------------------------------------------------------------------
--read
-----------------------------------------------------------------------------
mcb3_dram_dqs_vector(1 downto 0) <= (mcb3_dram_udqs & mcb3_dram_dqs) when (mcb3_enable2 = '0' and mcb3_enable1 = '0') else "ZZ";
mcb3_dram_dqs_n_vector(1 downto 0) <= (mcb3_dram_udqs_n & mcb3_dram_dqs_n) when (mcb3_enable2 = '0' and mcb3_enable1 = '0') else "ZZ";

-----------------------------------------------------------------------------
--write
-----------------------------------------------------------------------------
mcb3_dram_dqs <= mcb3_dram_dqs_vector(0) when ( mcb3_enable1 = '1') else 'Z';

mcb3_dram_udqs <= mcb3_dram_dqs_vector(1) when (mcb3_enable1 = '1') else 'Z';


mcb3_dram_dqs_n <= mcb3_dram_dqs_n_vector(0) when (mcb3_enable1 = '1') else 'Z';
mcb3_dram_udqs_n <= mcb3_dram_dqs_n_vector(1) when (mcb3_enable1 = '1') else 'Z';

 

 

If this logic was needed, why wasn't it included in the MIG interface?

0 Kudos
Reply
1 Reply
robinliuy
Voyager
Voyager
2,391 Views
Registered: ‎05-21-2008

it's just for simulation.
0 Kudos
Reply