怎样才能使用ChipScope 加入被优化掉的信号

在调试过程中常常遇到的一个问题就是,xilinx工具在逻辑综合的过程中,将自己RTL代码中的很多变量都优化掉了,使得调试的抓信号的过程很纠结。以下是解决方法:

1.右键synthesis,在综合选项里将keep  hierarchy选择YES ,或者选择soft(在综合时保持层次,在实现时有利用ISE软件自动进行优化),这样有利于你从模块中找到你想抓取的信号和信号名不被更改。

 

2.在Constraints Guide中,有防止信号被优化掉的说明。具体在X:Xilinx13.4ISE_DSISEdocusenglishisehelp文件夹下。里面介绍了如何解决信号被优化的问题。其实ISE的工程设置有“keep_hierarchy”。在程序里面,也可以通过添加一些语句。如果是Verilog :

 

          Place the Verilog constraint immediately before the module or instantiation . 

          Specify the Verilog constraint as follows:

          (* KEEP = “{TRUE|FALSE |SOFT}” *)

 

假如我们要观察的一个信号cnt:reg   [10:0]  cnt;,那么就按照 文档中的介绍,要保持此信号不被综合,则:

    (* KEEP =  “TRUE” *)  reg  [10:0]  cnt ,或者     (* keep=  “true” *)  reg  [10:0]  cnt   

这样就可以实现ChipScope的观察而不被优化掉了。类似的VHDL:

 

         Declare the VHDL constraint as follows:

         attribute keep : string;

        Specify the VHDL constraint as follows:

        attribute keep of signal_name: signal is “{TRUE|FALSE|SOFT}”;

原文地址:https://www.cnblogs.com/xuexizhe/p/8275801.html