计划及;系统Verilog中的时钟块规则

计划及;系统Verilog中的时钟块规则,verilog,system-verilog,Verilog,System Verilog,在程序块中,我们不能对任何变量进行非阻塞赋值。若我们尝试这样做,它会显示类似“程序变量:d只能使用分块赋值”这样的错误 类似地,在时钟块中,如果我们尝试使用阻塞分配来分配它,那么它会显示错误,如“时钟块输出cb1.d信号必须由非阻塞分配驱动” 这些规则背后的原因是什么?我不建议使用程序块-它们是一个巨大的混乱来源,完全没有必要。看看我的一个更受欢迎的 为了回答您的第一个问题,关于不能使用NBA编程变量的规则很久以前就被取消了。您不能使用最新版本的软件 为了回答第二个问题,时钟块输出使用不同于阻塞

在程序块中,我们不能对任何变量进行非阻塞赋值。若我们尝试这样做,它会显示类似“程序变量:d只能使用分块赋值”这样的错误

类似地,在时钟块中,如果我们尝试使用阻塞分配来分配它,那么它会显示错误,如“时钟块输出cb1.d信号必须由非阻塞分配驱动”


这些规则背后的原因是什么?

我不建议使用程序块-它们是一个巨大的混乱来源,完全没有必要。看看我的一个更受欢迎的

为了回答您的第一个问题,关于不能使用NBA编程变量的规则很久以前就被取消了。您不能使用最新版本的软件


为了回答第二个问题,时钟块输出使用不同于阻塞和非阻塞分配的驱动器语句。请参阅第14.16.1节中的驱动器和非阻塞分配

是的,我可能正在使用旧版本的编译器。我已经阅读了LRM,现在理解了非阻塞和同步驱动之间的区别。但我无法找出任何不允许在时钟块中使用阻塞语句的可能原因。您只能使用
我想知道我们是否会在删除功能的情况下获得1800的修订版,或者我们是否必须等待下一个大事件(tm)?