使用Chipscope时如何防止reg_wire型信号被优化掉
来源:互联网 发布:金山数据恢复 编辑:程序博客网 时间:2024/06/01 08:14
一、使用Xilinx公司的ChipScope
在ChipScope中添加一些引脚的信号,但列表中并没有显示,原因是综合的地方没设置好,应该将XST的属性设置成如下:keep hierarchy 处为YES
使用ChipScope观察芯片内部的信号的之前先要在把需要观察的信号添加到ChipScope信号观察列表当中。也就是说,我们必须能够在综合的网表文件中找到相应的信号。如果是使用XST综合的话,最好保留芯片内部结构的层次,这样就可以在相应的子模块查找需要观察的信号。默认情况下,Chipscope只能观察reg类型的信号。但是通过设置属性也是可以观察wire型信号的。使用不同的综合工具需要添加的属性也不一样。
1、使用XST综合。
(1)对于reg型信号,如果被ISE优化掉,一般有可以把这个信号和其他没有被优化的信号进行“与”、“或”等操作。这样就可以达到观察信号的目的。
(2)对于wire型号,对于ISE12.3以后的版本,XST综合,以Spartan3为例,可以使用(* KEEP="TRUE"*) wire [15:0] CPLD_ _AD;这样就可以在查找信号的信号找到wire类型的CPLD_ _AD信号进行观察。再不行就用reg引出。
2、使用Synplify Pro综合
也可参考:http://hi.baidu.com/vvbaba/item/94bb1b33af6c4b33b3c0c56e
Synplify Pro对wire、reg类型的信号有着不同的综合属性。
(1) 对于wire型信号,使用/* synthesis syn_keep=1 */综合属性,例如下面的语句:
(2) 对于reg型信号,使用/* synthesis preserve = 1 */综合属性,例如下面的语句:
二、使用Altera公司的SignalTap
1、使用Altera自带的综合器综合
Altera自带的综合器为了防止某些信号综合器优化掉,也有自己的一套综合约束属性。
(1)对于reg型信号,为了防止Altera自带综合器将其优化掉,可以添加noprune属性。这样就可以防止某些寄存器信号被优化掉。也可以使用/*synthesis noprune*/综合属性。
02 module SignalTap_test(
03 Clk ,
04 Rst ,
05 Cnt
06 ) /*synthesis noprune*/ ;
07
08 input wire Clk ;
09 input wire Rst ;
10 output reg [7:0] Cnt ;
11 always@(posedge Clk or posedge Rst)
12 begin
13 if( Rst == 1'b1)
14 Cnt <= 8'h0;
15 else
16 Cnt <= #`ULDY Cnt + 1'b1;
17 end
18 endmodule
如上例(假设Cnt信号会被优化掉),这样添加综合属性之后,整个module的reg信号都不会被优化掉。
跟reg相关的综合属性,除了/*synthesis noprune*/可用,还有一个/*synthesis preserve*/可用
二者的差别在于:
/*synthesis noprune*/ 避免Quartus II优化掉output 型的reg信号。
/*synthesis preserve*/ 避免Quartus II把reg信号当成VCC或者GND等常数
同时单独的reg信号也可以: (*preserve*) reg [3:0] cnt;防止被优化掉。
(2) 对于wire类型的信号
对于wire型信号来说,要想观察此类信号,Altera综合器提供了/*synthesis keep*/ 综合属性。如 wire [7:0] Cnt /*synthesis keep*/; 对于Quartus II 9.0以后的版本也可以使用(“keep”) wire [7:0] Cnt ;的写法。
此外,/*synthesis keep*/也支持对reg型信号,使用它也可以防止reg型信号被优化掉。但是也有可能出现这样的情况,有的信号即使经过此处理,仍然会被综合工具优化掉,致使无法找到它。这个时候就需要对其使用“测试属性”,可以加入probe_port属性,把这两个属性结合在一起,即就是:
( *synthesis, probe_port,keep *) 即可,这种方法同时适应于wire和reg型信号类型。
2、使用Synplify Pro综合
使用Synplify Pro综合时防止信号被优化掉的方法和使用Xilinx公司 ChipScope使用Synplify Pro综合时添加的综合约束一样,因为Synplify Pro是专业的综合厂商,所以对主流的FPGA厂商都支持。
三、总结
1、以上的方法也不一定是全部都可以使用,有时候因为版本不对应就会导致信号依然会被优化掉。不过经过轮询之后发现,ISE 12.3以后的版本、Quartus II 9.0之后的版本、Synplify Pro 9.0.1以后的版本都可以使用。
2、一般情况下,信号经常被优化掉,还是与代码风格或者逻辑设计有冗余有关的,所以还是应该尽量提供代码质量。在不能解决的时候再添加综合约束。
- 使用Chipscope时如何防止reg_wire型信号被优化掉
- 使用Chipscope时如何防止reg_wire型信号被优化掉
- 使用Chipscope时如何防止reg_wire型信号被优化掉
- 使用逻辑分析仪时如何防止reg_wire型信号被优化掉
- 如何防止ISE综合时信号不被优化掉
- 如何防止ISE综合时信号不被优化掉
- XILINX编译软件ISE怎样在ChipScope 加入被优化掉的信号
- 使用chipscope检测输入管脚信号
- 防止ISE优化信号
- 防止ISE优化信号
- 防止Qii编译器优化掉某信号的方法
- 防止FPGA设计中综合后的信号被优化
- 防止FPGA设计中综合后的信号被优化
- 防止ISE综合时内部信号/模块被综合掉
- 防止ISE综合时内部信号/模块被综合掉
- chipscope使用tips
- ISE ChipScope使用
- ChipScope使用总结
- SPARK dataframe 两个表操作
- 在Eclipse里面怎么读取当前包下1个txt文件的路径
- LeetCode 147 Insertion Sort List
- 蓝桥杯历届试题——国王的烦恼(并查集)
- 《ACM程序设计》书中题目 K
- 使用Chipscope时如何防止reg_wire型信号被优化掉
- 二叉树的遍历(篇4)判断从根到叶节点的和是否等于某个给定的值
- Android处理图片报OOM的问题解决
- Saprk数据倾斜七解决方案(一)
- SQL— 创建计算字段(以 PostgreSQL为例)
- Android使用ShareSDK集成QQ、微信、微博等第三方分享
- RecyclerView的行间距&&RecyclerView的Item间距&&
- 盒子模型关于box-sizing属性
- poj1703 Find them, Catch them 基础并查集问题