昆仑平台验证加速技术浅谈

简介: 一般所讲的芯片平台是指前端研发人员进行设计和验证活动的开发平台,通常只针对一颗芯片或具有相同架构的一类芯片的研发活动而搭建,是狭义上的平台概念,其弊端也很明显,不能适应不同架构和快速迭代的研发需求。昆仑平台在这样的背景之下应运而生,其宗旨是迅速给出能够满足客户不同需求的解决方案,是一个广义平台概念。芯片验证作为前端芯片交付的出口,是把握芯片质量最重要的活动之一。验证周期在整个芯片开发周期的的占比正一步步加大,所以验证加速技术成为昆仑平台构建首先要考虑的重要课题。

1.主流验证工具融合

昆仑平台验证技术首先是基于目前主流验证工具所开发的,所以昆仑平台融合三种工具为一体,从验证策略上寻找验证加速方法。

1.1.主流验证工具特点分析

目前主流的验证工具主要有软件仿真器(如VCS、NC)、FPGA、Emulator硬件加速仿真器三种。然而三者各有优缺点:
① 软件仿真器:DUT最接近芯片真实电路设计,调试手段最多,但仿真速度最慢;
② FPGA:FPGA板级验证速度最快,场景验证最真实,但定位手段最少,效率最低;
③ Emulator:总体介于前两者之间,比软件仿真器速度快,时钟频率比FPGA真实。

1.2.验证工具融合策略支持

昆仑平台通过融合三种主流验证工具的优势,使三者取长补短,从而提供更丰富的验证策略工具包,从现有的工具特点比对中寻求资源的有效利用:
① 支持三套代码和filelist的自动生成,保持代码的一致性;
② 支持三种主流验证工具的验证用例复用。
③ 支持RTL/门级仿真平台复用;
④ 支持FPGA代码在软件仿真器上仿真,为上板排除低级错误,上板场景在软件仿真器复现
⑤ 支持FPGA bitfile一键生成;
⑥ 支持Emulator上构造复杂业务场景;

2.多层级验证及其加速技术

一颗芯片可以从系统的不同职能划分出各个子系统,例如外设子系统、视频处理子系统、CPU子系统等,子系统又可以细分为各个IP,每个IP一般具有相对独立的功能,通过配有数据处理接口和软件配置接口来实现和外部的交互;业界一般把IP、子系统、SoC三个层级的验证分别称之为UT(Unit test)、IT(Integration Test)、ST(System Test),本章从层级验证角度论述昆仑平台验证加速技术。

2.1.UT加速

2.1.1.为什么要做UT

芯片验证的最终目的是保证SoC的正常工作,那么为什么要做UT/IT?他们的优势是什么?效率如何?
由于UT/IT相对于ST来说位置和角度基本相同,以下均以UT为代表展开。
UT的验证思想是先局部问题局部解决、然后从局部走向整体。UT的必要性体现在:
① 聚焦内部功能验证,方便构造性能、随机和异常测试场景;
② 验证环境相对独立,与系统验证环境解耦,调试范围小,时间可控;
③ 编译、仿真速度快,一般认为是ST的5-10倍左右;
④ 减少对系统集成版本的依赖,提早介入,发现性能、接口类问题,服务于IP集成方案;

2.1.2.UT验证平台的使命

同时UT局部验证的劣势也很明显:
① 验证人员的技术水平、经验阅历不同导致UT验证平台多样化
② 不同类型的IP对UT验证平台的需求多样化,导致UT验证平台多样化
③ 多样化的UT验证平台最终导致ST移植难度大,需要专人维护,人力投入大
④ 验证平台通用组件不统一,重复开发,资源浪费
⑤ 新人搭建验证平台的水平不够,周期长

image.png

2.1.3.UT验证平台成果

总结劣势来看,解决UT验证加速的方式是提供一套UT验证平台自动生成方案,目前昆仑平台已开发出一套能够自动生成的UT验证基础平台,成果主要有:
① 以图形界面的方式实现了友好的交互界面,降低上手难度
② 以C语言和UVM为基础统一平台架构,解决平台多样化问题
③ 统一平台目录结构,提高可读性和通用性
④ 统一接口降低UT二次开发的难度,提供完善的二次开发指引
⑤ 基础封装最大化,使用户聚焦验证场景构造和结果检查
⑥ 提供简洁的移植策略实现自动化的ST移植

2.1.4. UT加速效率评估

2.1.4.1. 自研IP

从自研IP的UT验证本身来看,自动化方案效率评估如下:

节约搭建基础环境大约5天/人时间
节约移植ST时间大约3天/人时间
总体可以节约50%左右的时间。
相对于直接做ST来讲,节约的时间将会大大超过这个比例。

2.1.4.2. 非自研IP

另外,UT/IT自动化方案除了应用在自研IP的UT/IT验证加速方面,对于外购IP和客户IP的验证,一般会附带自己的验证环境,我们需要挑选测试用例移植到ST上。常规移植方式是熟悉环境和用例,完成测试用例转换,修改外部memory数据比对方式,如果是比较复杂的验证环境,会给验证人员带来较大的工作量。即使一天完成一条用例的移植,那么移植多条用例的工作量也会成倍增加。
而我们需要在移植时,最低限度的修改其环境和用例,一般修改内容主要涉及:
a) 编程模型配置接口
b) 外部memory后门操作数据接口
统一化接口在C/UVM/Verilog等主流环境中均开发了这些统一接口,熟悉环境之后,理论上移植一条用例和移植多条用例的时间差别不大,一天时间即可完成用例的移植工作。

2.2. ST加速

UT/IT解决的是IP和子系统的内部问题,系统验证关注的是系统的事。要研究系统验证如何加速,首先要弄清楚系统验证要做什么?

2.2.1. 芯片验证框架

一般验证框架内容主要包含如下:
① 单一业务场景
② 复杂业务场景及其带宽分析
③ 系统启动场景
④ 系统压力测试
⑤ 芯片异常测试
⑥ 低功耗场景
⑦ DFT验证

2.2.2. 自动化与标准化

首先,单一业务场景指单个或几个IP在系统内的工作场景验证,关注IP在系统内的集成正确性、时钟复位方案合理性、性能是否满足等问题。复杂业务场景指芯片实际工作场景中涉及多个IP或子系统的场景,其他像启动场景、低功耗场景都是在单一业务场景之上开展。所以单一业务场景是系统验证的基础和前提。
单一业务场景加速技术研究的实质是找到不同项目的IP分类方法及应对策略。我们把系统中IP分成两类并采取相应验证策略:
① 系统级IP,这类IP通常在不同项目中因芯片需求变化导致原项目IP不能重复使用,通常会选择重新设计,相应的验证环境需要重新搭建,测试用例重新构造。对这类IP我们采用自动化生成验证环境和测试用例的方式来加快验证速度。目前我们已经实现自动化验证的IP有:
a) 时钟
b) 复位
c) IOMUX
d) PAD
e) 总线
f) 中断
② 非系统级IP指项目间重复利用率高,功能比较独立的一类IP,例如外设类IP、CPU IP。这类IP通常根据经验选择常用的、较为齐全的功能进行设计,然后作为项目储备IP。对这类IP我们采用UT/IT验证做标准化验证。在验证过程中除了验证IP功能外,也会为系统验证做准备。例如准备ST的RTL/门仿用例、场景用驱动等。我们目前已实现部分外设类IP、CPU IP的标准化验证。

2.2.3. 平台自动化

2.2.3.1. 基础平台自动化

和UT/IT自动生成基础环境一样,ST平台可根据芯片IP列表自动生成基础验证环境,并自动把已经标准化的IP环境和用例移植到ST,自动生成自动化IP的验证用例和验证组件。

2.2.3.2. 系统配置信息自动化

芯片系统部分配置信息例如memory map、IP中断分配表、CPU执行地址映射表均已实现自动化处理,生成仿真需要的配置信息。

2.2.3.3. 编程模型统一化和自动化

寄存器描述文档支持业界广泛应用的ralf、xlm格式,自研IP统一为寄存器表格。并在平台内实现自动化处理和生成仿真需要的编程模型组件。

2.2.3.4. 回归测试自动化

开发自动回归测试用例工具,工具具备以下功能:
① 使测试用例并行执行,有效利用硬盘资源
② 汇总回归结果,报告结果异常的测试用例
③ 收集合并所有用例的覆盖率结果

2.2.4. 效率评估

假设新的项目中使用的IP都已完成标准化和自动化,单一业务场景理论上2人/周可以完成,这将使得整个芯片验证周期缩短约30%的时间。

3. 设计代码管理原则及其自动化

设计代码做为验证的最重要的入口条件,代码的目录结构和file list原则对代码质量和自动化有着深刻的影响,一定程度上决定了芯片成败的关键,历史上曾因为代码管理问题出现的验证缺陷层出不穷。

3.1. 设计代码目录结构

3.1.1. design目录

image.png

① top:顶层和子系统目录
② IP:模块级IP目录
③ lib:wrapper和仿真库目录
④ common:设计代码公共模块目录,如rst_sync.v

3.1.2. top目录

image.png

① 各目录以*_subsys为名称创建
② chip_top:chip顶层目录,包含顶层代码和file list
③ cpu_subsys:cpu子系统顶层目录,包含顶层连线代码和file list

3.1.3. IP目录

image.png

以IP名称(字母小写)创建,如axi0、bootrom

3.1.4. lib目录

image.png

① fpga:FPGA仿真库目录
② tsmc28hpcp:28工艺仿真库目录
③ tsmc28hpcp/mem:28工艺memory仿真模型,其下按照memory类型建子目录
④ tsmc28hpcp/pad:28工艺pad仿真模型
⑤ tsmc28hpcp/pll:28工艺PLL仿真模型
⑥ tsmc28hpcp/std:28工艺stdcell仿真模型
⑦ wrapper:memory和stdcell wrapper目录
⑧ wrapper/mem:memory wrapper,,其下按照memory类型建子目录
⑨ wrapper/std:stdcell wrapper目录

3.1.5. IP/SUBSYS目录

chip顶层、子系统和IP子目录结构统一,以I2C IP为例(图左边是目录结构,右边是files.f):

image.png

① doc:设计文档目录,包括总体设计文档,寄存器表格,portdefine等
② flow/dc:dc flow
③ flow/smoke:设计冒烟
④ flow/spyglass:spyglass flow
⑤ flow/syntax:语法检查
⑥ flow/vclp:低功耗评估
⑦ src:设计代码目录
⑧ src/asic:存放asic代码及公共代码
⑨ src/fpga:fpga部分代码
⑩ src/stub:stub代码目录,包含与模块实际代码顶层文件名、module名、接口完全相同的.v文件及相关
⑪ src/files.f:IP的filelist文件,包含stub文件、lib文件、代码filelist等,用相应宏切换。

3.2. file list管理原则

3.2.1. 总体原则

① 不可综合的仿真库文件前面加” –v”
② 可综合模块直接指定文件路径
③ 禁用”-y”选项,dw/sim_ver目录除外
④ 一个ip必须包含一个files.f和一个lib.f文件
⑤ stub宏以”STUB_”作为前缀,全大写

3.2.2. files.f原则

image.png

① FPGA_SIM宏:控制用于FPGA仿真的file list
② FPGA_SYN宏:控制用于FPGA综合的file list
③ VELOCE宏:控制用于veloce硬件加速仿真需要的file list
④ ASIC_SIM宏:控制用于ASIC代码仿真的file list
⑤ ASIC_SYN宏:控制用于ASIC代码综合的file list
⑥ 默认为ASIC使用手写代码代替工艺库的file list
⑦ 代码中使用的宏define和undef分别汇总到xxx_defines.v和xxx_undef.v,并加在files.f的头和尾

3.2.3. lib.f原则

image.png

① 首行必须加`ifndef STUB_XXX
② 每片Memory的工艺库fie list均指向对应区分工艺宏的file list,lib.f的所有file list不区分工艺库宏
③ LIB宏:控制用于综合时工具所需*.db文件
④ DB宏:控制用于综合时工具所需*.db文件
⑤ LIB_SIM宏:控制用于EDA仿真的工艺库file list

3.3. 加速技术应用

采用自定义宏体系管理file list是众多加速技术应用的基础与核心,在各个加速技术讨论中均有涉及。

3.3.1. 支持主流验证工具融合

分类管理好用于不同验证工具的file list,并通过脚本自动处理使之快速生成某个环境下的file list,能够大大减少工作量,减少手动处理的错误率,保证在不同验证流程的版本一致性。

3.3.2. 支持多层级仿真验证

IP验证需要IP设计人员提供完备的file list,除了RTL代码之外,还应该包括工艺库、stdcell、公共模块等,但当IP集成到系统中时,它的file list极有可能与其他IP的file list冲突,平台会对这些重复的file list进行去重,这样就既能满足UT/IT/ST的仿真需求,又不给设计人员带来额外工作量。

3.3.3. IP/子系统自动dummy

在进行系统仿真时,可适时把一些未参与场景的并且对仿真效率影响大的IP或子系统dummy。通过在测试用例配置文件中填写需要dummy的IP/子系统,自动剔除真实RTL代码而采用dummy的文件取而代之,减少代码编译和仿真时间。

3.3.4. 支持IP标准化自动移植

IP标准化时,设计人员提供的file list路径只针对IP验证环境,自动移植到ST时,需要工具自动处理file list,并在上级子系统或系统的file list中添加IP的file list。

3.4. 效率评估

代码目录结构的统一和file list自动化管理原则从多个方面支持系统设计和验证工作自动化,不仅提升代码维护和交付效率,其更大的意义在于减少了人工参与的工作量,减少了人为因素带来的可能是致命的失误。

4. 结尾

本文主要从平台角度介绍我们在验证加速技术领域的成果,通过支持主流验证工具从而获得更多的验证策略支持,通过支持UT/IT/ST的多层级验证从不同验证侧重点提升迭代效率,通过支持设计代码自动化管理支撑验证多种加速技术的实现。除此以外,我们还在验证质量管理和项目版本管理上取得不错的成绩,极大促进了项目研发周期的缩短和芯片质量的提升
平台是芯片研发的基础设施,是验证理念的承载,我们做芯片平台技术的方向是为优秀的研发人才提供更加友好的用户接口,更加丰富的策略支持,更加快速的入门方式,从而打造出一套战略”轻装备”,快速迭代,缩短研发周期,服务更多想做、要做芯片的人,实现芯片普惠的终极目标

原文作者:崔宁
点击查看原文

相关文章
|
9天前
|
机器学习/深度学习 人工智能 安全
AI战略丨阿里云百炼再升级:模型、工具、AI能力,快速接入、应有尽有
阿里云百炼持续加码模型服务,基于丰富的底层计算能力与通义系列模型的最佳实践,构建训练评测、标注、部署全生命周期模型工具,帮助企业、开发者在云上一站式调用、优化大模型,成为大模型时代的商业化基础设施。
|
9月前
|
存储 人工智能 安全
通用大模型转向行业大模型:腾讯云、华为云们的下一个战场
通用大模型转向行业大模型:腾讯云、华为云们的下一个战场
135 0
|
11月前
|
人工智能 达摩院 自然语言处理
覆盖200+服务场景,阿里「通义」大模型系列打造国内首个AI统一底座(2)
覆盖200+服务场景,阿里「通义」大模型系列打造国内首个AI统一底座
1319 0
|
机器学习/深度学习 存储 人工智能
|
人工智能 算法 IDE
智能化测试新趋势:手淘 AI+IoT 机器人泛终端测试实战
“为模拟真实用户”,Robot-XT 极测机器人提供了为用户体验度量评测的能力,不仅可以最大程度地模拟用户真实操作,还实现了多设备跨终端的功能自动化和用户体验度量。同时,Robot-XT 极测机器人通过 IoT+AI 的智能化技术搭建一套支持多机操作并具备高稳定性的的 UEE 自动化解决方案,实现了覆盖从线上 App 到线下智能门店场景的端到端自动化测试,赋能行业,为软件绿色联盟的加盟 App 提供用户体验评测服务。
641 0
智能化测试新趋势:手淘 AI+IoT 机器人泛终端测试实战
|
存储 安全 定位技术
云隐私:基准功能和新兴技术
云隐私:基准功能和新兴技术
130 0
云隐私:基准功能和新兴技术
|
人工智能 运维 Kubernetes
加速云落地,华为提出企业上云三大场景七类方案
加速云落地,华为提出企业上云三大场景七类方案
312 0
加速云落地,华为提出企业上云三大场景七类方案
|
人工智能 自动驾驶 大数据
华为计算战略揭晓:开放鲲鹏主板,推出开发套件,发布系列最强算力AI计算产品
华为在 HC 大会上发布的「全球最快 AI 训练集群」Atlas 900 引起了人们广泛关注。这仅仅是华为智能计算在全联接大会上新产品发布的开始,华为昨天推出的鲲鹏服务器主板、鲲鹏台式机主板,以及全球最强 AI 训练卡 Atlas 300、AI 训练服务器 Atlas 800 等产品,让我们再次见证了这家公司的研发实力。
364 0
华为计算战略揭晓:开放鲲鹏主板,推出开发套件,发布系列最强算力AI计算产品
|
人工智能 运维 供应链
依图开放AI芯片视觉计算创新平台,实现算法芯片对接「即插即用」
造芯,比以往任何时刻都更牵动人心。前有芯片技术被卡脖子多年,后有中美贸易下芯片产业链国有化势在必行。 但造芯远非一日之功,这背后所牵涉到的算法技术、设计能力、数据打磨、供应链支持繁杂而深远,往往是牵一发而动全身。于是,一个能够集聚产业链各方力量并实现资源优化配置的产业平台就成为关键。
435 0
依图开放AI芯片视觉计算创新平台,实现算法芯片对接「即插即用」
|
机器学习/深度学习 人工智能 自然语言处理
为主流价位移动设备加入AI计算:ARM发布新一代Mali解决方案
随着人工智能技术的逐渐实用化,人们对于机器学习算力的需求正在飞速增长,除英特尔、英伟达等传统芯片厂商以外,谷歌、亚马逊等公司都在致力于打造自己的专用 AI 处理器。
303 0
为主流价位移动设备加入AI计算:ARM发布新一代Mali解决方案