日常记录(32)验证计划与TB、NEADTree、TAB管理
验证计划参照
# 验证计划 根据验证计划安排testcase进行验证。 ## 1 时钟 ### 1.1 时钟频率 最小值、典型值、最大值、随机值(可选) ### 1.2 复位 上电复位,运行中复位、检查fifo是否复位(如果有) ## 2 DUT相关 ### 2.1 读写 #### 2.1.1)size不同 8bit、16bit、32bit #### 2.1.2)bank不同 bank0读写,bank1不变。 bank0不变,bank1读写。 bank0,bank1交叉读写。 #### 2.1.3)full range读写测试 #### 2.1.4)边界值读写测试 最小地址、最大地址、bank0最大地址,bank1最小地址 ### 2.2 运算 #### 2.2.1 移位运算 逻辑左移、右移、算数左移、右移 #### 2.2.2 算数运算 加减乘除取余, ## 3 中断 ## 4 调试 ## 5 寄存器 ## 6 corner ### 6.1 混合size的读写测试 8bit写,16bit、32bit读 ### 6.2 ahb协议测试 hready、htrans、hburst
TB简单验证mem读写。
Makefile文件
FILES = 例如:top.sv arb.sv arb_if.sv test.sv FLAGS = 例如:-sverilog -debug_all run: simv ./simv -l simv.log gui: simv ./simv -gui simv: ${FILES} vcs ${FLAGS} ${FILES} DIR = $(shell basename `pwd`) tar: clean cd ..;tar cvf ${DIR}.tar ${DIR} clean: @rm -rf csrc simv* *.tcl *.vpd .res* ucli* .ucli* *.old *.txt *.db @rm -rf *.log *~ */*~ .*/*~
Python脚本
import os dut="memory.sv" tb="memory_tb.sv" top="memory_top.sv" with open("filelist.f", mode="w") as f: f.write(tb) f.write('\n') f.write(dut) f.write('\n') f.write(top) f.write('\n') filelist=os.listdir() filelist=filter(lambda x:x.split(".")[-1] == "sv" , filelist) for eachfile in filelist: if eachfile == dut: continue if eachfile == tb: continue if eachfile == top: continue with open("filelist.f", mode="a") as f: f.write(eachfile) f.write('\n')
结构图
https://gitee.com/bai-mengwei/sv_mem_tb
完整测试平台回顾
http://t.zoukankan.com/yllinux-p-13199014.html
NEADTree
TAB管理
Le vent se lève! . . . il faut tenter de vivre!
Le vent se lève! . . . il faut tenter de vivre!