原创 关于SignalTap的问题

2009-10-15 23:53 5577 3 4 分类: FPGA/CPLD

   刚刚看了一位师兄的关于SignalTap的日志,解决了以前的一些困惑,怕忘记在此记下来。曾经遇到过一个工程中加入SignalTap和去掉SignalTap编译后结果不相同,一直无法解释具体的原因,师兄的文章如下:


FPGA的资源是有限的。 riple


    设计已经占用了可观的资源(%的LE,%的MB),signaltap还要和设计抢占资源。“抢占”在这里是很贴切的,既包括抢占LE、MB,还包括布局资源和布线资源。我把“抢占”造成的影响叫做“测不准原理”。这一原理是贯穿signaltap调试始终的一条基本原理。一句话来说,就是“对信号的观察会引入对信号的影响”。 riple


    这些影响绝大部分表现不出来,或者是我没有刻意去观察;但是表现出来的影响是原有的设计功能发生了变化。有的变化是原有的bug不出现了(这应该看作是坏的变化),有的变化是新的bug出现了。 riple


    据我分析,造成这些影响的可能原因有以下几个: riple



  1. signaltap工具本身存在bug。这一点我无法证实,只是猜想。signaltap的原理是在设计的网表中插入触发逻辑和存储逻辑以及用于和PC机通讯的虚拟JTAG链路实现嵌入式逻辑分析仪功能的。这一插入过程是由QUARTUS软件完成的,对用户是不可见的。由于用户无法控制和约束这一过程,加入signaltap后的电路功能与用户设计初衷相违背也是可能的。  riple
  2. 被观察的信号扇出变大,造成设计的时序余量发生变化。实现触发逻辑需要在信号路径上加入触发器和组合逻辑,这样一来必然造成被观察信号的扇出变大,信号的输出延时增大。如果被观察信号的时序很紧张的话,加大信号的延时可能使时序关系变好(原有的bug不出现了),也可能恶化其时序(bug出现得频繁了或新的bug出现了)。  riple
  3. 由于“抢占”的存在,造成设计的时序余量发生变化。由于触发逻辑和存储逻辑的加入,FPGA的资源要重新分配。原设计在FPGA内的布局位置和布线资源会发生变化,时序也会受到影响。往往加入signaltap后,布局布线后的时序分析结果会比原来差。 riple

    我解决上述矛盾的方法是尽可能少地添加被观察信号。我常用的几个方法是: riple



  1. 在每次重新编译之前,对信号的保留做一个评估,如果被观察信号被证明与要查找的问题无关,就删除这个信号。  riple
  2. 在每次编译成功之后,要查看编译报告,如果系统的逻辑资源利用比例在95%以上,就要考虑去除一些被观察信号或去除几个触发级别,或者减小采样深度。
  3. 如果有必要的话,把仅需要作为触发条件的信号的采样使能关闭也能显著减少逻辑资源的占用。 
  4. 系统存储资源的占用比例也要考虑在内,不可占用太多。与此相关的选项是采样深度、信号个数、信号的采样使能是否关闭。  riple
  5. 编译成功后,要查看时序分析报告。如果系统时序下降很大或者被观察信号的时序不能满足,要考虑采用上面的方法减少对逻辑资源的占用。 riple

    另外,采样时钟的选择对系统的整体时序影响也很大。选取的原则是: riple



  1. 尽可能从设计的顶层选择信号作为采样时钟,而不是随便把哪个module的输入时钟作为采样时钟,以利于QUARTUS优化全局时钟资源的利用。 riple 
  2. 在保证观察精度的前提下,选择较低频率的时钟。  riple
  3. 采样时钟本质上是触发条件之一(最基本的触发条件),如果恰当的选取非时钟信号(没有确定频率的信号)作为采样时钟,可以起到事半功倍的效果。

第二个问题是关于增量编译的问题,师兄的解释如下:


增量编译是建立在Design Partition技术的基础之上的。Design Partition的目标是:源代码和约束没有变化的Partition是不需要重新编译和布局布线的。SignalTapII作为一个 Partition,由于其要观察的信号数量发生了变化,其重新编译和布局布线是不可避免的;但是设计的其他部分,作为被观察对象,是不需要重新编译和布局布线的,这样就有效地缩短了编译时间,并保持了原有设计的时序特性。SignalTapII的观察对象,可以有综合前、综合后、布局布线后三种基本网表,每一种网表由于其优化力度不同,其可被观察的信号数量和信号名称都是不同的。在包含SignalTapII的增量编译过程中,对布局布线后的网表中包含的信号进行观察是不需要对被观察的设计部分进行重新编译的,只有这样才能最大地发挥增量编译的效果;如果对其他两种网表进行观察,由于某些信号在布局布线过程中被优化掉了,要观察它们,势必要对被观察部分的设计重新进行布局布线并在布局布线过程中对这些原本被优化掉的信号加以保留,这样一来,增量编译就退化成了全编译,失去了增量编译的优势。

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户377235 2013-9-10 08:46

顶一下师兄
相关推荐阅读
用户232569 2010-02-08 23:31
FSM安全问题
        关于怎样才能使状态机稳定可靠,其实状态机的可靠不取决于状态机编码方式和风格,而是取决于综合工具的选项,开启Safe State Machine选项,这一选项是引入了“Booby Tra...
用户232569 2010-02-05 21:09
FPGA中状态机跑飞的情况
    我在一个设计中遇到了这样一个情况,状态机跑飞,(这种情况也不是经常出现,只有在零下10度左右会出现这个情况)。当我用type state is s0,s1,s2,s3;signal c_sta...
用户232569 2009-10-15 23:01
使用QuartusII自带fifo时遇到的问题
     最近做Flash控制器,用到了缓存,为了方便直接使用QuartusII自带异步fifo,但是在使用过程中却出现这样一个问题,输入数据为递增计数器,但是用SignalTap观察却发现在从输出f...
EE直播间
更多
我要评论
1
3
关闭 站长推荐上一条 /3 下一条