2、需求分析与规格提取:如何阅读设计规格书、提取验证需求、需求优先级划分、需求可追溯性矩阵

好,咱们进入第二章。这一章讲的是验证的起点——需求分析。说白了,就是拿到一份设计规格书,你怎么把它变成能执行的验证计划。

我见过不少新人,上来就写testbench、搭UVM环境,结果做到一半发现漏了关键功能。为什么?因为规格书没读透。你想想看,地基没打好,房子能稳吗?

2.1 如何阅读设计规格书

设计规格书(Design Specification)是验证的圣经。但很多人把它当小说看,从头翻到尾就完了。我个人习惯是带着问题去读。

第一步:先看架构图

别急着看细节。先搞清楚这个模块的输入输出是什么,数据流怎么走。我一般会拿张白纸,把架构图手画一遍。画着画着,你就知道哪些接口需要关注了。

第二步:找功能列表

规格书里通常有个章节叫"Feature List"或"功能描述"。这里列出来的每一条,都是潜在的验证点。我会用荧光笔标出来,然后编号。

第三步:抠时序图

嗯,这里要注意。时序图是验证最容易翻车的地方。我曾经在一个项目中,规格书里时序图画得模棱两可,结果验证环境搭完了才发现握手信号少了一个周期。后来我养成了习惯——每张时序图都自己重新画一遍,标注清楚每个信号的跳变时刻。

我的小技巧: 读规格书时,准备一个"疑问清单"。任何看不懂、有歧义的地方都记下来。然后找设计工程师逐条确认。别怕问问题,总比流片回来再改强。

2.2 提取验证需求

规格书读完了,接下来就是提取验证需求。这一步是把"设计要做什么"翻译成"验证要测什么"。

验证需求的分类:

  • 功能需求: 模块必须实现的功能。比如"FIFO满时不能写入"。
  • 时序需求: 信号之间的时序关系。比如"读使能信号必须在时钟上升沿前5ns稳定"。
  • 性能需求: 吞吐量、延迟等。比如"每秒处理100万笔交易"。
  • 异常处理需求: 错误情况下的行为。比如"CRC校验失败时,输出错误标志并重传"。
  • 边界条件需求: 极限情况。比如"FIFO深度为1024时,写入1025个数据会怎样"。

我建议你用一个表格来整理这些需求。格式可以这样:

需求ID 需求描述 需求类型 来源章节
REQ-001 FIFO满时,写操作被忽略 功能 3.2.1
REQ-002 读使能到数据输出延迟不超过2个时钟周期 时序 4.1.3
REQ-003 CRC校验失败时,输出ERR信号并重传 异常 5.2
关键点: 每条需求必须可验证。什么叫可验证?就是你能写一个测试用例,明确判断"通过"或"失败"。如果一条需求写的是"性能良好",那等于没写。

2.3 需求优先级划分

需求提取完了,你会发现——太多了!不可能全部验证完,尤其是时间紧的时候。所以必须排优先级。

我个人习惯用P0/P1/P2/P3四级划分:

  • P0(致命): 不验证芯片无法工作。比如时钟复位、基本读写通路。
  • P1(重要): 核心功能,但存在workaround。比如某个特殊模式。
  • P2(一般): 次要功能,可以后期补测。比如调试接口。
  • P3(可选): 锦上添花的功能。比如性能优化选项。

我曾经在一个项目中,项目经理要求所有需求都达到P0。我直接告诉他:那项目得延期半年。后来我们坐下来,把需求过了一遍,发现真正P0的只有40%。剩下的P1和P2,我们用随机测试覆盖了一部分,P3直接砍掉了。结果芯片一次流片成功。

避坑指南: 优先级不是一成不变的。随着验证的深入,你可能会发现某个P2需求其实很关键。我建议每两周重新审视一次优先级列表,动态调整。

2.4 需求可追溯性矩阵

需求可追溯性矩阵(Requirements Traceability Matrix,RTM),听起来很高大上,说白了就是一张表——把需求、测试用例、验证结果串起来。

为什么要做这个?三个原因:

  1. 覆盖率分析: 一眼看出哪些需求还没测到。
  2. 回归测试: 设计改了,知道哪些用例需要重跑。
  3. 审计需要: 客户或质量部门要查,你能拿出证据。

RTM的典型格式:

需求ID 优先级 测试用例ID 验证状态 备注
REQ-001 P0 TC_FIFO_FULL_001 通过
REQ-002 P1 TC_FIFO_LATENCY_001 失败 时序不满足,已报bug
REQ-003 P2 未分配 未验证 待排期

你想想看,如果没有这个矩阵,你怎么知道哪些需求测了、哪些没测?靠脑子记?不现实。我见过一个团队,验证做了三个月,最后发现有一个P0需求完全没测到——因为规格书更新了,但验证计划没同步。这就是没有RTM的代价。

我的做法: 用Excel或者Google Sheets维护RTM。每个需求一行,每分配一个测试用例就更新一次。验证完成后,把结果填进去。最后生成一个报告,一目了然。

好了,这一章就到这里。记住:需求分析花的时间越多,后面验证踩的坑越少。下一章我们讲验证策略的制定,到时候会用到今天提取的需求列表。