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

    文章

    1293

    浏览量

    103859
  • 封装
    +关注

    关注

    126

    文章

    7843

    浏览量

    142837
  • soc
    soc
    +关注

    关注

    38

    文章

    4142

    浏览量

    218057

原文标题:SoC的功能验证

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

收藏 人收藏

    评论

    相关推荐

    Xilinx ZYNQ 7000系列SoC功能特性

    本文介绍下Xilinx ZYNQ 7000系列SoC功能特性、资源特性、封装兼容性以及如何订购器件。
    的头像 发表于 10-24 15:04 503次阅读
    Xilinx ZYNQ 7000系列<b class='flag-5'>SoC</b>的<b class='flag-5'>功能</b>特性

    SoC的数字签名加解密过程

    SoC的数字签名验证是指在系统启动或固件更新等关键时刻,对加载的固件或软件进行数字签名的验证过程。通过验证数字签名,系统可以确保所加载的固件或软件是经过授权和信任的,从而防止恶意代码的
    的头像 发表于 10-21 14:52 202次阅读

    解锁SoC “调试”挑战,开启高效原型验证之路

    引言由于芯片设计复杂度的提升、集成规模的扩大,以及产品上市时间要求的缩短,使得设计验证变得更加困难。特别是在多FPGA环境中,设计调试和验证的复杂性进一步增加,传统的调试手段难以满足对高性能、高效率
    的头像 发表于 10-09 08:04 614次阅读
    解锁<b class='flag-5'>SoC</b> “调试”挑战,开启高效原型<b class='flag-5'>验证</b>之路

    炬芯科技低功耗蓝牙SoC通过Apple授权第三方测试机构合规性验证

    近期,炬芯科技ATB1113系列低功耗蓝牙SoC成功通过Apple授权第三方测试机构的各项合规性验证,已全面兼容Find My network accessory的最新规格和功能要求,可为第三方硬件
    的头像 发表于 08-07 09:46 467次阅读

    SoC芯片是什么?它有哪些功能和应用?

    SoC芯片,全称为System on Chip(片上系统),是一种高度集成的电子元件,它将多个功能模块(如处理器、内存、外设接口等)集成在一个单一的芯片上。这种集成方式不仅减少了系统的复杂性和成本
    的头像 发表于 08-05 15:54 7281次阅读

    SoC布局中各种IC简介

    SoC中各种IP简介IP核(IntellectualPropertyCore),即知识产权核,在集成电路设计行业中指已验证、可重复利用、具有某种确定功能的芯片设
    的头像 发表于 07-17 08:28 343次阅读
    <b class='flag-5'>SoC</b>布局中各种IC简介

    大规模 SoC 原型验证面临哪些技术挑战?

    方法被称为原型验证。原型验证在EDA流程中起到了至关重要的作用。一方面,它可以对芯片进行功能验证,确保设计的基本功能符合预期。在基本
    的头像 发表于 06-06 08:23 1128次阅读
    大规模 <b class='flag-5'>SoC</b> 原型<b class='flag-5'>验证</b>面临哪些技术挑战?

    CYW54907 SoC是否具有IEEE 802.11 mc功能

    IEEE 802.11 ac 标准的应用处理器的 CYW54907 SoC。 在我看来,它是一款很棒的芯片,不知道是否具有 IEEE 802.11 mc 功能?谢谢。
    发表于 05-20 06:32

    瑞萨如何利用Synopsys VSO.ai将SoC验证生产率提高30%

    了芯片复杂性的增加和片上系统(SoC)设计要求的变化,例如重新架构(特别是传统控制器局域网(CAN)的车载电气/电子(E/E)架构)、车载以太网的引入、更高的速度以及与各种标准兼容的实时控制。验证这些复杂的SOC可能会占用高达7
    的头像 发表于 04-08 18:38 1783次阅读
    瑞萨如何利用Synopsys VSO.ai将<b class='flag-5'>SoC</b><b class='flag-5'>验证</b>生产率提高30%

    fpga原型验证流程

    FPGA原型验证流程是确保FPGA(现场可编程门阵列)设计正确性和功能性的关键步骤。它涵盖了从设计实现到功能验证的整个过程,是FPGA开发流程中不可或缺的一环。
    的头像 发表于 03-15 15:05 1507次阅读

    我们该如何应对SOC中越来越庞大和复杂的SDC约束?

    SOC设计变得越来越复杂,成本越来越高,设计和验证也越来越困难。
    的头像 发表于 03-13 14:52 1114次阅读
    我们该如何应对<b class='flag-5'>SOC</b>中越来越庞大和复杂的SDC约束?

    ECC功能开启后如何验证这个功能是否正常开启呢?

    各位大佬,现在我这边一个项目,代码层面开启ECC监控和中断后,如何验证当真实应用环境下,Ram区或者Flash区某个位被打翻后,会正常触发中断,实现读和回写的功能呢?
    发表于 03-11 06:39

    怎样才能验证ADAS功能的抗干扰能力?

    来自一位客户的咨询,麻烦帮忙解答,越详细越好,有图有真相,可以适当提供一些英飞凌解决方案和产品推荐。 现如今无线通信设备这么多,怎样才能验证ADAS功能的抗干扰能力?
    发表于 02-02 07:20

    请问如何通过AURIX辅助其他SOC实现功能安全设计?

    请问如何通过AURIX辅助其他SOC实现功能安全设计?
    发表于 01-24 07:05

    什么是FPGA原型验证?FPGA原型设计的好处是什么?

    FPGA原型设计是一种成熟的技术,用于通过将RTL移植到现场可编程门阵列(FPGA)来验证专门应用的集成电路(ASIC),专用标准产品(ASSP)和片上系统(SoC)的功能和性能。
    发表于 01-12 16:13 1196次阅读