文章来源:中国战略新兴产业
芯片设计几乎完全依赖于有高可靠性的计算机辅助设计手段。眼下,中国EDA/IP正迎来最好的时代,多家国产EDA/IP公司已整装待发,期待能以厚积薄发的技术实力快速完善中国集成电路产业链,支持5G、人工智能、云计算等多项未来科技的发展。
为什么说EDA是中国芯片产业链最薄弱的环节?目前中国的EDA/IP发展是否开始得到足够的重视和支持?当前什么制约了自主IP及其复用技术?仿真的飞跃能为芯片行业带来什么好处?芯片制造流程无非是设计、制造、封测,却因为流程间的紧密关联而体现出复杂性。如何理解这种复杂性?本期,我们邀请到几位业内专家,谈谈国产EDA/IP仍然面临着的诸多挑战,而在这些挑战中,我们往往可以窥见巨大的市场机遇,并找到解决方案。
杨晔
前端验证工具,其共同的验证目标都是针对功能、断言、代码等几种覆盖率,验证过程中也都要给工程师提供调试的手段和验证流程的控制。基于EDA 2.0所提出的下一代EDA开放、智能和平台化的目标,我们可以想到,多种验证工具可以提取共同点、协同工作、规范流程,形成一个统一的验证平台。
从20世纪70年代至今,芯片设计工具经历了计算机辅助设计(CAD)、计算机辅助工程(CAE)和EDA三个阶段。1995-2000年开始形成的电子自动化设计基础,我们可以称之为“EDA 1.0”。
EDA 1.0的大体流程经过过去20多年的发展,虽然已经丰富了很多,但是流程没有本质提高,之后20多年EDA的发展都是在1.0上逐渐增加各种内容,我们可以认为一直到今天我们都处于“EDA 1.x”的发展过程中。
但近年来,芯片设计、验证的复杂度和成本急速上升,现有EDA的发展速度越来越来越跟不上芯片设计规模和需求的快速增长,且面临着种种技术挑战。因此,国内EDA业界逐步提出并明确了未来5-15年达到EDA 2.0的发展目标,主要包括开放和标准化、自动和智能化、平台和服务化这三个方向,其中也特别提出了智能化验证平台的概念,这个概念与芯片的前端验证有很多的联系。
芯片前端设计,主要指芯片设计里的功能实现过程。这个实现过程中的各种测试和确认,就是前端验证。随着芯片越来越复杂,验证的工作量逐渐超过了设计的工作量,当前无论是投入的人力或时间,芯片实现流程中验证工作都占最高比例。因此高质量的前端验证工具,对芯片设计非常重要。
当前芯片验证工具的市场,主要由Synopsys、Cadence和Mentor三家国外EDA厂商占领,特别是Synopsys和Cadence,都有自己完整的全套前端验证软硬件工具集。除了这三家EDA巨头外,国内外仅有少数公司有FPGA原型验证相关的软件或硬件产品。前端验证工具的全球市场规模大约为每年18亿-20亿美元,约占整个EDA市场(包括IP)的15%-20%。国内前端验证工具市场规模约每年4亿-5亿美元。
本文重点面向EDA 2.0的“平台化”目标,聚焦到芯片设计的前端验证环节,从验证的核心目的、常用工具出发,分析在哪些方面可以从“验证工具”发展为“验证平台”,提高验证效率,为芯片设计客户提供更多的价值。
芯片设计的前端部分,最简化流程只需要逻辑描述(写RTL级代码)和逻辑综合两步,就可以生成前端网表(netlist),完成设计过程。但是,如此复杂的硬件芯片逻辑,很难保证逻辑完全正确,也需要确认软硬件能正确配合。因此芯片的前端设计投入,大部分都花在前端设计验证(简称前端验证)上,这已经成为当下整个芯片设计流程中的最大最耗时间的瓶颈。同时,越来越激烈的市场竞争和越来越短的创新周期要求芯片尽量缩短验证时间,越来越高的制造成本又要求尽量提高验证质量。
因此,前端验证的主要目的是尽可能短的时间内,确保设计的逻辑功能正确性和完备性。这种正确性和完备性是如何衡量的?当前的芯片前端验证,已经逐渐形成了覆盖率驱动的验证流程和评价指标。包括检查硬件逻辑实现和软硬件集成系统已经是否达到了应用系统的全部目标功能的“功能覆盖率”、检查逻辑实现有没有超出设计目标之外的错误行为的“断言覆盖率”、检查逻辑实现有没有可触发但没有测试过的代码,或不可触发的冗余代码的“代码覆盖率”,以及“故障覆盖率”,即针对特定类型的芯片如车规芯片,对功能安全要求比较高,还有故障注入测试和故障覆盖率的概念。检查如果出现某些特定物理错误是否会导致系统发生不可接受的后果。
除了可以由工具自动完成的语法检查等基本检查外,上面的四种覆盖率指标其实是测试了“我想要的”“我想到的”“我没想到的”和“我不想要的”这四个层次,达到比较完备的功能性验证目的。
仿真模拟验证的方法,首先将输入场景利用软件的方法模型化,或者直接运行目标硬件上的软件,从而模型或目标软件产生测试激励,测试激励输入给运行在EDA仿真工具内的芯片设计。简单来说,就是将输入驱动给设计,验证这边根据具体的功能,也抽象的描述其功能以及预期结果,最后根据模型预期结果和设计输出结果统计前面提到三种覆盖率指标。如下图里的高层次测试用例既可以是UVM事务级模型,也可以是CPU上运行的软件产生的场景数据,最终经过UVM等事务级测试环境转化为信号激励给DUT(待测设计,Device Under Test)。
前端的仿真模拟验证工具,根据仿真原理的区别,一般分为软件仿真工具、FPGA原型仿真工具、硬件仿真加速工具。
软件仿真也叫逻辑仿真,在主机(一般为x86)上通过CPU软件去仿真设计电路的行为,对模块级电路的编译速度快但仿真速度很慢,调试性能好。
FPGA原型仿真基于高性能FPGA芯片和专用软件工具组成,由于FPGA芯片内部电路可重构的特点几乎可以完全映射芯片的逻辑设计,又有高性能芯片高速并行的特性,因此基于FPGA原型工具的仿真性能是最高的,对由真实软件驱动的SoC级软硬件协同仿真特别重要。
硬件仿真加速工具基于硬件平台和专用软件工具,其核心硬件有基于FPGA的也有基于专用ASIC芯片的,与FPGA原型仿真工具的主要区别在于硬件仿真加速保证了更高的可调试性和更大的设计规模,但性能不如FPGA原型仿真。除了RTL仿真加速调试之外,硬件仿真加速与FPGA原型工具一样经常用于软硬件系统集成验证。
此外,近年来基于Accellera PSS(Portable Stimulus Standard)标准和高级语言建模的智能激励生成工具可以高效地针对特定验证场景自动产生测试用例。针对不同的验证平台和验证层级,PSS工具可以生成不同形态、适配多种验证环境的测试用例,配合各种仿真模拟工具进行芯片验证。
形式验证是仿真模拟验证的一种补充,是从数学上完备地证明设计实现方案是否满足了设计规范所描述的功能。其采用基于模型的数学求解方法,针对用户提供的断言和属性,面向目标设计所有可能的输入来进行证明,确定该设计是否与给定的规范功能一致,从而避免在一个极大输入范围内做无数次仿真模拟,针对被测模块直接给出完备的功能和代码覆盖率结论,提升验证的可靠性和效率。
形式验证方法对应的工具一般就是支持模型检查(model checking)的专用形式验证工具,其应用流程包括设计模型化、模型和解空间分析、模型求解、反例输出等,最后要么证明设计是正确的,要么给出能证明设计出错的输入用例。
同时,验证过程中验证工程师还需要对设计和验证进行调试的手段,这包括了电路、波形和代码查看、覆盖率跟踪分析、仿真流程分析、高层次协议分析等功能,业界也有多种相关的验证调试工具。
前面提到的五种前端验证工具,其共同的验证目标都是前文提到的几种覆盖率,验证过程中也都要给工程师提供调试的手段和验证流程的控制。基于EDA 2.0所提出的下一代EDA开放、智能和平台化的目标,我们可以想到,多种验证工具可以提取共同点、协同工作、规范流程,形成一个统一的验证平台。
统一的验证平台,其统一性体现在功能模块、数据和流程这三个方面。
统一的前端代码解析。从用户的RTL级设计代码出发,要经过解析、编译、优化、映射等步骤,其中前端的解析、编译和部分优化步骤是与具体运行的硬件无关的,这部分模块可以在各验证工具间共享,实现算法、中间数据和变量命名的统一,这对EDA产品开发和客户调试都有很大的便利。
统一的覆盖率数据库。无论是软件还是硬件仿真,包括形式化验证,都可以输出对应测试模块覆盖率的数据,这些交叉数据必须统一到一个最终的覆盖率数据库和访问接口中,在各工具间共享,才能制定高效的测试计划,避免重复测试。Accellera组织曾发布过UCIS(Unified Coverage Interoperability Standard)这个覆盖率数据交换标准,统一的验证平台应该支持这样的标准化接口,并在各验证工具间统一数据格式。
统一的仿真波形数据库。类似于覆盖率数据库,各种工具仿真的波形结果,也需要有统一的数据库格式,方便各种工具协同。目前除了IEEE1364标准中规定的开放数据格式VCD之外,Synopsys公司的FSDB私有压缩格式数据库也是常见的波形格式。未来国产EDA行业一定会出现更开放性能更好的统一波形数据格式。
统一的智能调试系统。各种验证工具的仿真和求解结果,都只是庞杂的验证数据库,需要给用户提供统一的界面和接口进行设计调试。这种调试包括查看波形、电路、代码覆盖率和功耗等各种数据,并支持用户以灵活的条件组合展示数据,实现智能化分析和追踪设计错误。以不同方式对多种工具收集到的验证数据进行深度数据挖掘,形成一个统一的智能调试系统,辅助加快设计流程。
统一的计算任务管理和计算资源调度。前端验证无论是基于仿真还是基于形式化模型,其本质都是大量的计算任务,底层需要各种计算资源(CPU,GPU,FPGA,memory)的支持。这些任务管理和资源管理,如果采用统一的调度器和资源管理器,不仅可以提高资源利用效率,提高验证的自动化流程,也能更好地利用云计算平台的海量弹性资源。
由于仿真目标一致性和技术实现的相似性,各验证工具也可以基于统一的验证平台实现多种互相协同,以及实现自动化的工作流程,这包括但不限于软件仿真与硬件仿真的协同和加速、硬件仿真和FPGA原型的数据、模型、接口复用、PSS工具自动生成激励并自动输出给仿真工具、形式化验证的覆盖率结果自动替代非必要的仿真用例、PSS、软件仿真及调试工具协同,形成低功耗测试、验证和分析方案等。
统一化的验证平台,不仅仅是五种验证工具的联合使用,它成为了更强大的验证工具,给用户带来更好的易用性、更高的验证效率、更自动化的使用流程、更智能的验证方案。同时,统一验证平台的模块重用、模块开放和接口开放,也给验证工具厂商甚至整个EDA行业减少了“重复造轮子”的工作。
从当前的EDA工具市场看,处于领先的几家国外EDA厂商已经初步启动了前端验证工具的协同,在2019-2021年时间段内纷纷推出了“验证平台”的概念,特别是在同一公司内的工具之间共享覆盖率和波形数据方面。但是几大EDA厂商之间的数据协同还基本不存在,同时在更高层次的流程、任务、资源管理的统一性上还有所欠缺。国产EDA工具方面,目前只有个别厂商可以完全覆盖前端验证全流程工具,我们希望能尽快看到国内的验证工具EDA厂商研发出自己的国产化统一验证平台。
EDA是一个宽泛的概念,对应了非常长的工具链和产业链,这个链条上的每个主要环节都有自己的特点和需求国产EDA要达到尽快发展、追赶先进水平的目的,就要对EDA的每一个环节进行深耕,弥补不足,发挥优势。EDA 2.0提出了下一代EDA发展的整体目标,但具体到EDA的环节,需要每个EDA厂商结合自己的产品领域,细化出更具体的EDA 2.0实现路径。
作者简介
杨晔,芯华章科技产品和市场规划总监,曾就职于英特尔、新思科技与思华科技
等公司。