SOC验证环境详解.md

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

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


1. 工程角色一览

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

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

工程根目录 read_me 摘要:

  1. 编译 testbenchmake 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/)→ comprun
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_toptop/ 下),对外有 pad 等端口。
  • 核侧常见指令/数据存储器接口信号(instr_*data_*)再接到总线矩阵 / SRAM / 外设。
  • ip/busmatrixip/apb_subsystemip/dmaip/ispip/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/QSPIISPPINMUX,说明见 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/、映射与启动路径后再定缺陷