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

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

3天内不再提示

SoC的功能验证

sally100 来源:数字ICer 作者:数字ICer 2022-11-29 16:15 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

随着设计的进行,越接近最后的产品,修正一个设计缺陷的成本就会越高。

e70bcbf8-6fbc-11ed-8abf-dac502259ad0.png

不同设计阶段修正一个设计缺陷所需费用示意图

1.功能验证概述

IC设计与制造领域,通常所说的验证(Verification)和测试(Test)是两种不同的事

验证

在设计过程中确认所设计的正确性

通过软件仿真、硬件模拟和形式验证等方法进行

在流片之前要做的。

测试

检测芯片是否存在制造或封装过程中产生的缺陷。

采用测试设备进行检查

功能验证

功能验证一般是指设计者通过各种方法比较设计完成的电路和设计文档规定的功能是否一致,保证逻辑设计的正确性。

通常不包括面积、功耗等硬件实现的性能检测。

SoC功能验证的挑战

系统复杂性提高增加验证难度

设计层次提高增加了验证工作量

e7197474-6fbc-11ed-8abf-dac502259ad0.png

发展趋势

2.功能验证方法与验证规划

e72ebfbe-6fbc-11ed-8abf-dac502259ad0.png

仿真为基本出发点的功能验证方法

功能验证开发流程制订验证计划

功能验证需求

激励产生策略

结果检测策略

验证开发

提高验证的效率

e74e2f5c-6fbc-11ed-8abf-dac502259ad0.png

功能验证开发流程

3.系统级功能验证

行为级功能验证

测试数据控制流,包括初始化和关闭I/O设备、验证软件功能、与外界的通信,等等

性能验证

通过性能验证可以使设计者清楚地知道整个系统的工作速度、功耗等性能方面的指标。

协议验证

根据总线协议对各个模块的接口部分进行验证

系统级的测试平台

边界条件

设计的不连续处

出错的条件

极限情况

系统级的测试平台标准

性能指标

覆盖率指标

e761d142-6fbc-11ed-8abf-dac502259ad0.png

4.仿真验证自动化

e779fef2-6fbc-11ed-8abf-dac502259ad0.png

激励的生成

直接测试激励:检测到测试者所希望检测到的系统缺陷

可以快速、准确地产生大量的与实际应用一致的输入向量

随机测试激励:

检测到测试者没有想到的一些系统缺陷带约束的随机测试激励是指在产生随机测试向量时施加一定的约束,使所产生的随机测试向量满足一定的设计规则。

带约束的随机激励生成的例子

x1和x2为系统的两个输入,它们经过独热码编码器编码之后产生与被验证设计(DUV)直接相连的输入

输入约束:in[0] + in[1] + in[2] <= 1

e7a47ea2-6fbc-11ed-8abf-dac502259ad0.png

这样产生的随机向量就可以保证它们的合法性。

用SystemVerilog语言写的带约束随机激励生成例子

输入data的数量限制在1~1000

programautomatictest; //defineconstraint classTransaction; randbit[31:0]src,dst,data[];//Dynamicarray randcbit[2:0]kind;//Cyclethroughallkinds constraintc_len {data.sizeinside{[1:1000]};}//Limitarraysize Endclass //instantiation Transactiontr; //startrandomvectorgeneration initialbegin tr=new(); if(!tr.randomize())$finish; transmit(tr); end endprogram

响应的检查

可视化的波形检查:直观,但不适用于复杂系统设计

自动比对检查:通过相应的检测模型或验证模型来自动完成输出结果的比对

e7b8bac0-6fbc-11ed-8abf-dac502259ad0.png

覆盖率的检测

覆盖率数据通常是在多个仿真中收集的.

覆盖率的模型由针对结构覆盖率(Structural Coverage)和功能覆盖率(Functional Coverage)两种目标而定义的模型所组成。

可细化为:

限状态机覆盖率(FSM Coverage)
表达式覆盖率(Expression Coverage)
交叉覆盖率(Cross Coverage)
断言覆盖率(Assertion Coverage)

用SystemVerilog语言写的覆盖率检测的例子

programautomatictest(busifc.TBifc); classTransaction; randbit[31:0]src,dst,data; randenum{MemRd,MemWr,CsrRd,CsrWr,I oRd,IoWr,Intr,Nop}kind; endclass covergroupCovKind; coverpointtr.kind;//Measurecoverage endgroup Transactiontr=new();//Instantiatetransaction CovKindck=new();//Instantiategroup initialbegin repeat(32)begin//Runafewcycles if(!tr.randomize())$finish; ifc.cb.kind<= tr.kind;   // transmit transaction               ifc.cb.data <= tr.data;   //   into interface               ck.sample();              // Gather coverage              @ifc.cb;                  // Wait a cycle           end      end endprogram

5.形式验证

形式验证(Formal Verification)

静态形式验证(Static Formal Verification)和半形式验证(Semi-Formal Verification)

静态形式验证不需要施加激励,也不需要通过仿真来验证。目前,SoC设计中常用的静态形式验证方法是相等性检查。

半形式验证是一种混合了仿真技术与形式验证技术的方法。常用的半形式验证是混合属性检查或模型检查,它将形式验证的完整性与仿真的速度、灵活性相结合。

相等性检查(Equivalent Check)

对设计进行覆盖率100%的快速验证

主要是检查组合逻辑的功能相等性

不需要测试平台和测试矢量,不需要进行仿真

可用于比较RTL与RTL、RTL与门级、门级与门级的功能相等性,被广泛应用于版图提取的网表与RTL代码比较,特别是做完ECO后要进行网表和修改后的RTL的相等性检查。

半形式验证(Semi-Formal Verification)

仿真和形式验证形结合,如混合模型检查(Model Checking)或属性检查(Property Checking)的方法。

e7cef51a-6fbc-11ed-8abf-dac502259ad0.png

6.基于断言的验证

仿真验证面临的问题:可观测性和可控制性

合适的输入矢量能够激活错误

错误要能够以某种预期的形式输出

采用断言描述设计的行为,在仿真时起到监控作用,当监控的属性出现错误时,立刻触发错误的产生,增加了设计在仿真时的可观测性问题。

也可以用在形式属性检查中作为要验证的属性。属性检查(Property Check)时,是对整个状态空间进行搜索,能够控制到每一个信号并能指出错误的具体位置,解决了设计验证时的可控制性和可观察性问题。

e7e77266-6fbc-11ed-8abf-dac502259ad0.png

验证实现所花费的时间与验证的质量

断言的作用

e808a03a-6fbc-11ed-8abf-dac502259ad0.png

e829515e-6fbc-11ed-8abf-dac502259ad0.png

断言语言及工具的使用

断言语言

C or SystemC
SystemVerilog Assertion (SVA)
Property Specification Language (PSL) (IBM, based on Sugar)
Open Verification Library (OVL)
Verilog, VHDL

SVA(SystemVerilog Assertion)例子

用Verilog实现的检查器:

always@(posedgeA) beginrepeat(1)@(posedgeclk); fork:A_to_B begin@(posedgeB) $display(“SUCCESS:Barrivedintime ”,$time); disableA_to_B; end begin repeat(1)@(posedgeclk) @(posedgeB) display(“SUCCESS:Barrivedintime ”,$time); disableA_to_B; end begin repeat(2)@(posedgeclk) display(“ERROR:Bdidn’tarriveintime ”,$time); disableA_to_B; end end

用SVA实现的检查器:

assertproperty (@(posedgeclk)A|->##[1:2]B);

基于断言的验证

在属性检查中使用断言

在属性检查中,最重要的就是属性描述。

e852af04-6fbc-11ed-8abf-dac502259ad0.png

在仿真中使用断言

e867a256-6fbc-11ed-8abf-dac502259ad0.png

审核编辑 :李倩

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

    关注

    38

    文章

    1405

    浏览量

    108416
  • 封装
    +关注

    关注

    128

    文章

    9330

    浏览量

    149047
  • soc
    soc
    +关注

    关注

    40

    文章

    4624

    浏览量

    230188

原文标题:SoC的功能验证

文章出处:【微信号:数字ICer,微信公众号:数字ICer】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RDMA设计50: 如何验证网络嗅探功能

    变得复杂: 这里将对网络嗅探功能进行仿真验证,测试项及测试步骤如表1 所示。 表1 网络嗅探功能验证测试项及测试步骤 (1) ARP 验证
    发表于 03-31 15:58

    Questa One 智能验证:释放人工智能在功能验证中的潜力

    在当今数字技术飞速发展的环境下,功能验证的重要性前所未有。随着系统变得越来越复杂,如何确保其可靠性和性能成为设计和验证工程师面临的重大挑战。风险极高:验证失败可能导致高昂的产品召回成本
    的头像 发表于 02-12 14:56 680次阅读

    RDMA设计38:寄存器功能验证与分析

    的控制,需要通过 AXI-Lite接口访问系统控制模块的响应寄存器。而在验证平台中,AXI-Lite 接口与 AXI-Lite Complexes对接,因此可以直接编写测试用例来对寄存器功能进行仿真
    发表于 02-09 10:26

    【「龙芯之光 自主可控处理器设计解析」阅读体验】--LoongArch的SOC逻辑设计

    编译和仿真工具,广泛应用于硬件设计和验证领域。 Verdi是一种先进的交互式调试和仿真分析工具,也由Synopsys公司开发,为设计工程师提供了强大的功能和直观的用户界面,帮助他们更高效地进行调试
    发表于 01-18 13:45

    如何验证电能质量在线监测装置的数据防篡改功能是否生效?

    验证电能质量在线监测装置数据防篡改功能是否生效,需围绕“数据采集 - 存储 - 传输 - 管理” 全生命周期,结合 “本地实操验证 + 主站联动验证 + 第三方专业检测” 三层逻辑,通
    的头像 发表于 12-12 13:54 429次阅读

    在Linux ubuntu上使用riscv-formal工具验证蜂鸟E203 SoC的正确性

    内容:在Linux ubuntu上使用riscv-formal工具验证蜂鸟E203 SoC的正确性 步骤: 1、下载和安装riscv-formal工具: bash复制代码 git clone
    发表于 10-24 07:52

    新思科技RTL与功能签核助力低功耗SoC验证

    在半导体设计中,“签核”通常被视为一个里程碑。但实际上,这涵盖了多个具有特定目标的独立验证阶段。
    的头像 发表于 10-21 10:15 1040次阅读

    e203 DDR扩展功能验证

    0xA000_000~0xAFFF_FFFF进行读写数据的功能验证。(实现功能比较简单,对代码部分不再过多阐述,核心代码如表三十三所示) int main(void){int startp = 0xA0000000
    发表于 10-21 09:24

    Altera Agilex 3/5 FPGA和SoC功能特性

    Agilex 5 FPGA 和 SoC 以及新推出的 Agilex 3 FPGA 和 SoC 代表着可编程逻辑技术方面的重大飞跃。这两个设备系列均具备全新功能,可随着设计需求的变化实现轻松迁移和灵活扩展。
    的头像 发表于 09-06 10:10 3672次阅读
    Altera Agilex 3/5 FPGA和<b class='flag-5'>SoC</b>的<b class='flag-5'>功能</b>特性

    AUDIO SoC的解决方案

    SoC(片上系统)是一种系统级集成电路。新唐科技的单芯片音频系统音频 SoC采用皮质-M0/M4内核,并采用Arm 皮质-M系列处理器的基本创新技术,包括∑△ADC、CODEC、OP、Class D
    发表于 09-05 08:26

    如何使用 Arm Helium 进行颜色格式转换和功能验证

    使用 Arm Helium 进行颜色格式转换和功能验证
    发表于 08-19 06:52

    爱芯元智M57 SoC如何满足AEB强标中的功能安全

    爱芯元智作为车载SoC创新研发企业,目前已有丰富的车载SoC量产上车经验,在开发过程中,非常重视车载芯片产品的功能安全设计。在全新推出的车载SoC产品M57系列中,
    的头像 发表于 07-09 14:45 1587次阅读
    爱芯元智M57 <b class='flag-5'>SoC</b>如何满足AEB强标中的<b class='flag-5'>功能</b>安全

    编译器功能安全验证的关键要素

    在汽车、工业、医疗等安全关键型应用中,确保功能安全合规性需要严格的工具链验证。开发安全关键型软件的企业必须遵守ISO 26262、IEC 61508、ISO 62304等国际标准对编译器工具链进行全面的验证
    的头像 发表于 07-05 13:37 1700次阅读

    Veloce Primo补全完整的SoC验证环境

    0 1   简介   SoC 设计团队的任务是在创建昂贵的生产掩膜之前完成完整的系统级验证。这意味着彻底审核所有硬件模块、这些模块之间的所有交互以及为最终应用创建的所有专用软件,而且所有这些任务都要
    的头像 发表于 06-12 14:39 1596次阅读
    Veloce Primo补全完整的<b class='flag-5'>SoC</b><b class='flag-5'>验证</b>环境

    新思科技VSO.ai如何颠覆芯片验证

    随着片上系统(SoC)复杂性不断增加,IP的复杂性与验证难度以及用于验证的VIP的开发要求也日益提高。不断发展的协议标准要求为IP和VIP提供动态测试套件,并满足规定的功能和代码覆盖率
    的头像 发表于 05-21 14:49 1508次阅读
    新思科技VSO.ai如何颠覆芯片<b class='flag-5'>验证</b>