0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

时序逻辑等效性的RTL设计和验证流程介绍

电子设计 作者:郭婷 2018-11-23 09:30 次阅读

寄存器传输级(RTL)验证在数字硬件设计中仍是瓶颈。行业调研显示,功能验证占整个设计工作的70%.但即使把重点放在验证上面,仍有超过60%的设计出带需要返工。其主要原因是在功能验证过程中暴露出来的逻辑或功能瑕疵和缺陷等。显然,需要进一步改进验证技术。

设计团队一般采用系统模型进行验证。就验证来说,系统模型比RTL更具优势,比如系统模型易于开发且具有优异的运行时性能。挑战性在于如何在系统级验证和生成功能正确的RTL间建立起桥梁。一种称为时序逻辑等效性检查的方法具有桥接两者的能力,它是基于C/C++或SystemC编写的规范来对RTL实现进行形式验证。

本文将讨论商用图形处理芯片所采用的从系统级到RTL的设计和验证流程。在该流程中,先要开发出系统模型,然后用它来确认视频指令的算术运算,然后再采用时序逻辑等效性检查方法验证RTL实现。

系统级流程

随着设计复杂性的增加,为了仿真整个系统,系统级建模变得不可避免。伴随功能划分、模块接口硬件/软件协同设计而来的设计复杂性呈指数形式增长,使得系统验证势在必行。目前常采用C/C++或SystemC进行系统级设计和验证。

本例采用了C/C++来建模视频处理算法模块。一旦系统模型完成了调整和验证,RTL设计师就可以编写Verilog代码。高层综合工具可以从系统代码生成RTL.但工程师更常见的做法是用RTL代码手工重新编写设计。它是设计的解释而非转换。即便已用多种验证测试平台对RTL实现进行了验证,采用基于仿真的方法也无法测试全部可能的状态。

在设计流程中有许多验证工具和方法可以采用,它们包括:基于断言的验证,随机激励生成和以覆盖率驱动的验证等。上述方法在功能上也许是值得依赖的,但它们都没有借助系统模型。时序逻辑等效性检查方法可以将系统模型的这种信心直接转换为RTL实现。

图形处理器市场受成像质量、再现性能和用户购买时机的影响很大。对负责研制最新图形处理器芯片的项目团队来说,上述因素要求他们迅速开发出新算法、拿出新设计。为了满足这种要求,可以采用系统模型来弥合初始规范和出带间的差距。当项目开始时,受控随机RTL仿真已运行好几天了,但验证工程师仍担心会有“遗漏”的缺陷。被测RTL设计可以实现视频和非视频指令,并用在建项目的算术模块来创建下一代视频处理芯片。

设计验证

验证工作主要集中在21条视频指令,范围从“并行转移”到“具有缩小作用的绝对差”等操作。采用时序逻辑等效性检查方法的目标是借助用C/C++编写的原始系统模型在芯片级回归前改进RTL验证。时序逻辑等效性检查可以用来发现仿真遗漏的缺陷,并改进RTL设计的调试工作。

算法模块的系统模型是用2,391条C/C++语句实现的。该项目的第一步包含改进C/C++代码使得时序逻辑等效性检查器可读懂它。因该模型最初并非是为等效性检查编写的,所以其中的一些设计构造不符合时序工具语言子集。该项目团队使用“< ifdef >”语句,来滤析出没有明显硬件概念的构造,例如:“reinterpret cast”和“static cast”.通过修改C/C++代码来实现这些改变。今后,遵循C/C++开发过程中的编码指南后可以不再需要修改设计模块。

设计团队接下来的工作是设置验证环境。时序逻辑等效性检查需要在验证前对复位状态和诸如时序和接口差异等时序差异进行规定。时序差异被具体规定为I/O映射和设计延时。

针对用C/C++编写的系统模型,可以通过添加一个薄的SystemC“封装器”来引入复位和时钟,中间不用改变C/C++模型。

该视频处理器算法块的RTL实现用了4,559行RTL码,延时是7个时钟周期。C/C++系统模型的延时是1个时钟周期,它是由SystemC“封装器”引入的。设计团队随后规定一组新输入数据送至每个设计的频率。因为RTL是管线结构,因此新数据是逐个时钟周期输入的。这样,C/C++和RTL的吞吐量都是1.

时序逻辑等效性检查采用时序分析和数学形式算法来验证这两个模型的全部输入组合是否一直能得到相同的输出。与仿真不同,它并行地验证全部输入条件。在该项目中,相当于同时验证全部指令。因为每一条视频指令实现一个具体算法功能,设计团队可以决定一次验证一条视频指令来提升调试效率。

因为了解被测试的指令,所以与同时对全部指令进行调试相比,确认与任何缺陷相关的逻辑更加容易。另外,当一次只验证一条指令时,时序逻辑等效性检查器运行时运行得更快,从而进一步提升了调试效率。

当验证第一条指令(VEC4ADD)时,在RTL模型中发现了9个设计缺陷、在系统模型中找到1个缺陷。系统模型中发现的缺陷可以指导设计师如何在以后设计中消除C++代码中的歧义。

时序逻辑等效性检查能用10个或更少时钟周期的精简反例来确认设计差异。对每个反例波形来说,产生的波形可以显示导致设计差异的精确输入序列。

时序逻辑等效性的RTL设计和验证流程介绍

图:由于RTL是管线结构,新数据是逐个时钟周期输入的。因此C/C++与RTL具体有相同的吞吐量

测试基准的再利用

对每条指令而言,时序逻辑等效性方法可在5分钟内发现差异并生成反例。时序逻辑等效性检查还将以测试基准的方式生成反例,这些反例能与原始C和RTL设计一道在仿真时运行。测试基准包含监视器,因此能暴露以波形方式显示的相同设计缺陷。

在本项目中,反例测试基准被复用为单元级回归测试套件。

在改正VEC4ADD指令代码中的问题后,时序逻辑等效性检查器在361秒内用52MB证实了系统模型和RTL间的等效关系。若对该指令实施穷举仿真,则需运行3.7 x 1034个测试向量,这样,即便采用的是1百万周期/秒的仿真器,尽我们一生也难以完成验证。

验证第一条指令(VEC4ADD)所需的全部工作历时4天,其中包括设置时间、对多个设计缺陷的调试及取得完全确认的时间。第二条指令利用与第一条指令相同的设置脚本,从而允许设计师立即投入调试。他们可以在两天内对第二条指令(VEC2ADD)的10个缺陷进行查找、纠错及纠错后的确认。通过推断,全部验证这21条指令需5到7周时间,实际用时取决于发现的缺陷数量。当采用基于仿真的验证方法时,设计团队完成相同验证工作需要花6个月的时间。

验证结果

使用系统模型完成图形指令的RTL验证是成功的。总共发现了19个功能缺陷。借助简练的反例,时序逻辑等效性检查方法可以改进验证质量、缩短调试周期。找到的缺陷包括:不正确的符号扩展、遗漏的箝位逻辑以及初始化错误等,这些缺陷将导致图像质量的降低、软件设计反复或芯片返工。

时序逻辑等效性检查方法能够借助用C/C++或SystemC编写的系统模型发现缺陷和验证RTL实现。它无需额外的测试基准或断言就能提升功能验证效率。通过识别难以发现的缺陷以及那些被传统仿真方法遗漏的缺陷,时序逻辑等效性检查方法能把设计风险降至最小。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5032

    浏览量

    117745
  • C++
    C++
    +关注

    关注

    21

    文章

    2066

    浏览量

    72900
  • 代码
    +关注

    关注

    30

    文章

    4556

    浏览量

    66784
收藏 人收藏

    评论

    相关推荐

    RTL时序逻辑的综合要求

    数字门级电路可分为两大类:组合逻辑时序逻辑。锁存器是组合逻辑时序逻辑的一个交叉点,在后面会作
    的头像 发表于 01-13 13:57 1884次阅读
    <b class='flag-5'>RTL</b><b class='flag-5'>时序</b><b class='flag-5'>逻辑</b>的综合要求

    基于FPGA的混合信号验证流程

    部分的复杂度(包括寄生RLC对时序的影响等)特性都已完整调整,且规格上的数据已考虑到这些。因此所有的验证循环都可以致力于设计的适当功能上。下一个需要的是可以尽量减少特征化和强化设计功能
    发表于 10-16 22:55

    关于功能验证时序验证、形式验证时序建模的论文

    半定制/全定制混合设计的特点,提出并实现了一套半定制/全定制混合设计流程中功能和时序验证的方法。论文从模拟验证、等价
    发表于 12-07 17:40

    IC设计流程简介

    单元,ATPG,以及边界扫描电路BoundScan,测试Memory的BIST。流程:【逻辑设计--子功能分解--详细时序框图--分块逻辑仿真--电路设计(算法的行为级,
    发表于 12-19 16:20

    IC设计流程介绍

    Compiler仿真验证通过,进行逻辑综合。逻辑综合的结果就是把设计实现的HDL代码翻译成门级网表netlist。综合需要设定约束条件,就是你希望综合出来的电路在面积,时序等目标参数
    发表于 08-13 17:05

    IC设计流程介绍

    :电路图输入、电路仿真、版图设计、版图验证(DRC和LVS)、寄生参数提取、后仿真、流片。一个完整的半定制设计流程应该是:RTL代码输入、功能仿真、逻辑综合、形式
    发表于 08-16 09:14

    数字芯片设计流程

    验证范畴,它是从功能上(STA是时序上)对综合后的网表进行验证。常用的就是等价检查方法,以功能验证后的HDL设计为参考,对比综合后的网表
    发表于 02-12 16:09

    IC验证在现代IC设计流程中的位置和作用

    )这里统一使用DUT)的正确验证主要保证从特性列表到RTL转变的正确,包括但不限于以下几点:DUT的行为表现是否与特性列表中要求的一致。DUT是否实现了所有特性列表中列出的特性。
    发表于 12-01 14:39

    时序逻辑等效RTL设计和验证流程介绍

    关于时序逻辑等效RTL设计和验证流程
    发表于 04-28 06:13

    从几个方面阐述数字逻辑的可验证设计

      数字逻辑的可验证是指,数字逻辑RTL代码)中所具备的有助于验证工程师开展
    发表于 04-04 17:24

    全定制和半定制简易IC设计流程介绍

    ,右侧为用到的相应EDA工具): 一个完整的半定制设计流程应该是:RTL代码输入、功能仿真、逻辑综合、形式验证时序/功耗/噪声分析,布局布
    发表于 10-20 11:38 25次下载
    全定制和半定制简易IC设计<b class='flag-5'>流程</b><b class='flag-5'>介绍</b>

    IC设计流程之全定制和半定制

    一个完整的半定制设计流程应该是:RTL代码输入、功能仿真、逻辑综合、形式验证时序/功耗/噪声分析,布局布线(物理综合)、版图
    发表于 11-24 09:17 1.1w次阅读

    FPGA逻辑设计与验证流程

    静态时序分析是一种重要的逻辑验证方法,设计者根据静态时序分 析的结果来修改和优化逻辑,直到设计满足要求。
    发表于 11-11 09:42 568次阅读

    形式验证入门之基本概念和流程

    和静态时序分析工具一起来完成对电路完备的验证。本文就以Synopsys公司的formality工具为例,来介绍形式验证流程和基本概念,后续
    的头像 发表于 12-27 15:18 1258次阅读

    芯片设计中逻辑仿真和数字验证介绍

    芯片设计的逻辑仿真和数字验证是芯片设计流程中非常重要的一环,它主要用于验证芯片的功能和时序等方面的正确性。下面是
    的头像 发表于 09-14 17:11 777次阅读