原创 如何防止FPGA设计中综合后的信号被优化?

2010-5-22 01:29 3974 11 11 分类: FPGA/CPLD

      这不是一个新话题了,写这个也是当作自己的一个小小的笔记吧!觉得挺有用的。


      一般在做前仿真(即功能仿真)时,不会考虑信号被优化的问题。最近做一个关于运算的小程序,前仿真的数据没有问题,但是实际出来的数据总是有错误,所以不得不要进行后仿真。而后仿真一个很大的问题就是设计中很多信号在综合的过程中都优化掉了,所以需要添加相应的综合属性,让软件在综合的工程中,保留这些信号。另外,在利用SignalTap II观察信号时也会遇到相同的问题。


      在Verilog描述的程序中,通常包括两种类型的信号,即wire型,和reg型。对于不行类型的信号,需要使用不同的综合属性。


(1)对于wire型信号,使用/* synthesis keep="1" */综合属性,例如下面的语句:


      wire[7:0] data_in/* synthesis keep="1" */;


(2)对于reg型信号,使用/* synthesis preserve = 1 */综合属性,例如下面的语句:


      reg[7:0] data_in/* synthesis preserve = 1 */;


      需要注意的是:描述综合属性的语句一定要添加在“;”前面。


      其中,/* synthesis keep="1" */是Quartus II自带综合器的综合属性,对应于Synplify的综合属性是/* synthesis syn_keep=1 */。不过现在Quartus II也支持/* synthesis syn_keep=1 */

      另外,Quartus II中还提供了,几个常用综合属性的代码模块。在代码编辑窗口单击右键,选择Insert Templates,弹出一下窗口:

33d9fdb8-6b69-427e-87a7-20b4922d966a.JPG

      这里列出了Quartus II中用的综合属性的代码模板和详细介绍,感兴趣的朋友可以看一看,感觉还是挺有用的。但是这些综合属性不知道第三方的综合工具支持不支持,估计是不支持的,呵呵。

      以上内容参考了:


      如何在SignalTAP II中保留特定节点


      FPGA内部延时某个信号


      ISE布线时避免优化buf的方法

      Altera的几个常用的Synthesis attributes



PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
11
关闭 站长推荐上一条 /3 下一条