在程序块中,我们无法对任何变量进行非阻塞分配。如果我们尝试这样做,它会显示错误,例如"程序变量:d只能使用阻止分配"来分配。
类似地,在时钟块中,如果我们尝试使用阻塞分配来分配它,那么它会显示错误,如"时钟块输出cb1.d信号必须由非阻塞分配驱动"。
这些规则背后的原因是什么?
答案 0 :(得分:1)
我不建议使用程序块 - 它们是混乱的大量来源,完全没有必要。看看我最受欢迎的blog posts之一。
为了回答你的第一个问题,很久以前就消除了关于不能使用NBAs来编程变量的规则。您不得使用最新版本的软件。
要回答第二个问题,时钟块输出使用与阻塞和非阻塞分配不同的驱动器语句。请参阅1800-2012 LRM中的 14.16.1驱动器和非阻止分配部分。