SOC验证环境详解.md

SoC V2.0 — SOC 验证环境详解

对应母本:/project/SOC2.0/soc
以下描述依据当期母本树中的 read_me、Makefile、filelist/、top/、ip/、sw/ 整理;若目录有增补,以你副本内实际文件为准。


1. 工程角色一览

目录 / 文件 作用
Makefile 编译 TB(comp)、按软件用例跑仿(run_<用例目录> / run_all)
read_me 最短上手:先 make comp,再 make run_all TEST=…
filelist/ top.f 及 ibex_core.f、dma.f、isp.f、busmatrix_filelist.f 等
top/ 芯片顶层(如 soc_top,含 pad、指令/数据总线与 SRAM 等连线)
ip/ apb_subsystem、busmatrix、dma、isp、pad 等片上 IP
ibex/ RISC-V Ibex 核及相关代码(第三方子树,实践时一般只读对照)
sw/ 嵌入式用例源码与构建:uart_test、spi_test、soc_dma_test*、isp_test、mem_test、led、simple_system、benchmarks 等
sw/common/ 用例共用启动/链接脚本与 Makefile 片段
test/ SystemVerilog / UVM 测试台相关
model/ 行为模型等(若存在)
comp/ make comp 生成的编译工作区(勿当源码长期修改)

2. 编译与仿真(母本 read_me + Makefile)

工程根目录 read_me 摘要:

  1. 编译 testbench:make comp
  2. 跑仿真:make run_all TEST={ip_name}
  3. 示例:make run_all TEST=spi(对应寻找 sw/spi_test/ 一类目录;请以你副本中真实目录名为准)

Makefile 中常见目标:

目标 含义(摘要)
comp 清理并重建 comp/,拷贝 filelist,调用 VCS + UVM 编译 top.f
run_<name> 以 sw/<name>/ 下软件用例生成镜像并启动 simv(如 make run_uart_test)
run_all 按 TEST 编译软件(sw/$(TEST)_test/)→ comp → run
debug_<name> 与 run_<name> 类似,便于调试流程
clean 清理仿真产物

默认 TEST ?= spi1(UVM +UVM_TESTNAME);软件侧用例名与 UVM test 类名可能不同,需分别对照 sw/ 目录与 TB 中实际类名。

建议第一次在副本中:

cd /home/USER/cxjl_practice/SOC2.0_soc_my
cat read_me
ls sw
make comp
# 再按 read_me / Makefile 选择存在的软件用例跑一轮,保存 vcs.log

3. 顶层与互连(读代码入口)

  • 顶层模块可见 soc_top(top/ 下),对外有 pad 等端口。
  • 核侧常见指令/数据存储器接口信号(instr_*、data_*)再接到总线矩阵 / SRAM / 外设。
  • ip/busmatrix、ip/apb_subsystem、ip/dma、ip/isp、ip/pad 是画「增量架构图」的优先阅读对象。
  • filelist/top.f 决定编译进仿真的文件集合——改 filelist 等于改可验证边界。

验收自问:不看他人笔记,能否指出 Core、互连、至少一块存储、至少一个外设例化?


4. 软件用例(sw/)

当期母本中常见目录(以 ls sw 为准):

目录 典型用途(实践向)
uart_test UART 通路冒烟 / 定向
spi_test SPI 通路
soc_dma_test / soc_dma_test1 / soc_dma_test2 DMA 相关场景
isp_test 与 ISP 相关的片上软件激励
mem_test / led / simple_system 存储 / 简单外设 / 最小系统
benchmarks 基准程序(见其 README.md)
common 共用构建与启动代码

跑仿时 Makefile 会把对应 sw/<用例> 与 sw/common 拷入运行目录并生成 mem.data(或等价镜像),再启动 simv。


5. 波形与覆盖率

  • Makefile 编译选项含 -cm line+cond+tgl 等,可能生成覆盖率数据库;是否开启 dump 波形以 TB/+ 参数与 Verdi 流程为准。
  • 建议基线阶段:先保证功能 log 可复现,再开大波形,避免磁盘占满。
  • 官网 PDF「Coverage Report」等可在项目详情 配套资料 中对照阅读,不替代你在本机跑出的报告。

6. 与并列 IP 包的关系

  • 片上已集成的 ISP / 总线 / DMA 等:优先在 soc/ 内读 RTL + sw/ 用例。
  • 独立 IP 验证包(协议级 / Formal):见同级 /project/SOC2.0/QSPI、ISP、PINMUX,说明见 IP专项实践说明.md。
  • 选题时建议「SoC 系统一条线 + 一个 IP 专项」,避免同时大改多处。

7. 常见问题

现象 排查
comp 失败 环境是否已 source EDA;filelist 路径是否被 sed 改乱(应在副本中操作)
run_* 找不到软件 sw/ 下是否存在同名目录;TEST 与目录命名约定是否一致(spi vs spi_test)
UVM test 不存在 +UVM_TESTNAME / TEST= 是否与 TB 中类名一致
与 V1.1 行为不一致 预期差异:核对 ip/、映射与启动路径后再定缺陷