蓝色波形与时序信号构成的深色抽象图

Verification Built for First-Pass Silicon

在流片之前,设计缺陷是可以被发现的。这依靠合理的架构设计、严谨的覆盖率管理,以及高度自动化的验证流程。

Where Verification Breaks Down

验证占据了 SoC 开发周期中最大的时间比重,却也是最难准确预估的环节。一次重新流片意味着额外的掩膜版成本,也意味着错失市场窗口。团队往往到了项目后期才意识到:尽管覆盖率数据看起来已经达到预期,但某些完整的验证场景实际上从未被执行。

这些问题对任何验证工程师来说都并不陌生。为某个模块构建的验证平台,很难复用到下一个模块;覆盖率收敛停滞在最后几个百分点,因为剩余的覆盖率项实际上不可达,却没有人去证明;回归测试耗时过长,以至于工程师不再运行完整的测试集,测试失败不断累积,一次调试最终变成了漫长的问题溯源。

缠绕的信号线汇聚成一条清晰线条的深色抽象图

Two Ways to Verify

Conventional Approach


  • 按模块分别构建验证平台,难以复用到下一级
  • 测试建立后再进行覆盖率统计
  • 一套回归测试集,在项目关键节点前手动运行
  • 每次运行结束后,人工逐次检查测试结果

MetaEncore Approach


  • 采用分层架构,在模块、子系统和 SoC 各级复用
  • 在制定验证计划的同时建立覆盖率模型
  • 分层执行回归测试,从快速检查到完整回归测试
  • 自动收集测试结果,并合并多次运行的覆盖率数据

What We Deliver

UVM Testbench Development


采用分层验证环境、协议 Agent 和可复用验证组件,通过统一的架构服务于模块、子系统和 SoC 各个层级。

Pre-Silicon Validation


进行系统集成检查、性能与功耗场景验证,以及早期软件启动与调试,确保芯片流片后面对的是一个经过验证的系统,而不是一个充满未知问题的系统。

Verification Infrastructure


通过回归测试自动化、覆盖率跟踪和测试结果自动收集,缩短验证闭环,让工程师能够真正高效地开展验证工作。

网格单元被蓝光逐格点亮的深色抽象图

How We Work

Testbench Architecture

我们采用分层架构进行构建。为每种协议构建可复用的 Agent,使用在事务级别进行检查的 Scoreboard,并保持测试层的精简:每个测试都继承自通用基类,仅添加该测试所需的特定内容。配置信息存储在对象中,而不是写入代码,因此同一套验证环境无需重新编写,即可用于模块、子系统和 SoC 各个层级。Sequence 按照可组合的方式编写,因此新增场景通常只需要组合已有内容,而不需要重新编写代码。

Coverage Strategy

我们的验证工作以验证计划为依据,而不是以仿真测试为依据。随着验证计划逐步形成,将各项功能特性映射到相应的功能覆盖率点,从而使覆盖率收敛反映验证计划中各项验证目标的完成情况,而不是仅仅反映验证平台本身的覆盖率。约束随机激励用于覆盖大量可能的测试场景,定向测试则用于覆盖随机化不易触达的边界场景;对于不可达的覆盖率项,则进行证明并有意进行豁免,而不是将其悄然忽略。

Tiered Regression

回归测试分层执行,而不是作为单一任务运行。在开发过程中,较轻量的测试集用于快速反馈;更全面的测试集按较长的时间间隔运行;完整回归测试则按照独立的计划执行。对于实际的 SoC 项目,一次完整回归测试可能需要数天,因此如果每次代码变更都触发完整回归,结果只会迟迟无法返回,最终没有人会再去等待。各层级在覆盖范围和反馈速度之间进行权衡,并根据项目实际情况确定各层级的配置,而不是套用固定模板。

测试结果会自动收集,并合并多次运行的覆盖率数据,从而可以全面了解当前设计的实际验证状态,而不需要工程师人工整理和核对大量日志。

Methodologies and Scope

Methodology


  • UVM(通用验证方法学)
  • SVA(SystemVerilog 断言)
  • 覆盖率驱动验证
  • 约束随机与定向激励
  • 形式验证
  • 功能覆盖率与代码覆盖率收敛

Scope


  • 模块、子系统和 SoC 各级验证
  • 协议与接口验证
  • 控制逻辑与协议属性检查
  • 系统集成验证
  • 性能与功耗分析
  • 真实场景仿真
  • 覆盖率不可达分析
带蓝色边光的半透明文档层叠的深色抽象图

What You Receive

  • 验证计划 – 按功能特性制定验证计划,并直接映射到覆盖率模型,从项目第一天起即可量化验证进度
  • UVM 验证平台 – 采用分层架构,并配有完整的架构文档,可在模块、子系统和 SoC 各级复用。基于经过验证的组件进行构建,使项目能够更快启动,并更早达到有意义的覆盖率
  • 回归测试集 – 提供测试集及自动化脚本,并配套完善的文档,使贵司团队能够直接运行和扩展
  • 覆盖率报告 – 汇总功能覆盖率和代码覆盖率,并为每项覆盖率豁免提供明确的依据和说明
  • 失败分析 – 记录调试过程,分析问题根因,而不仅仅提供通过/失败的数量统计
  • 技术交接 – 提供交接文档和演示讲解,使验证环境能够持续维护

Ready to De-Risk Your Tape-Out?

请告诉我们设计、进度,以及验证上目前最难的一环。我们会整理出能做什么、怎么做、要多久,回复您。