4.3 KiB
4.3 KiB
测试平台说明文档 (TB.sv)
1. 概述
本测试平台用于验证 da4008_chip_top 芯片的数字功能。通过 SPI 接口配置芯片内部寄存器,并通过 LVDS 接口输入数据帧,观察芯片输出的并行数据(MSB_OUT/LSB_OUT)以及经过后处理的波形数据。测试平台包含时钟生成、复位控制、驱动器模型、待测芯片实例化以及数据采集逻辑。
2. 主要模块及功能
2.1 时钟生成
- clk:周期 1.536 ns,用于芯片主时钟。
- clk_40g:周期 0.024 ns,用于高速数据采集(后处理模块采样时钟)。
两个时钟均由 clock_tb 模块实例化产生。
2.2 复位信号
rst_n:低有效复位,初始为 0,延迟 20 ns 后置为 1。
2.3 配置文件读取
测试平台通过读取临时文件获取配置和数据的路径:
CASE_TEMP = "../../case_temp.txt":存储 SPI 配置文件路径。DATA_TEMP = "../../data_temp.txt":存储输出数据文件路径。LVDS_FILE = "../../../../case/lvds/0305/lvds.txt":LVDS 输入数据文件路径。
在 initial 块中读取这些路径,并存入 CONFIG_FILE 和 DATA_O_FILE 字符串变量。
2.4 接口及驱动器
- SPI 接口:
spi_if模块实例化为spi_bus,包含sclk、mosi、miso、csn信号。通过virtual spi_if vif传递。 - LVDS 接口:
lvds_if模块实例化为lvds_bus,包含data、valid、clk信号。通过virtual lvds_if lvds_vif传递。 - SPI 驱动器:
spi_driver类对象my_drv,负责从CONFIG_FILE读取配置序列并驱动 SPI 总线,同时将读取的结果写入DATA_O_FILE。 - LVDS 驱动器:
lvds_driver类对象lvds_drv,负责从LVDS_FILE读取数据帧并驱动 LVDS 总线。先发送训练序列(train_count = 100),然后发送加扰数据帧。
2.5 测试流程
- 初始化复位和驱动器对象。
- 释放复位后,LVDS 驱动器发送训练序列和数据帧。
- 首次调用
my_drv.do_drive(file_path)将 SPI 配置写入芯片(同时可能回读并保存)。 - 拉高
start信号两个周期,启动芯片内部同步。 - 等待 30,000 ns 后再次调用
do_drive保存数据。 - 重复步骤 4-5 两次,共三次数据采集。
- 仿真结束(
$finish)。
2.6 待测芯片实例化
da4008_chip_top 例化为 U_da4008_chip_top,连接信号包括:
- SPI 接口:
PI_sclk,PI_csn,PI_mosi,PO_miso - 中断:
PO_irq - 同步信号:
PI_sync_in(start),PO_sync_out - 时钟:
clk - LVDS 输入:
lvds_data,lvds_valid,lvds_clk - DAC 输出总线:
MSB_OUT[63:0],LSB_OUT[63:0],MSB_DUM[63:0],DEM_VLD - 各类配置端口(电流、时钟、P2S 等)
2.7 后处理模块
- DEM_Reverse_64CH:将
MSB_OUT和LSB_OUT合并并反向排列,输出 64 路 8 位数据data_out[63:0]及有效信号vld_out。 - 使用
clk_40g将data_out和vld_out打一拍得到data_out_r和vld_out_r。 - 计数器
cnt_c:在vld_out_r有效时递增(0~63 循环),用于轮询选择当前通道数据。 cs_wave:根据cnt_c选择对应通道的data_out_r,并将最高位取反(可能是为了满足特定输出格式),输出 8 位波形数据。
2.8 波形记录
使用 $fsdbAutoSwitchDumpfile 和 $fsdbDumpvars 记录 FSDB 格式波形,支持 MDA 转储,便于调试。
3. 文件依赖
../../rtl/define/chip_define.v:芯片定义文件。../../model/SPI_DRIVER.sv:SPI 驱动器模型。../../model/LVDS_DRIVER.sv:LVDS 驱动器模型。clock_tb时钟发生模块。spi_if、lvds_ifSPI接口文件。DEM_Reverse_64CHDEM解码模块。
4. 仿真控制
通过修改 case_temp.txt 和 data_temp.txt 可指定不同的配置文件和输出文件。LVDS 数据文件路径固定为 LVDS_FILE,可根据需要修改。
5. 注意事项
- 仿真时间单位/精度为 1ns/1ps。
- 驱动器的具体实现未在此文件中给出,需确保相关模型正确。
- 多次调用
my_drv.do_drive可能用于在不同时刻捕获芯片内部状态。 cs_wave的生成方式暗示了数据采集的时序要求,需保证clk_40g与芯片输出时钟的同步关系。
以上为该测试平台的结构与功能说明,可作为仿真环境的使用参考。