原创 这不就是“可综合的断言监控器”么?!

2009-9-5 13:48 6038 13 13 分类: FPGA/CPLD

    最早看到“可综合断言”是在VMM里。书中介绍的断言在设计验证中的强大功能我能够理解,并且在代码里也实际应用过。但是正因为断言具备强大的交互能力,才使得我对断言的可综合性迷惑不解。 riple


    即使采用可综合语句在芯片中用逻辑电路实现了断言监控器,当硬件电路实际运行时,断言监控器又如何与设计师沟通呢?断言的输出通道如何在电路中建立呢?在一篇文章中看到过一种方法:用一个CPU收集断言信息并实现与设计师的沟通。我能想出的另一个方法是一个足够大的FIFO再配合Virtual JTAG。但是这样做只能获得“什么事件发生过”的信息。如果再配合一个计数器,还能获得“何时发生”的信息。这些信息虽然有用,但是对于电路调试者来说仍然不够。对电路调试者来说,最佳的信息形式是波形,大量的波形。 riple


    感谢天才而勤奋的Altera的工程师们,他们先是发明了一种叫做SignalTap II的芯片内部波形观察工具(嵌入式逻辑分析仪),让我们看到了芯片内部的运行状况,然后又给这一工具加入了“基于状态的触发方式”,而这一功能只有在昂贵的外部逻辑分析仪中才会提供。采用了状态触发的SignalTap II,就可以在FPGA调试——这一让我又爱又恨的工作中——扮演“可综合的断言监控器”的角色。 riple


    State-based triggering flow是在Quartus II 7.2版本中新添加的功能。不同于原有的Sequential触发方式中通过增加触发级别实现的简单时序触发功能,State-based触发方式可以实现复杂而且精确的时序触发功能,甚至可以通过添加可动态配置的计数器实现“触发后延时采样”的功能。为了实现复杂时序触发条件的准确描述,Quartus II中提供了SignalTap II Trigger Flow Description Language这一触发条件编程语言(别怕,这种语言的语法非常简单,就是一串if else和goto语句)。 riple


    能够对电路的预期行为进行准确描述,能够在电路中实时运行,还能够给出事件发生时相关信号的波形,这不就是我需要的“可综合的断言监控器”么! riple


    在我看来,Sequential触发方式与State-based触发方式都可以用于检测简单的握手关系,而且都需要通过增加触发级别(Trigger level)来实现对时间上存在先后关系的事件的检测。在检测简单时序关系的情况下,Sequential触发方式更简单灵活一些。 riple


   在检测复杂时序关系时,还是State-based触发方式更高效。这是因为State概念的引入,可以使得触发条件的描述与真实电路的状态迁移行为一致。许多在Sequential触发方式下需要Advanced触发条件才能描述的情况都可以在State-based触发方式下用Basic触发条件实现。由于State-based触发方式中的一些参数可以实时更改,省去了重新编译的时间,就比Sequential触发方式下使用Advanced触发条件灵活了许多。在Sequential触发方式下,只能触发依次发生的事件,如果需要触发循环事件或者部分循环事件就需要设置多级重复的触发级别;在State-based触发方式下,由于有了可命名的State,就可以通过goto语句实现触发事件的循环,可以省去重复的触发级别,减少逻辑资源的占用。State-based触发方式中的触发条件状态机,是昂贵的外部逻辑分析仪才具备的功能。这是3年多来,Altera在SignalTap II调试手段上的一个重大突破。(这一技术与同时在Quartus II 7.2中引入的图形化FSM输入方式采用的技术有一定关联。这表明,Altera在FSM代码自动生成上有了自己的核心技术。) riple


    在需要检测的两个或多个事件之间存在精确的时间关系的情况下,State-based触发方式中的counter也是很有用的。除此之外,采用counter实现的“触发后延时采样”也是一个非常实用的功能:在采用Sequential触发方式的调试中,为了用有限的采样窗口捕获在一个确定触发事件之后很长时间才出现的波形,我不知道想了多少窍门,花了多少时间。 riple


    下面,就是Altera网站上刚刚公布的如何使用State-based触发方式的一组例子: riple


Trigger on an Event Absent for Greater than or Equal to 5 Clock Cycles
Trigger on Event Absent for Less than 5 Clock Cycles
Trigger on 5th Occurrence of a Group Value
Trigger on the 5th Transition of a Group Value
Trigger after Condition1 is Followed by Condition2
Trigger on Condition1 Immediately Followed by Condition2
Trigger on Condition2 not Occurring Between Condition 1 and Condition3
Trigger on the 5th Consecutive Occurrence of Condition1
Trigger after a Violation of Sequence: Condition1->Condition2->Condition3->Condition4
Trigger on a Sequence of Edges
Trigger on Condition1 Followed by Condition2 after 5 Clock Cycles
Trigger on Condition1 Followed by Condition2 within 5 Clock Cycles
Trigger on Condition1 not Followed by Condition2 within 5 Clock Cycles
Trigger after 5 Consecutive Transitions
Trigger when Condition1 Occurs less than 5 Times Between Condition2 and Condition3

相关链接:FPGA设计验证关键要点


用于可编程逻辑设计的快速、有效的RTL调试解决方案(上)


用于可编程逻辑设计的快速、有效的RTL调试解决方案(下)


Synplicity助Foundry快速定位FPGA设计中的bug


基于FPGA的原型:为什么所有的ASIC都应该采用FPGA来创建原型(上)


基于FPGA的原型:为什么所有的ASIC都应该采用FPGA来创建原型(下)


The Chip is Ready. Am I done? On-chip Verification using Assertion Processors点击下载

文章评论2条评论)

登录后参与讨论

ash_riple_768180695 2008-3-15 20:34

I don't know the difference. But I think they are equivalent.

用户48407 2008-3-15 11:00

xilinx的chipscope不也是这样的功能吗?您知道它们有什么区别吗?
相关推荐阅读
ash_riple_768180695 2015-12-18 11:06
学习示例程序:FPGA快速系统原型设计--敏捷实践
        学习与开发板配套的示例程序,是敏捷实践的起点。示例程序是厂商针对开发板上提供的硬件资源和接口量身定做的工程,可以展示其FPGA芯片的功能和性能特点。从示例程序入手最大的好处就是:示...
ash_riple_768180695 2015-11-03 16:46
开发板选取:FPGA快速系统原型设计--敏捷实践
    既然是“实践”,就不能只谈编码和仿真,必须要上板运行、调试。这个虚拟项目的目标是实现一块兼容Intel82574L以太网控制器的千兆网卡,需要运行在一块具备PCIe接口和10/100/10...
ash_riple_768180695 2015-10-22 12:41
开篇:FPGA快速系统原型设计--敏捷实践
    虽然借用了 “系统原型开发”的标题,本系列文章将围绕FPGA IP级别的开发这个主题展开,如果可能的话,将扩展至FPGA System级别的开发。     先上一篇PPT:RSPwFP...
ash_riple_768180695 2013-08-26 10:21
学习SystemVerilog(二)——学习它的理由
    学习SystemVerilog的理由也很多,我在阅读SystemVerilog for Design 和 SystemVerilog for Verification两本书前言的过程中,总...
ash_riple_768180695 2013-08-26 10:19
学习SystemVerilog(一)——不学习它的理由
    想要学习SystemVerilog已经很久了。曾经尝试通过Accellera网站上给出的LRM学习,怎奈内容众多,找不出入手点和重点,只能望而却步。虽然手头有三本SystemVerilog...
ash_riple_768180695 2011-06-26 23:20
Hardware-Assisted IEEE1588 Implementation Analysis
06/18/11 11:00:05 PM         最近一段时间在研究IEEE1588-2008精确时间同步协议(PTP)。该协议可以在软件中实现,如果需要提高时间同步...
我要评论
2
13
关闭 站长推荐上一条 /2 下一条