使用逻辑分析仪时如何防止寄存器和线路信号被优化

技术如何防止reg、wire型信号在使用逻辑分析仪时被优化如何防止reg、wire型信号在使用逻辑分析仪时被优化,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题

如何在使用逻辑分析仪时防止reg和wire信号被优化,相信很多没有经验的人都不知所措。因此,本文总结了问题产生的原因及解决方法。希望你能通过这篇文章解决这个问题。

今天讲的是“如何在使用逻辑分析仪时防止reg和wire信号被优化”,不多说,加载货物。

随着FPGA设计的日益复杂,芯片内部的逻辑分析功能变得越来越重要。硬件层面的逻辑分析仪非常昂贵且操作复杂。目前,两大FPGA芯片供应商都为其FPGA芯片提供了软件层面的逻辑分析仪,可以帮助我们在线分析芯片的内部逻辑。此外,操作简单方便,但由于某些原因,一些信号在合成时会被优化,这可能会导致我们的设计失败。当然,在给逻辑分析仪添加观察信号时,我们找不到信号。从而给设计人员和调试器的工作带来一些不便。

以下分别是Xilinx公司的逻辑分析仪芯片示波器和Altera公司的SignalTap的总结:

1.在使用Xilinx公司的ChipScope观察芯片内部信号之前,将需要观察的信号添加到ChipScope信号观察列表中。换句话说,我们必须能够在综合网表文件中找到相应的信号。如果使用XST合成,最好保持芯片内部结构的层次,这样在相应的子模块中就可以找到需要观察的信号。默认情况下,芯片示波器只能观察reg类型的信号。但是您也可以通过设置属性来观察有线信号。不同的综合工具有不同的属性需要添加。

1.使用XST合成。

(1)对于reg信号,如果经过ISE优化,一般可以对这个信号和其他没有优化的信号进行AND、or等运算,从而观察信号。

(2)对于wire模型,对于ISE12.3之后的版本,XST合成,以Spartan3为例,可以使用(* keep=' true ')wire[1533600]CPLD _ AD;这样就可以在搜索信号的信号中找到线型的CPLD _AD信号进行观察。

2.用Synplify Pro合成Synplify Pro对于有线和reg类型的信号具有不同的综合属性。

(1)对于wire类型的信号,使用/synthesis syn_keep=1/,如以下语句:wire[7:0]data _ in/synthesis syn _ keep=1 */;

(2)对于reg类型信号,使用/* synthesis preserve=1/综合属性,如以下语句:REG[7:0]data _ in/synthesis preserve=1 */;

第二,使用Altera的SignalTap。

1.用Altera的合成器合成Altera的合成器。为了防止一些信号合成器被优化,它也有自己的一套综合约束属性。

(1)对于reg信号,为了防止Altera的合成器对其进行优化,可以增加noprune属性。这可能会阻止某些寄存器信号得到优化。你也可以使用/synthesis no prene/综合属性。` include 'define.v '

module SignalTap_test(Clk,Rst,Cnt)/synthesis no prane/;

input WireLeck;

input writer ST;

output reg[7:0]Cnt;

总是@(posedgeClkorposedgeRst)

开始

if(Rst==1'b1)

Cnt=8 ' h0

其他

Cnt=# `ULDYCnt 1 ' b1

依赖模块

在上面的例子中(假设Cnt信号将被优化),通过这种方式添加综合属性后,整个模块的reg信号将不会被优化。与reg相关的综合属性,除了/综合

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、一般情况下,信号经常被优化掉,还是与代码风格或者逻辑设计有冗余有关的,所以还是应该尽量提供代码质量。在不能解决的时候再添加综合约束。

看完上述内容,你们掌握如何防止reg、wire型信号在使用逻辑分析仪时被优化的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/156004.html

(0)

相关推荐

  • python程序二叉树最大深度(怎样求二叉树的深度用python)

    技术如何找出python二叉树的最大深度这期内容当中小编将会给大家带来有关如何找出python二叉树的最大深度,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1,问题简述 给定一

    攻略 2021年12月13日
  • 热量计算公式,热量计算公式该如何计算才正确

    技术热量计算公式,热量计算公式该如何计算才正确人每天至少需要多少热量公式一热量计算公式: 女: BMR = 655 + ( 9.6 x 体重kg ) + ( 1.8 x 身高cm ) ( 4.7 x 年龄years )

    生活 2021年10月31日
  • 馒头和米饭哪个含糖量高,蒸米饭与煮米饭哪个升糖快

    技术馒头和米饭哪个含糖量高,蒸米饭与煮米饭哪个升糖快大家好,我是奎哥,很高兴能为你解答馒头和米饭哪个含糖量高:蒸米饭与煮米饭哪个升糖快?根据查询资料,也咨询过相关专业人员,还是觉得煮米饭升糖快,因为米饭煮的话,糖分会很快

    生活 2021年10月31日
  • 怎么使用JavaScript中的sort

    技术怎么使用JavaScript中的sort本篇内容主要讲解“怎么使用JavaScript中的sort”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用JavaScrip

    攻略 2021年11月20日
  • Oracle数据库产重启服务和监听程序怎么实现

    技术Oracle数据库产重启服务和监听程序怎么实现这篇文章主要介绍“Oracle数据库产重启服务和监听程序怎么实现”,在日常操作中,相信很多人在Oracle数据库产重启服务和监听程序怎么实现问题上存在疑惑,小编查阅了各式

    攻略 2021年12月11日
  • 在html5中头部包含哪个元素结构(html5头部内容通常包括哪个元素)

    技术html5头部内容通常包括什么内容这篇文章主要介绍html5头部内容通常包括什么内容,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! html5头部内容通常包括:1、

    攻略 2021年12月17日