|
| 1 | +# MissUnit模块验证报告 |
| 2 | + |
| 3 | +## 1. 基本信息 |
| 4 | + |
| 5 | +| 项目 | 内容 | |
| 6 | +|------|------| |
| 7 | +| 验证对象 | ICache MissUnit 模块 | |
| 8 | +| 验证人员 | Gui-Yue | |
| 9 | +| 验证时间 | 2025-11 | |
| 10 | +| 报告版本 | V0.2 | |
| 11 | +| 验证框架 | Toffee 测试框架 | |
| 12 | + |
| 13 | +## 2. 验证对象介绍 |
| 14 | + |
| 15 | +### 2.1 模块概述 |
| 16 | +MissUnit 位于香山前端 ICache 的 miss 处理管线,其职责是接收取指和预取 miss,请求下行 TileLink 层获得 cache line,并将回填结果写入 data/meta 阵列。模块内部同时维护 4 个取指 MSHR、10 个预取 MSHR 以及一个带优先级的 FIFO,以保证 fetch/prefetch miss 可以并行处理、避免重复 miss,并与 victim 选择及 cache 写回流程配合。 |
| 17 | + |
| 18 | +### 2.2 主要功能 |
| 19 | +- **Fetch miss 管理**:对 `io.fetch.req` 进行命中判定、队列分发与 MSHR 分配,命中时直接回送 ready,未命中则生成 Acquire。 |
| 20 | +- **Prefetch miss 管理**:维护预取专用 MSHR,并通过 priority FIFO 与 Acquire 仲裁器交互,保证预取请求顺序。 |
| 21 | +- **MSHR 查找与合并**:14 路 MSHR 均支持根据 `blkPaddr/vSetIdx` 做 hit 检查,避免重复请求并提供 victim way 信息。 |
| 22 | +- **Acquire/Grant 协作**:5 路仲裁器将 fetch 与 prefetch 的 Acquire 合并发送,同时在 Grant 返回后将数据拼成 512-bit 响应,回写 meta/data,并驱动 difftest。 |
| 23 | +- **替换/写回接口**:对外输出 `io.victim`, `io.meta_write`, `io.data_write`,并与 flush/fencei 控制联动,保证异常处理时能清空状态。 |
| 24 | + |
| 25 | +### 2.3 接口信号 |
| 26 | + |
| 27 | +#### 2.3.1 时钟复位 |
| 28 | +- `clock`, `reset` |
| 29 | + |
| 30 | +#### 2.3.2 `io` 顶层接口 |
| 31 | + |
| 32 | +| 子接口 | 握手/方向 | 字段说明 | |
| 33 | +|--------|-----------|----------| |
| 34 | +| `io.fencei` | in | FenceI 控制,高电平时阻断新 miss 并禁止写阵列。 | |
| 35 | +| `io.flush` | in | Flush 控制,仅作用于预取路径。 | |
| 36 | +| `io.hartId` | in | Hart ID,随 difftest 输出。 | |
| 37 | +| `io.fetch.req` | ready/valid(输入) | `blkPaddr[41:0]`, `vSetIdx[7:0]` | |
| 38 | +| `io.fetch.resp` | ready/valid(输出) | `blkPaddr`, `vSetIdx`, `waymask[3:0]`, `data[511:0]`, `corrupt` | |
| 39 | +| `io.prefetch_req` | ready/valid(输入) | 字段同 fetch req | |
| 40 | +| `io.victim.vSetIdx` | valid/bits(输出) | MissUnit 对外报告的 victim 虚拟集合 | |
| 41 | +| `io.victim.way` | out | Victim way 选择 | |
| 42 | +| `io.mem.acquire` | ready/valid(输出) | `source[3:0]`, `address[47:0]` | |
| 43 | +| `io.mem.grant` | valid(输入) | `opcode[3:0]`, `size[2:0]`, `source[3:0]`, `data[255:0]`, `corrupt`(两拍合成 512-bit) | |
| 44 | +| `io.meta_write` | valid(输出) | `virIdx[7:0]`, `phyTag[35:0]`, `waymask[3:0]`, `bankIdx` | |
| 45 | +| `io.data_write` | valid(输出) | `virIdx[7:0]`, `data[511:0]`, `waymask[3:0]` | |
| 46 | + |
| 47 | +#### 2.3.3 `ICacheMissUnit_` 调试层级 |
| 48 | + |
| 49 | +`bundle.ICacheMissUnit_` 公开了内部结构,便于白盒验证: |
| 50 | + |
| 51 | +- `_prefetchMSHRs._0 ... _9._io`:每个预取 MSHR 的端口,包括 `_req_ready`、`_acquire_valid`、`_invalid`、`_lookUps_0._hit`、`_lookUps_1._hit`、`_resp_bits.{_blkPaddr,_vSetIdx,_way}` 等信号。 |
| 52 | +- `_fetchMSHRs._0 ... _3._io`:与预取 MSHR 相同的观测点。 |
| 53 | +- Prefetch priority FIFO:在同层级下,可读取 `enq_ptr_value/flag`、`deq_ptr_value/flag`、`full`、`io_enq_ready`、`io_deq_ready` 以及 `_prefetchDemux_io_chosen`,用于 FIFO 行为检查。 |
| 54 | + |
| 55 | +## 3. 验证功能点 |
| 56 | + |
| 57 | +### 3.1 基础控制与 API(非 CP) |
| 58 | + |
| 59 | +1. **Bundle / Agent API 连通性** |
| 60 | + - 场景:直接操作 `ICacheMissUnitBundle` 的 fetch 请求、`fencei` 信号,确认写入后一个周期即可从 bundle 读回。 |
| 61 | + - 检查:`io.fetch.req.valid`, `io.fetch.req.bits.blkPaddr`, `io.fencei` 等寄存器能在 step 后保持设置值。 |
| 62 | + - 用例:TC02 `test_bundle_drive_fetch_req_inputs`。 |
| 63 | + |
| 64 | +2. **Flush / FenceI 快速冒烟** |
| 65 | + - 场景:通过 Agent 拉高 `fencei`,等待 10 个周期,再次拉低。 |
| 66 | + - 检查:冒烟期间无断言、无仿真崩溃;用于快速确认仿真初始化正确。 |
| 67 | + - 用例:TC01 `test_smoke`。 |
| 68 | + |
| 69 | +3. **Victim/Flush API 设置** |
| 70 | + - 场景:使用 Agent API 轮流设置 `io.flush`、四种 `victim_way`,并在 bundle 中回读。 |
| 71 | + - 检查:Flush 拉高时 `bundle.io._flush` = 1,victim_way 依次为 0~3。 |
| 72 | + - 用例:TC04 `test_set_flush`、TC05 `test_set_victim_way`。 |
| 73 | + |
| 74 | +4. **Fetch / Prefetch API 测试流** |
| 75 | + - 场景:`drive_send_fetch_request` / `drive_send_prefetch_req` 在队列空/满、重复 miss 等场合多次调用。 |
| 76 | + - 检查:`send_success`、`bundle.io._fetch._req._ready` 的状态切换;prefetch 第 11 次请求被阻塞再放行。 |
| 77 | + - 用例:TC06 `test_send_fetch_request`、TC10 `test_send_prefetch_request`。 |
| 78 | + |
| 79 | +5. **Acquire / Grant 高层流程** |
| 80 | + - 场景:发送 miss -> 捕获 `io.mem.acquire` -> 拉高 ready 完成握手 -> 模拟 Grant -> 等待 fetch_resp。 |
| 81 | + - 检查:Acquire 地址 `blkPaddr << 6`、source ID、Victim 路设置与对应的独热编码 `waymask`;Grant 分两拍写入,`corrupt` 标志在响应链路中保持一致。 |
| 82 | + - 用例:TC07 `test_api_fetch_request_generates_acquire`, TC08 `test_api_full_fetch_flow`, TC09 `test_api_grant_with_corruption`, TC11 `test_api_full_prefetch_flow`. |
| 83 | + |
| 84 | +### 3.2 Priority FIFO 功能(CP28~CP30) |
| 85 | + |
| 86 | +**CP28 入队行为** |
| 87 | +测试用例:TC12 `test_FIFO_moudle_CP28_CP29_enq_and_deq_operation` |
| 88 | +- CP28.1 队未满正常入队:一次性注入 9 个预取 miss,`enq_ptr_value` 逐项累加、`enq_ready=1`,说明 FIFO 在有空位时可以连续 fire。 |
| 89 | +- CP28.2 入队后指针翻转:当写指针指向 9 时再次入队,观测 `enq_ptr_value` 回到 0、`enq_ptr_flag` 翻转、`full` 置 1。 |
| 90 | +- CP28.3 队满无法入队:继续发送请求,`io.prefetch_req.ready` 与 `priorityFIFO.io_enq_ready` 均为 0,API 返回 `send_success=False`。 |
| 91 | + |
| 92 | +**CP29 出队行为** |
| 93 | +测试用例:TC12 `test_FIFO_moudle_CP28_CP29_enq_and_deq_operation` |
| 94 | +- CP29.1 正常出队:拉高 `io.mem.acquire.ready` 触发 acquireArb,`deq_ptr_value` 依次递增。 |
| 95 | +- CP29.2 出队后指针翻转:当 `deq_ptr_value` 为 9 时再出队,指针回到 0 且 `deq_ptr_flag` 翻转。 |
| 96 | +- CP29.3 队空阻塞:FIFO 被完全取走后,`deq_valid=0`、`priorityFIFO.io_deq_ready=0`,额外出队不会改变指针。 |
| 97 | + |
| 98 | +**CP30 Flush 行为** |
| 99 | +测试用例:TC13 `test_FIFO_moudle_CP30_flush_operation` |
| 100 | +- 拉高 `io.flush` 时,`enq_ptr`、`deq_ptr` 以及 flag 均复位,`full=0`、`enq_ready=1`。Flush 后重新发起预取请求,队列能再次入队,证明状态确实被清空。 |
| 101 | + |
| 102 | +### 3.3 Miss pipeline 功能(CP31~CP39) |
| 103 | + |
| 104 | +**CP31 处理取指缺失** |
| 105 | +测试用例:TC14 `test_MISSUNIT_CP31_fetch_miss_process` |
| 106 | +- CP31.1 新 miss 进入:当 `fetchHit=0`、`io.fetch.req.valid=1` 时,`io.fetch.req.ready=1` 并通过 `fetchDemux` 分发到最低索引的空闲 MSHR。 |
| 107 | +- CP31.2 命中已有 miss:再次发送相同地址,`fetchHit=1`,`fetchDemux.io.in.valid=0` 但 `ready` 仍为 1,实现“表面接收、实际不入队”。 |
| 108 | +- CP31.3 低索引优先:同一周期多个 miss 时,`fetchDemux.io.chosen` 总是选择编号最小的空闲 MSHR。 |
| 109 | + |
| 110 | +**CP32 处理预取缺失** |
| 111 | +测试用例:TC15 `test_MISSUNIT_CP32_prefetch_miss_process` |
| 112 | +- CP32.1 新预取 miss 入队:`prefetchHit=0` 时 `prefetchDemux` 将请求写入第一个空闲的 prefetch MSHR,同时将索引放入 priority FIFO。 |
| 113 | +- CP32.2 命中已有预取:再次发送同址请求,`prefetchHit=1`,`prefetchDemux` 不再 fire,但 `io.prefetch.req.ready=1`。 |
| 114 | +- CP32.3 低索引优先:多条预取 miss 同到时,`prefetchDemux.io.chosen` 总是最小空闲索引。 |
| 115 | +- CP32.4 FIFO 顺序:结合 TC12/TC13 观察 `prefetchArb` 的 dequeue 顺序与 priority FIFO 入队顺序一致。 |
| 116 | + |
| 117 | +**CP33 MSHR 管理与查找** |
| 118 | +测试用例:TC16 `test_MISSUNIT_CP33_MSHR_manage`、TC23 `test_MISSUNIT_addational_all_mshr_lookup_coverage` |
| 119 | +- CP33.1 Fetch 查找命中:通过内部信号确认 fetch lookUp 判定 `fetchHit`。 |
| 120 | +- CP33.2 Prefetch 查找命中:同理验证 prefetch lookUp。 |
| 121 | +- CP33.3 Prefetch 与 Fetch 同址:`test_MISSUNIT_addational_all_mshr_lookup_coverage` 构造 fetch/prefetch 同地址,`prefetchHit` 仍会被置高。 |
| 122 | +- CP33.4 MSHR 释放:Grant 返回后,对应 MSHR 的 `valid` 拉低,腾出入口。 |
| 123 | + |
| 124 | +**CP34 Acquire 仲裁** |
| 125 | +测试用例:TC18 `test_MISSUNIT_CP34_acquireArb_arbitration` |
| 126 | +- 构造 fetch 与 prefetch 同时有 acquire,`acquireArb.io.out` 优先选择 fetch (source 0~3),仅在 fetch 空闲时才向 prefetch 的 source(4~13) 放行。 |
| 127 | + |
| 128 | +**CP35 Grant / Refill** |
| 129 | +测试用例:TC19 `test_MISSUNIT_CP35_grant_accept_and_refill`、TC09 `test_api_grant_with_corruption` |
| 130 | +- CP35.1 第 1 beat:`io.mem_grant.valid=1` 时,数据写入 `respDataReg_0`,`readBeatCnt` 从 0 -> 1。 |
| 131 | +- CP35.2 第 2 beat:继续 fire,数据写入 `respDataReg_1`,`readBeatCnt` 回到 0,`last_fire` 置 1。 |
| 132 | +- CP35.3 MSHR 失效:`last_fire_r=1` 后,根据 source ID 拉高对应 MSHR 的 `io.invalid`。 |
| 133 | +- CP35.4 带 `corrupt` 的 Grant:在第二个 beat 设置 `corrupt=1`,`corrupt_r` 拉高并反映到 fetch_resp;若下一次 Grant 正常,该标志被清零。 |
| 134 | + |
| 135 | +**CP36 替换策略更新** |
| 136 | +测试用例:TC20 `test_MISSUNIT_CP36_Replacer`、TC08 `test_api_full_fetch_flow` |
| 137 | +- CP36.1 Acquire 时更新 vSetIdx:当 `io.mem.acquire.ready` 与仲裁输出握手时,`io.victim.vSetIdx.valid=1` 且值等于该 miss 的虚拟集合号。 |
| 138 | +- CP36.2 Waymask 生成:Grant 完成后,`response["waymask"]` 等于 `1 << victim_way`,同时内部 `mshr_resp_way` 与期望一致。 |
| 139 | + |
| 140 | +**CP37 SRAM 写回** |
| 141 | +测试用例:TC21 `test_MISSUNIT_CP37_SRAM_writeback` |
| 142 | +- CP37.1 正常写回:没有 flush/fencei 且 `corrupt_r=0` 时,`io.meta_write.valid`、`io.data_write.valid` 均为 1,字段内容与 MSHR 记录匹配。 |
| 143 | +- CP37.2 有 flush/fencei 或 corrupt:在 flush/fencei 拉高或 Grant 标记 `corrupt` 的场景中,写回有效信号保持 0。 |
| 144 | + |
| 145 | +**CP38 Miss Completion** |
| 146 | +测试用例:TC22 `test_MISSUNIT_CP38_mainpipe_iprefetchpipe_response` |
| 147 | +- Grant 全部返回后,无论 flush/fencei 是否发生,`io.fetch_resp.valid=1`,并将 `blkPaddr/vSetIdx/waymask/data/corrupt` 正确送回 mainpipe/预取管线。 |
| 148 | + |
| 149 | +**CP39 Flush/FenceI 处理** |
| 150 | +测试用例:TC03 `test_fencei_work`、TC04 `test_set_flush`、TC23 `test_MISSUNIT_CP39_flush_fencei_operation` |
| 151 | +- CP39.1 fencei 在发射前:拉高 fencei 时,所有 MSHR 的 `io.req.ready` 与 `io.acquire.valid` 变低,新的 miss 不再发射。 |
| 152 | +- CP39.2 flush 在发射前:flush 只影响 prefetch MSHR,拉高时仅允许 fetch 请求继续发射。 |
| 153 | +- CP39.3 已发射后的 flush/fencei:当请求已经发出,再出现 flush/fencei 时,Grant 数据仍需接收但不写 SRAM;`io.fetch_resp.valid` 仍会如期拉高。 |
| 154 | + |
| 155 | +综上,所有 CP 功能点均在测试集中得到覆盖,且每个场景明确对应的 Toffee 用例可复现。 |
| 156 | + |
| 157 | +## 4. 验证方案 |
| 158 | + |
| 159 | +### 4.1 验证目标 |
| 160 | +- 覆盖 fetch/prefetch miss 的全链路控制与数据路径。 |
| 161 | +- 证明 priority FIFO、MSHR 查找、Arbiter、Replacer 在所有 CP(31~39)下行为正确。 |
| 162 | +- 验证 API 层能够驱动/观测关键信号,便于系统集成。 |
| 163 | +- 收集足够的行覆盖率与功能覆盖率,确保各类边界场景(flush/fencei、corrupt、FIFO 指针回绕)被触发。 |
| 164 | + |
| 165 | +### 4.2 验证环境 |
| 166 | +- **DUT**:`DUTICacheMissUnit` |
| 167 | +- **环境类**:`ICacheMissUnitEnv` |
| 168 | +- **Agent**:`ICacheMissUnitAgent`(提供 fetch/prefetch/acquire/grant API) |
| 169 | +- **Bundle**:`ICacheMissUnitBundle` |
| 170 | +- **仿真器**:Verilator + Toffee runtime |
| 171 | + |
| 172 | +### 4.3 覆盖率策略 |
| 173 | +- **代码覆盖**:基于 Verilator LCOV,目标文件包括 `ICacheMissUnit.v`、`ICacheMissUnit_top.sv` 以及 10+ MSHR/Mux 组件,统计 line/toggle/branch/expression。 |
| 174 | +- **功能覆盖**:在 `missunit_coverage.py` 中定义 4 组覆盖(Basic/FIFO/Main/Timing),共 19 个覆盖点、40 个 bin,覆盖 API 控制、FIFO 事件、MSHR/Arbiter/Grant/Flush 时序。 |
| 175 | +- **断言覆盖**:继承 RTL 中 `assert` 语句,对 FIFO handshake、refill `last_fire` 等关键条件进行运行时校验。 |
| 176 | + |
| 177 | +## 5. 测试用例 |
| 178 | + |
| 179 | +### 5.1 用例列表 |
| 180 | + |
| 181 | +| 序号 | 用例名称 | 目标 | |
| 182 | +|------|---------|------| |
| 183 | +| TC01 | test_smoke | 基础 fencei 触发冒烟 | |
| 184 | +| TC02 | test_bundle_drive_fetch_req_inputs | 验证 bundle 可写 fetch_req/fencei | |
| 185 | +| TC03 | test_fencei_work | 确认 fencei 清空所有 MSHR | |
| 186 | +| TC04 | test_set_flush | flush API 高低电平切换 | |
| 187 | +| TC05 | test_set_victim_way | victim way 编程覆盖四路 | |
| 188 | +| TC06 | test_send_fetch_request | fetch_req 发起与 ready 行为 | |
| 189 | +| TC07 | test_api_fetch_request_generates_acquire | fetch miss 触发 Acquire | |
| 190 | +| TC08 | test_api_full_fetch_flow | Fetch miss 全流程(victim、Grant、response) | |
| 191 | +| TC09 | test_api_grant_with_corruption | Grant 携带 `corrupt` 标志的传递 | |
| 192 | +| TC10 | test_send_prefetch_request | 预取 miss 配额与重复请求 | |
| 193 | +| TC11 | test_api_full_prefetch_flow | Prefetch miss 全流程 | |
| 194 | +| TC12 | test_FIFO_moudle_CP28_CP29_enq_and_deq_operation | FIFO 入/出队及 flag 翻转 | |
| 195 | +| TC13 | test_FIFO_moudle_CP30_flush_operation | FIFO flush 行为 | |
| 196 | +| TC14 | test_MISSUNIT_CP31_fetch_miss_process | Fetch miss 分类与命中 | |
| 197 | +| TC15 | test_MISSUNIT_CP32_prefetch_miss_process | Prefetch miss 分类与命中 | |
| 198 | +| TC16 | test_MISSUNIT_CP33_MSHR_manage | 14 路 MSHR 查找逻辑 | |
| 199 | +| TC17 | test_MISSUNIT_addational_all_mshr_lookup_coverage | 极端查找组合补充 | |
| 200 | +| TC18 | test_MISSUNIT_CP34_acquireArb_arbitration | Acquire 仲裁及 source ID | |
| 201 | +| TC19 | test_MISSUNIT_CP35_grant_accept_and_refill | Grant beat 收集与 last_fire | |
| 202 | +| TC20 | test_MISSUNIT_CP36_Replacer | Victim 路/waymask 更新 | |
| 203 | +| TC21 | test_MISSUNIT_CP37_SRAM_writeback | SRAM 写/flush/corrupt 路径 | |
| 204 | +| TC22 | test_MISSUNIT_CP38_mainpipe_iprefetchpipe_response | miss completion 响应 | |
| 205 | +| TC23 | test_MISSUNIT_CP39_flush_fencei_operation | Flush/FenceI 在不同阶段动作 | |
| 206 | + |
| 207 | +### 5.2 测试数据 |
| 208 | +- **固定向量与序列**:地址、集合索引用固定步长生成,便于复现。 |
| 209 | +- **并发握手**:Acquire/Grant/Prefetch 等接口使用 Toffee 的多协程等待,确保握手次序可控。 |
| 210 | +- **特殊场景**:Grant corrupt、flush/fencei 插入、MSHR hit/miss 全组合。 |
| 211 | + |
| 212 | +## 6. 测试环境 |
| 213 | + |
| 214 | +### 6.1 硬件/软件 |
| 215 | +- 仿真:Verilator 5.038 |
| 216 | +- 主机:x86_64 Linux |
| 217 | +- Python 3.10 + Toffee + pytest-asyncio |
| 218 | + |
| 219 | +### 6.2 目录结构 |
| 220 | +``` |
| 221 | +missunit/ |
| 222 | +├── agent/ # ICacheMissUnitAgent,封装 API |
| 223 | +├── bundle/ # ICacheMissUnitBundle 结构 |
| 224 | +├── env/ # Env、功能覆盖定义 |
| 225 | +├── test/ # missunit_test.py 及 fixture |
| 226 | +└── Missunit模块验证报告.md |
| 227 | +``` |
| 228 | + |
| 229 | +## 7. 测试结果分析 |
| 230 | + |
| 231 | +### 7.1 通过率 |
| 232 | +- **总用例数**:23 |
| 233 | +- **通过**:23 |
| 234 | +- **失败**:0 |
| 235 | +- **通过率**:100% |
| 236 | + |
| 237 | +### 7.2 覆盖率 |
| 238 | + |
| 239 | +#### 7.2.1 代码覆盖 |
| 240 | +- **行覆盖**:83.86%(1335/1592) |
| 241 | +- **Toggle 覆盖**:84.80%(8006/9441) |
| 242 | +- **分支覆盖**:89.31%(259/290) |
| 243 | +- **表达式覆盖**:97.01%(324/334) |
| 244 | +- **关键文件**: |
| 245 | + - `ICacheMissUnit.v`:80.34%(94/117),未覆盖的部分集中在assert以及reset状态 |
| 246 | + - `ICacheMSHR_*`, `MuxBundle`, `FIFOReg` 等辅助模块都完成覆盖,未覆盖的部分集中在reset状态。 |
| 247 | + |
| 248 | +#### 7.2.2 功能覆盖 |
| 249 | +- **覆盖组**:4 组(Basic / FIFO / Main / Timing) |
| 250 | +- **覆盖点**:19 |
| 251 | +- **Bins**:40 |
| 252 | +- **覆盖率**:100%(所有 once/hinted bin 均触发) |
| 253 | +- **亮点**:CP33 的 4 类 MSHR hit/merge、CP37 SRAM 写回、CP39 flush/fencei before/after fire 均有对应例程触发。 |
| 254 | + |
| 255 | +### 7.3 结果解读 |
| 256 | +- 行覆盖低于 90% 的部分集中在顶层 wrapper 与某些异常分支(如 `refill_done` 断言失败路径)。这些路径需要特制用例(例如强制 TL 错误)才能覆盖。 |
| 257 | +- 功能覆盖完整说明规划的 MissUnit CP 已全部执行,特别是 priority FIFO 与 flush/fencei 时序,覆盖点统计已确认 40 个 bin 全命中。 |
| 258 | + |
| 259 | +## 8. 缺陷与风险 |
| 260 | +- 本轮测试未发现功能性缺陷。 |
| 261 | +- 风险点: |
| 262 | + 1. `ICacheMissUnit_top.sv` 覆盖率较低,建议在系统级压测中插入额外的 DPI/monitor 流程以覆盖剩余路径。 |
| 263 | + 2. 未针对 TL 错误、Grant 超时等极端情形编写测试,可能遗漏异常恢复路径。 |
| 264 | + |
| 265 | +## 9. 结论 |
| 266 | +- √ 规划的功能点全部验证,功能覆盖率 100%。 |
| 267 | +- √ 23 个用例全部通过,API/FIFO/MSHR/时序场景均被覆盖。 |
| 268 | + |
| 269 | +综合结论:**MissUnit 模块当前验证结果通过**,满足集成验证准入条件,可进入下一阶段测试。 |
0 commit comments