首页 > 解决方案 > 在测试台内使用 for 循环以涵盖所有可能情况的正确方法

问题描述

我正在为顶级实体创建一个测试台。它使用多个组件,包括末端的 2x 8:1 多路复用器,产生 2 个单独的输出。我决定使用“for 循环”来涵盖所有情况,但我的输入数据在随机实例中被分配给我的输出数据(相反,它必须是;每当 Rd=Rs 和/或 Rd=Rt 时输入=输出)。

---
stim_proc  :PROCESS
begin
---

for Rd_loop in 0 to 7 loop -- 0 to 7 for Rd'lenght-1=2
    for Rs-Rt_loop in 0 to 7 loop -- 0 to 7 for Rs'lenght-1=Rt'lenght-1=2
        wait for 10 ns;

-- increment to the next value of Rs and Rt.

        Rs<=std_logic_vector( signed(Rs) + 1 );
        Rt<=std_logic_vector( signed(Rt) + 1 );
    end loop;

-- increment to the next value of Rd.
Rd<=std_logic_vector( signed(Rd) + 1 );
end loop;

        wait for 10 ns;

-----

我几乎可以肯定我应该使用变量,但不知道如何使用,感谢任何帮助。

标签: vhdlmodelsimtest-bench

解决方案


事实证明,这段代码工作得很好,很抱歉造成混乱。我只是对模拟输出感到困惑,以为我没有得到我想要的响应,但查看内部信号很明显这是它应该表现的方式。

所以我决定下次不要在复杂系统的测试台中使用循环,除非我绝对必须这样做。

感谢两位评论者,因为你们都是对的,信号会按照它们应该的方式更新,循环工作得很好,Rs 和 Rt 之间不应该有“-”。


推荐阅读