我想在我的设计中强制使用一些内部节点。我试图强迫的一件事是struct
的成员。
当我尝试这样做时:
module struct_force;
struct {
logic a;
logic b;
logic c;} d;
initial begin
force d.a = 1;
$display(d);
end
endmodule
Incisive给我一个错误:
非法使用位选择,部分选择,成员选择或mda元素[9.3.1(IEEE)]
但VCS似乎对它感到满意:See EDA playground example
从IEEE-1800我看到这与force
:
作业的左侧可以是单数的引用 变量,网络,矢量网的常数位选择,常数 部分选择矢量网,或这些的连接。
我无法解析那句话以找出谁错了:Incisive阻止我做我应该做的事情,还是VCS在规范中快速松散?
如果这实际上是非法的,那么强迫结构的一部分有什么用呢?
答案 0 :(得分:1)
上述句子中的关键词是单数变量。您尝试force
的变量是一个解包结构,它不是一个单数变量;它是一个聚合变量。
如果你把它变成一个打包的结构,你会遇到你所引用的句子之后的句子:"它不应该是变量的位选择或部分选择......&# 34;
网络被有效地分解为单个标量位,其值是该网络驱动程序的分辨率函数。 force
成为该网络的另一个驱动因素。
将此作为LRM的增强添加并非不可能,但是工具必须将变量分解为单个位 - 对该变量的每个常规赋值都必须逐位完成检查其中一个位是否处于强制状态。