【发布时间】:2023-03-04 13:30:01
【问题描述】:
我在系统 verilog 中定义了一个接口,并使用 bind 语句绑定到内部 RTL 信号。我希望能够通过接口强制内部 RTL 信号。但是,如果我不明确强制这些信号,这会导致 RTL 信号变为“x”,似乎绑定到接口具有驱动能力。在这种情况下,我不希望 RTL 信号在没有任何强制的情况下更改为“x”,不确定我在这里做错了什么?
我的代码看起来像这样,设计为 DUT:
interface myInf(
inout RTL_a,
inout RTL_b
);
bind DUT myInf myInf_inst(
.RTL_a(DUT.a),
.RTL_b(DUT.b)
);
bind DUT myDrv(myInf_inst);
其中 myDrv 是驱动 myInf 上的端口的模块。
在这种情况下,DUT.a 和 DUT.b 是内部 RTL 信号,它们的驱动程序来自设计,但我希望能够在需要时强制它们。但是,当我只是将它们绑定到 myInf 而不实际驱动它们时,这些信号变为“x”。
【问题讨论】:
-
在这种情况下,您的 RTL 信号似乎会有多个驱动程序,如果我错了,请纠正我,但如果所有驱动程序的值不同,多个驱动程序将无法解析为稳定值。此外,信号的默认值(除非它们被声明为新的 systemverilog 类型)是“X”。哦,另一件事是您需要“释放”强制信号。
标签: system-verilog