VHDL中有限状态机的连续测试?

VHDL中有限状态机的连续测试?,vhdl,fpga,fsm,vivado,test-bench,Vhdl,Fpga,Fsm,Vivado,Test Bench,我的组件从RAM内存中读取数据,进行一些计算并写回内存。我已经用不同的RAM值编写了多个测试台,并且测试成功。问题是每次我都必须单独运行测试台 我想知道是否有可能在一个测试台上安装不同的RAM,并且只运行一个测试台。因此,一旦一个RAM测试完成,就使用另一个RAM。这也将测试我的FSM在写入内存后是否回到空闲状态,然后读取另一个RAM 这是模板测试台: entity project is end project; architecture project of project is ....

我的组件从RAM内存中读取数据,进行一些计算并写回内存。我已经用不同的RAM值编写了多个测试台,并且测试成功。问题是每次我都必须单独运行测试台

我想知道是否有可能在一个测试台上安装不同的RAM,并且只运行一个测试台。因此,一旦一个RAM测试完成,就使用另一个RAM。这也将测试我的FSM在写入内存后是否回到空闲状态,然后读取另一个RAM

这是模板测试台:


entity project is
end project;

architecture project of project is
....
....
....
....

type ram_type is array (65535 downto 0) of std_logic_vector(7 downto 0);

signal RAM: ram_type := (0 => std_logic_vector(to_unsigned( 12, 8)),
                         1 => std_logic_vector(to_unsigned( 23, 8)),
                         2 => std_logic_vector(to_unsigned( 32, 8)),
                         3 => std_logic_vector(to_unsigned( 44, 8)),
                         4 => std_logic_vector(to_unsigned( 55, 8)),
                         5 => std_logic_vector(to_unsigned( 66, 8)),
                         6 => std_logic_vector(to_unsigned( 77, 8)),
                         7 => std_logic_vector(to_unsigned( 99, 8)),
             others => (others =>'0'));

component project is
port (
      ....
      ...
      );
end component project;


begin
UUT: project
port map (
          ....

          );

p_CLK_GEN : process is
begin
    ....
end process p_CLK_GEN;


MEM : process(clk)
begin
    ....
    ....
end process;


test : process is
begin 
    wait for 50 ns;
    wait for c_CLOCK_PERIOD;
    tb_rst <= '1';
    wait for c_CLOCK_PERIOD;
    tb_rst <= '0';
    wait for c_CLOCK_PERIOD;
    tb_start <= '1';
    wait for c_CLOCK_PERIOD;
    wait until tb_done = '1';
    wait for c_CLOCK_PERIOD;
    tb_start <= '0';
    wait until tb_done = '0';


    assert RAM(20) = std_logic_vector(to_unsigned( 13, 8)) report "failed" severity notice;

    assert false report "passed" severity notice;
end process test;


实体项目是
最终项目;
项目的架构项目是
....
....
....
....
类型ram_类型为标准_逻辑_向量(7向下至0)的阵列(65535向下至0);
信号RAM:RAM类型:=(0=>标准逻辑向量(到无符号(12,8)),
1=>标准逻辑向量(到无符号(23,8)),
2=>标准逻辑向量(到无符号(32,8)),
3=>标准逻辑向量(到无符号(44,8)),
4=>标准逻辑向量(到无符号(55,8)),
5=>标准逻辑向量(到无符号(66,8)),
6=>标准逻辑向量(到无符号(77,8)),
7=>标准逻辑向量(到无符号(99,8)),
其他=>(其他=>'0');
组件项目是
港口(
....
...
);
终端组件项目;
开始
UUT:项目
港口地图(
....
);
p_CLK_GEN:过程是
开始
....
结束过程p_CLK_GEN;
MEM:过程(clk)
开始
....
....
结束过程;
测试:过程是
开始
等待50纳秒;
等待c_时钟周期;

首先,我看不出这不可能的原因。您可以使用for generate语句并行实例化所有RAM并测试所有RAM。将泛型放在测试台上并让TCL脚本使用不同参数多次运行测试也是很常见的。您还应该能够从试验台,在下一次测试之前…我看不出这不可能的原因。您可以使用for generate语句并行实例化所有RAM并并行测试所有RAM。将泛型放在测试台上并让TCL脚本使用不同参数多次运行测试也是很常见的。您还应该能够覆盖/填充在下一次测试之前,从测试台上取出RAM。。。