lin-win-share/DA4008_V1.2/sim/chip_top/TB说明.md

4.3 KiB
Raw Blame History

测试平台说明文档 (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_FILEDATA_O_FILE 字符串变量。

2.4 接口及驱动器

  • SPI 接口spi_if 模块实例化为 spi_bus,包含 sclkmosimisocsn 信号。通过 virtual spi_if vif 传递。
  • LVDS 接口lvds_if 模块实例化为 lvds_bus,包含 datavalidclk 信号。通过 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 测试流程

  1. 初始化复位和驱动器对象。
  2. 释放复位后LVDS 驱动器发送训练序列和数据帧。
  3. 首次调用 my_drv.do_drive(file_path) 将 SPI 配置写入芯片(同时可能回读并保存)。
  4. 拉高 start 信号两个周期,启动芯片内部同步。
  5. 等待 30,000 ns 后再次调用 do_drive 保存数据。
  6. 重复步骤 4-5 两次,共三次数据采集。
  7. 仿真结束($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_OUTLSB_OUT 合并并反向排列,输出 64 路 8 位数据 data_out[63:0] 及有效信号 vld_out
  • 使用 clk_40gdata_outvld_out 打一拍得到 data_out_rvld_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.svSPI 驱动器模型。
  • ../../model/LVDS_DRIVER.svLVDS 驱动器模型。
  • clock_tb 时钟发生模块。
  • spi_iflvds_if SPI接口文件。
  • DEM_Reverse_64CH DEM解码模块。

4. 仿真控制

通过修改 case_temp.txtdata_temp.txt 可指定不同的配置文件和输出文件。LVDS 数据文件路径固定为 LVDS_FILE,可根据需要修改。

5. 注意事项

  • 仿真时间单位/精度为 1ns/1ps。
  • 驱动器的具体实现未在此文件中给出,需确保相关模型正确。
  • 多次调用 my_drv.do_drive 可能用于在不同时刻捕获芯片内部状态。
  • cs_wave 的生成方式暗示了数据采集的时序要求,需保证 clk_40g 与芯片输出时钟的同步关系。

以上为该测试平台的结构与功能说明,可作为仿真环境的使用参考。