随着FPGA设计复杂程度越来越高,芯片内部逻辑分析功能显得越来越重要。硬件层次上的逻辑分析仪价格十分昂贵,而且操作比较复杂。目前,FPGA芯片的两大供应商都为自己的FPGA芯片提供了软件层面上的逻辑分析仪,可以帮助我们在线分析芯片内部逻辑。而且操作简单方便。但是往往因为某些原因,有些信号在综合的时候就会被优化掉,就可能会导致我们的设计失败,当然在为逻辑分析仪添加观察信号的时候也无法找到该信号。从而对设计、调试人员的工作带来一定的不便。下面就分别以Xilinx公司的逻辑分析仪ChipScope和Altera公司的SignalTap做以下总结:
使用ChipScope观察芯片内部的信号之前,先要把需要观察的信号添加到ChipScope信号观察列表当中。也就是说,我们必须能够在综合的网表文件中找到相应的信号。如果是使用XST综合的话,最好保留芯片内部结构的层次,这样就可以在相应的子模块查找需要观察的信号。默认情况下,Chipscope只能观察reg类型的信号。但是通过设置属性也是可以观察wire型信号的。使用不同的综合工具需要添加的属性也不一样。
1、使用XST综合
在ChipScope中添加一些引脚的信号,但列表中并没有显示,原因是综合的地方没设置好,应该将XST的属性设置成如下:
Synthesize - XST 右键 Process Properties..,Synthesis Options 内设置 keep hierarchy 处为 YES
(1) 对于reg型信号,如果被ISE优化掉,一般可以把这个信号和其他没有被优化的信号进行“与”、“或”等操作。这样就可以达到观察信号的目的。
(2)对于wire型号,对于ISE12.3以后的版本,XST综合,以Spartan3为例,可以使用
这样就可以在查找信号的信号找到wire类型的CPLD_ _AD信号进行观察。
(2) 对于reg型信号,使用综合属性,例如下面的语句:
如上例(假设Cnt信号会被优化掉),这样添加综合属性之后,整个module的reg信号都不会被优化掉。
需要注意的是:描述综合属性的语句一定要添加在“;”前面。
跟reg相关的综合属性,除了可用,还有一个可用。二者的差别在于:
同时单独的reg信号也可以: 防止被优化掉。
(2)对于wire型信号来说,要想观察此类信号,Altera综合器提供了 综合属性。如
对于Quartus II 9.0以后的版本也可以使用的写法。
此外,也支持对reg型信号,使用它也可以防止reg型信号被优化掉。
但是也有可能出现这样的情况,有的信号即使经过此处理,仍然会被综合工具优化掉,致使无法找到它。这个时候就需要对其使用“测试属性”,可以加入属性,把这两个属性结合在一起,即就是:
即可,这种方法同时适应于wire和reg型信号类型。
1、以上的方法也不一定全部都可以使用,有时候因为版本不对应就会导致信号依然会被优化掉。不过经过轮询之后发现,ISE 12.3以后的版本、Quartus II 9.0之后的版本、Synplify Pro 9.0.1以后的版本都可以使用。
2、一般情况下,信号经常被优化掉,还是与代码风格或者逻辑设计有冗余有关的,所以还是应该尽量提高代码质量。在不能解决的时候再添加综合约束。
电 话:400-123-4567
传 真:+86-123-4567
手 机:13800000000
邮 箱:admin@eyoucms.com
地 址:广东省广州市天河区88号