我刚接触过系统verilog,并且一直坚持一个基本的概念,请提供以下行为背后的基本原理:
2.为什么,即使用非阻塞语句分配静态变量,静态变量中的更改是不可见的($display),在延迟后(比如#1 )是可用的。
示例:
class A ;
static int i;
endclass
program main ;
A obj;
initial
begin
obj.i = 123; // Not Allowed, can only be done using <= ... WHY ??
$display(obj.i);
#1 $display(obj.i);
end
endprogram 发布于 2014-08-17 01:59:48
发布于 2014-08-18 03:53:13
在IEEE 1800-2012 LRM早期版本的SystemVerilog中没有这样的规则,对允许的分配类型有更多的限制,但这些限制都已被删除。我不建议任何人再使用程序块。这是一个不必要的混乱的主要根源。请参阅http://go.mentor.com/programblocks
https://stackoverflow.com/questions/25344890
复制相似问题