SignalTap II使用技巧_1

操作过程简单如下如下:

1、完成对工程的单次编译;

2、打开signalTap II 图形界面,添加信号,并作相关设置;然后保存成.stp文件,添加到工程。

3、重新编译并下载到FPGA;

4、打开之前的stp文件,连接jtag就可以触发,并观察信号。

其实就是那么几步,但是当中的细节却不少:

A、对工程的编译有两种方式,一种是全编译(start compilation),另一种只是做编译(start analysis & synthesis),不做映射(mapping),这两种方式,会对应两种网络节点(node),也就是我们的信号名称,signaltap观察点的增加就是以这些node作为用户的交互信息,“全编译”后根据全编译的网表,相应的node信息选择signaltap II:post-fitting;“start analysis & synthesis”编译后,signaltap选择signaltap II:pre-synthesis;那么这两种有什么区别呢?

选择pre-synthesis:以“start analysis & synthesis”综合后的网表中的node信息做为signaltap的信息节点,并且将其添加到工程后,再次编译工程,会重新综合并重新布局布线整个工程的所有逻辑。

选择post-fitting:官方文档中给过这个node的使用场景,大概意思是当我们的工程编译完成后,下载到FPGA中,发现工程项目有问题,此时想加入signaltap来分析问题,但又不想改变之前的布局布线的结果,此时选择这个node来作为观察信息的来源,quartus会自动启动增量编译来编译增加的signaltap逻辑,保留之前的逻辑布线和布局结果。

按我的理解就是,有“预谋”的使用signaltap就使用pre-synthesis,“意外”情况就使用post-fitting。

B、添加完要观察的信号之后,就需要完成相关的设置,例如下图:
在这里插入图片描述
clock:很明显,就是采样时钟,选择你设计中的时钟,或者从外部输入都可以。数据在他的每一上升沿被采样,并存入到RAM中,他的频率越高,对一个点附近采样的数据就越多,信号就越保真;

Sample depth:采样深度,就是给采样数据分配的存储空间的大小。

上述两个参数决定了一个问题,Sample depth固定,采样频率越高,那么在触发点附近,采样的时间跨度就很小,只能采样触发点很短时间范围内的信号变化(这个时间可以很简单的计算出来)。所以这两个参数选择时斟酌斟酌。

segmented:这个设置允许我们分段缓存,也就是说可以同时查看多个触发点,例如将128kb的采样深度分为64k x 2的两个缓冲区,在同一个显示区间,可以查看两个连续的触发点的触发结果。假如同一触发信号的两个触发点之间的采样点数没有64k,则在第一个和第二个触发点之间采样点都会被记录,少于64k的那些点会补充到,第二个触发点之后继续采样,即第二段采样点是多于64k的。

storage qualifier:这个设置项,帮助你在调试你的设计时,指定存储器中存储的数据类型(the type of data stored in memory),默认模式下,signalTap II的此选项为“continuously”,即连续捕获并存储每一个时钟沿的数据,另外在此模式下,可以指定捕获并存储设计中的某几个信号。其他选项如下:

Input Port:当输入信号是高电平时,捕获数据。这个模式下会生成一个端口,我们需要给他赋予一个信号

Transitional:在指定的数据发生变化时,捕获并存储数据。

Conditional:允许通过设置一个存储使能信号作为存储的条件,这个信号同时作为触发输入信号。

也就是说当触发条件发生时,那些信号会被存储到ram中有这些设置来决定,一般就直接选择continuously

再来看看触发条件的设置:

trigger flow:触发流,也即是触发的顺序控制。

其可选参数是:sequential 和state-based;

sequential:在触发采集缓冲区之前,顺序计算所有的触发条件,即当一个触发条件满足后,判断第二个触发条件是否满足,以此类推,所有都满足时触发。

state-based:此模式下,可自行定制触发的顺序,当你对你的设计进行调试时,使得你对触发的条件有更进一步的控制。你可以查看每一个状态下的触发条件,并可以在“state-based trigger flow”的状态机编辑器中编辑他们。

triggle position:设置采样位置,有以下三个采样位置可选

Pre-trigger position:保存触发信号发生之后的信号状态信息(88%触发后数据,12%触发前数据)。

Center-trigger position:保存触发信号发生前后各50%的数据。

post-trigger position:保存触发信号发生之前的信号状态信息(88%触发前数据,12%触发前数据)。

上述的这个设置,我当时没理解,我一直以为是当触发信号发生后,采样时钟才啪啪啪开始采样触发点后面的数据,直到采样存储的RAM慢为止;其实不是,采样的数据放置在一个循环采集buffer(sample depth设置的大小)中,采样时钟总是在采样被观测的信号,这个buffer总是用最新的数据代替后来的旧的数据。当触发条件发生后,signaltap继续采集触条件发生后的数据,以便作为触发后的数据。上述三个设置就是设置到底在触发后,保留触发条件发生前多少点,并还需要采集多少点。理解可参考下图:
在这里插入图片描述
trigger conditions:触发级数

多级触发功能提供了更为精确的触发条件。多级触发中,SignalTap Ⅱ首先对第一级的触发表达式进行判断,结果为TRUE时,再对第二级的触发表达式进行判断,直到所有的触发条件都成立时,SignalTap Ⅱ开始捕获信号。

上面基本上重要的参数就记录完了,下面源自网上一些摘录(具体链接没有了,没法向转载者致谢):

1、使用的注意点

a) 逻辑分析仪需要硬件支持,所以不是所有的FPGA芯片都支持。

b) 一般流程是:完成设计——编译工程——建立SignalTapII (.stp)文件并加入工程——重新编译——下载设计到FPGA——在Quartus II软件中显示被测信号的波形;在测试完毕后将该逻辑分析仪从项目中删除。

c) 采样时钟决定了显示信号波形的分辨率,此时钟应该大于被测信号的最高频率。

d) 逻辑分析仪的有些信号不可测量,如下:逻辑单元的进位信号(进位链)/PLL的时钟输出/JTAG引脚信号/LVDS信号

2、 在设计中增加signalTap II,引起的问题和解决方法

FPGA的资源是有限的。设计已经占用了可观的资源(%的LE,%的MB),signaltap还要和设计抢占资源。“抢占”在这里是很贴切的,既包括抢占LE、MB,还包括布局资源和布线资源。我把“抢占”造成的影响叫做“测不准原理”。这一原理是贯穿signaltap调试始终的一条基本原理。一句话来说,就是“对信号的观察会对信号引入影响”。这些影响绝大部分表现不出来,或者是我没有刻意去观察;但是表现出来的影响是原有的设计功能发生了变化。有的变化是原有的bug不出现了(这应该看作是坏的变化),有的变化是新的bug出现了。

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

  1. signaltap工具本身存在bug。这一点我无法证实,只是猜想。signaltap的原理是在设计的网表中插入触发逻辑和存储逻辑以及用于和PC机通讯的虚拟JTAG链路实现嵌入式逻辑分析仪功能的。这一插入过程是由QUARTUS软件完成的,对用户是不可见的。由于用户无法控制和约束这一过程,加入signaltap后的电路功能与用户设计初衷相违背也是可能的。

  2. 被观察的信号扇出变大,造成设计的时序余量发生变化。实现触发逻辑需要在信号路径上加入触发器和组合逻辑,这样一来必然造成被观察信号的扇出变大,信号的输出延时增大。如果被观察信号的时序很紧张的话,加大信号的延时可能使时序关系变好(原有的bug不出现了),也可能恶化其时序(bug出现得频繁了或新的bug出现了)。

  3. 由于“抢占”的存在,造成设计的时序余量发生变化。由于触发逻辑和存储逻辑的加入,FPGA的资源要重新分配。原设计在FPGA内的布局位置和布线资源会发生变化,时序也会受到影响。往往加入signaltap后,布局布线后的时序分析结果会比原来差。

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

  1. 在每次重新编译之前,对信号的保留做一个评估,如果被观察信号被证明与要查找的问题无关,就删除这个信号。
  1. 在每次编译成功之后,要查看编译报告,如果系统的逻辑资源利用比例在95%以上,就要考虑去除一些被观察信号或去除几个触发级别,或者减小采样深度。

  2. 如果有必要的话,把仅需要作为触发条件的信号的采样使能关闭也能显著减少逻辑资源的占用。

  3. 系统存储资源的占用比例也要考虑在内,不可占用太多。与此相关的选项是采样深度、信号个数、信号的采样使能是否关闭。

  4. 编译成功后,要查看时序分析报告。如果系统时序下降很大或者被观察信号的时序不能满足,要考虑采用上面的方法减少对逻辑资源的占用。

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

  1. 尽可能从设计的顶层选择信号作为采样时钟,而不是随便把哪个module的输入时钟作为采样时钟,以利于QUARTUS优化全局时钟资源的利用。

  2. 在保证观察精度的前提下,选择较低频率的时钟。

采样时钟本质上是触发条件之一(最基本的触发条件),如果恰当的选取非时钟信号(没有确定频率的信号)作为采样时钟,可以起到事半功倍的效果。

原文链接:https://blog.csdn.net/pad_nuannuan/article/details/29657053

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值