如何在没有initial或always块的情况下使用$display
我正在尝试调试一个不使用初始或始终使用 $display 语句的 Verilog 模块。然而,这些在初始或始终块之外似乎是非法的。这是为什么?我有什么选择?
I'm trying to debug a Verilog module that doesn't use initial or always by using $display statements. However, these appear to be illegal outside of initial or always blocks. Why is that? What are my alternatives?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为什么?因为 IEEE 标准就是这样指定的。
另一种方法是从测试台缩小模块实例的范围。您的测试平台将有一个
initial
或always
块,它将调用$display
。另一个有用的系统任务是 $monitor:运行模拟时您应该得到这种输出:
dut.b 信号是一个分层说明符,允许您缩小范围从顶级模块 (
tb
) 进入另一个模块。dut
是实例名称,b
是 dut 实例内的信号名称。实例名称与信号名称之间用句点分隔。Why? Because that's how the IEEE standard has specified it.
An alternative is to scope down into your module instance from your testbench. Your testbench will have an
initial
oralways
block which will call$display
. Another useful system task is$monitor
:You should get this kind of output when you run a simulation:
The
dut.b
signal is a hierarchical specifier that allows you to scope down into another module from the top-level module (tb
).dut
is the instance name, andb
is the signal name inside the dut instance. A period separates the instance name from the signal name.