概述
作者:圆宵,来源:FPGA那点事儿
最近在做一个设计用Vivado去综合时,碰到了一个很意外的Critical Error。由此牵扯出Verilog代码中使用异步置位和复位时,需留意的一个很隐蔽的小错误。
警告摘要如下:
[Netlist29-358] Reg ‘Counter[7]‘ of type ‘FDCPE’ cannot be timed accurately. Hardwarebehavior may be unpredicatable.
Resolution:Recode your design, so that you do not depend on both asynchronous set andreset for your desired functionality.
所对应得代码大概如下:
单从这处代码本身来看,看不出任何问题,由于是第一次碰到这种严重警告,所以一时没有头绪。不过从警告的提示来看,应该跟异步复位有关,难道是异步复位的初始赋值有问题?
顺着这个思路在代码中搜索,发现INIT_VAL的赋值不是一个常量,而是会动态切换的,如下:
看到此处终于恍然大悟,FPGA中寄存器的异步复位或者置位,都只能赋常量值,不能赋变量值。
因此消除这个严重警告的办法也很简单,把异步复位替换成同步复位即可。如下:
经过上述简单修改后,严重警告消失了。
最后
以上就是高贵小虾米为你收集整理的verilog异步复位jk触发器_Verilog代码中使用异步置位和复位时,需留意的很隐蔽的小错误...的全部内容,希望文章能够帮你解决verilog异步复位jk触发器_Verilog代码中使用异步置位和复位时,需留意的很隐蔽的小错误...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复