【问题标题】:Right way to use for loop inside the test-bench to cover all possible cases在测试台内使用 for 循环的正确方法来涵盖所有可能的情况
【发布时间】:2019-01-08 11:11:30
【问题描述】:

我正在为顶级实体创建一个测试台。它使用多个组件,包括末端的 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;

-----

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

【问题讨论】:

  • 到底是什么问题?您的代码将更新信号就好了。
  • Rs-Rt_loop 不是用于循环参数规范的有效标识符。如果您偏爱在名称中使用减号,请将其作为扩展标识符 `\Rs-Rt_loop\`(键入会更加痛苦)。请参阅 IEEE Std 1076-2008 15.4 标识符。内部循环中的等待语句允许在循环中分配信号只是查找。

标签: vhdl modelsim test-bench


【解决方案1】:

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

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

感谢两位评论者,因为你们都是对的,信号已按应有的方式更新,循环工作正常,Rs 和 Rt 之间不应有“-”。

【讨论】:

    猜你喜欢
    • 2021-12-29
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 2023-03-12
    • 2021-07-09
    相关资源
    最近更新 更多