验证测试台端口需要说明还是不需要?

verification testbench ports need directions or not necessary?

我有一个关于在验证中声明信号的问题 testbench/interface。正如教科书中告诉我的那样,我想在我的测试平台或界面中声明每个信号的方向,但奇怪的是,我仍然可以在不这样做的情况下获得正确的结果。我可以将所有信号声明为 "logic",并将它们馈送到 DUT 的正确 input/output 端口。

所以我很困惑,如果 input/output 声明对于验证测试平台是必要的?验证测试台不一定是可综合的,不是吗?甚至我书中的一些示例也没有使用 input/output 端口编写测试平台。有时我清楚地看到 "module test();" 模块中的所有信号都声明为 "logic".

有人可以对此给出一些详细的解释吗?我是否必须在我的测试台上声明我的信号方向?

测试台中的顶级模块没有端口,因此没有方向可指定。如果您希望将信号跨越模块边界传递到更高级别的模块并且端口声明需要方向,则较低级别的模块需要端口。仿真器不关心模块描述是否用于测试台或设计,并且可能会忽略指定的方向。合成工具需要正确的信号方向。

SystemVerilog 的 interface 构造稍微复杂一些,因为它是信号的集合,每个信号都有可能用作端口。 interface 中使用的 modport 结构指定用作端口的信号及其方向。与模块端口一样,modports 需要方向作为端口语法的一部分。