目录

果壳(NutShell)Cache 自动化验证项目

项目简介

基于 UCAgent 完成对”果壳(NutShell)Cache”的自动化验证。

本项目实现了从 RTL 逻辑到结构化验证环境构建的全过程,涵盖:

  • 验证原理深度剖析(CRV、功能覆盖率等)
  • 跨语言仿真(Picker 工具)
  • 结构化环境构建(Toffee 框架)

项目结构

NutShell_Cache_Verification/
├── README.md                           # 本文件
├── COMLETION_SUMMARY.md               # 完成总结
├── NutShell_Cache_Verification_Plan.md  # 验证规划
├── SimpleCache.v                       # 模拟 Cache RTL
├── unity_test/                        # Toffee 验证环境
│   └── tests/
│       ├── NutShell_Cache_api.py              # DUT API
│       ├── test_NutShell_Cache_functional.py  # 功能测试
│       ├── NutShell_Cache_generator.py       # 激励发生器
│       ├── NutShell_Cache_scoreboard.py      # 计分板
│       └── NutShell_Cache_function_coverage_def.py  # 覆盖率定义
└── docs/
    └── 验证报告模板.md                 # 验证报告

核心组件

1. DUT API(NutShell_Cache_api.py)

  • SimpleCacheDUT:模拟 Cache 待测设计
  • NutShellCacheAPI:封装测试方法
  • 支持:写、读、突发访问、命中率统计

2. 功能测试(test_NutShell_Cache_functional.py)

  • TestNutShellCacheBasic:10 个基本功能测试
  • TestNutShellCacheAdvanced:10 个高级功能测试
  • 覆盖:Hit/Miss、替换策略、无效化、压力测试

3. 激励发生器(NutShell_Cache_generator.py)

  • 受约束随机激励(CRV)
  • Corner Case 生成(26+ 个边界情况)
  • 突发测试序列生成

4. 计分板(NutShell_Cache_scoreboard.py)

  • 参考模型(软件 Cache)
  • 自动比对预期与实际结果
  • 错误记录与报告生成
  • 支持故障注入测试

5. 覆盖率收集(NutShell_Cache_function_coverage_def.py)

  • 16 个功能覆盖点
  • 交叉覆盖定义
  • 覆盖率报告生成

快速开始

1. 运行功能测试

cd unity_test/tests
python -m unittest test_NutShell_Cache_functional -v

2. 运行覆盖率收集

cd unity_test/tests
python NutShell_Cache_function_coverage_def.py

3. 测试激励发生器

cd unity_test/tests
python NutShell_Cache_generator.py

4. 测试计分板

cd unity_test/tests
python NutShell_Cache_scoreboard.py

验证计划

阶段一:需求分析 ✅

  • 定义验证目标
  • 理解 Cache 设计
  • 制定测试计划

阶段二:验证环境搭建 ✅

  • 创建模拟 RTL(SimpleCache.v)
  • 构建 Toffee 验证环境
  • 实现核心组件(API、Generator、Scoreboard、Coverage)

阶段三:真实 RTL 验证 ⏳

  • 下载果壳(NutShell)Cache RTL
  • 使用 Picker 转换 RTL → Python
  • 替换模拟 DUT 为真实 DUT
  • 运行完整测试套件

阶段四:人工介入与优化 ⏳

  • 约束细化(复杂 CRV)
  • 架构重构(Code Review)
  • 故障注入测试
  • 生成验证报告

提交内容

代码仓库 ✅

  • 完整验证组件(API、Generator、Scoreboard、Coverage)
  • 激励发生器(CRV + Corner Case)
  • 计分板(自动比对 + 错误记录)

验证报告 ⏳

  • 测试计划
  • 覆盖率分析
  • Bug 追踪记录

开发者任务重心

约束细化(人工编写复杂 CRV)

  • 分析 UCAgent 生成的代码
  • 识别难以覆盖的 Corner Case
  • 人工编写复杂约束
  • 集成到验证环境中

架构重构(Code Review)

  • 审查 UCAgent 生成的代码
  • 整合进 Toffee 结构化框架
  • 重构优化(提高可维护性)
  • 添加详细注释

故障注入(校验检出能力)

  • 设计特定 Bug 场景
  • 注入到 DUT 或参考模型
  • 验证 Scoreboard 正确检出
  • 记录 Bug 追踪信息

参考资源

项目链接

学习资料

  • 《UVM(Universal Verification Methodology)入门》
  • 《受约束随机激励生成方法》
  • 《功能覆盖率驱动验证》
  • Toffee 框架文档(UCAgent 项目)

项目状态

  • 当前阶段:验证环境搭建完成 ✅
  • 下一步:下载真实 RTL → Picker 转换 → 运行测试
  • 预计完成:2026-06-xx

贡献者

  • 开发者:[Your Name]
  • 机构:[Your Organization]
  • 日期:2026-06-05

许可证

本项目采用 Apache License 2.0 开源。


加油!从 RTL 到验证环境,深度经历芯片验证全流程! 💪🔧

关于
57.0 KB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号