usb_vip使用

发布时间:2026/7/17 19:45:28
usb_vip使用 1.安装方式1.1.下载vip1.2.在 ~/.bashrc中设置环境变量设置DESIGNWARE_HOME 到打算安装vip的绝对路径设置LM_LICENSE_FILE到包含license的文件夹的绝对路径设置synposys标准license绝对路径licenshe不影响生成影响后续如VCS仿真确认设置vip产品license绝对路径chmod x vip_usb_svt_N-2017.12.run # 赋予执行权限DESIGNWARE_HOME下的bin和vip目录中其中bin是自带的一些生成脚本vip是组件和文档$DESIGNWARE_HOME/bin/dw_vip_setup -info home可以列出vip可用的组件和示例1.3.生成example_case$DESIGNWARE_HOME/bin/dw_vip_setup -path proj_dir -example path/example -svlog-path proj_dir指定你的项目目录需要事先创建好且不要放在$DESIGNWARE_HOME下面。-example path/example指定你想使用的示例工程的路径。这个路径可以通过dw_vip_setup -info home命令列出来通常类似usb_svt/tb_usb_svt_uvm_basic_sys。-svlog告诉脚本生成 SystemVerilog 仿真所需的文件列表通常会生成一个filelist.f或类似的文件。1.4.运行example选项 1. 使用由 dw_vip_setup 生成的、位于当前工作目录中的运行脚本运行脚本是design_dir/examples/sverilog/usb_svt/tb_usb_svt_uvm_basic_sys/run_usb_svt_uvm_basic_sys格式 run_usb_svt_uvm_basic_sys test_case_name simulator_type示例run_usb_svt_uvm_basic_sys basic_ss_serial vcsvlogrun_usb_svt_uvm_basic_sys basic_additional_20_hsic vcsvlogrun_usb_svt_uvm_basic_sys all vcsvlog添加 -w 可以生成波形。输入 ./run_usb_svt_uvm_basic_sys -help 可查看更多命令行选项。选项 2. 使用提供的 Makefile。格式 gmake USE_SIMULATORsimulator_type test_case_name示例gmake USE_SIMULATORvcsvlog basic_ss_serialgmake USE_SIMULATORvcsvlog basic_additional_20_hsicgmake USE_SIMULATORvcsvlog all在命令行末尾添加 WAVES1 可以生成波形。输出文件仿真打印文件 ./output/test_case_name.transcript仿真运行日志 ./test_case_name.vcsvlog.svlog 当使用 vcsvlog 仿真器时VIP 跟踪文件 *_trace命名规则请参阅 VIP 用户手册波形文件 ./vcdplus.vpd, ./verilog.dump1.1.文档集文件名文档作用usb_svt_uvm_user_guide.pdfUVM 用户指南核心手册最常用的主文档详细说明如何在 UVM 环境中集成、配置和使用 USB SVT 组件Agent、Monitor、Driver、Sequencer 等包含寄存器模型、序列、回调、错误注入等完整内容。usb_router_svt_uvm_user_guide.pdfUSB Router SVT 的 UVM 用户指南针对 USB 拓扑中“Router”可能是 Hub 或内部路由模型这一特定 SVT 组件的 UVM 使用手册说明如何搭建多端口、多设备层级环境实现流量路由与转发验证。usb_svt_uvm_getting_started.pdfUVM 快速入门指南面向新用户的简明教程通过一个简单示例演示环境搭建、仿真运行、基本激励发送与响应检查帮助快速跑通第一个用例。usb_svt_hdl_user_guide.pdfHDL 接口层用户指南针对不想使用 UVM/OVM/VMM 的用户描述直接通过 HDL通常是 Verilog/SystemVerilog 模块端口驱动和监测 USB VIP 信号的方法适用于纯 RTL/模块级快速调试或非方法学环境。usb_svt_ovm_user_guide.pdfOVM 用户指南为仍在使用 OVMOpen Verification MethodologyUVM 的前身的环境提供 USB SVT 的集成与使用说明。usb_svt_vmm_user_guide.pdfVMM 用户指南为基于 VMMVerification Methodology ManualSynopsys 早期的验证方法学的环境提供 USB SVT 的使用指导。usb_svt_performance_metrics.pdf性能指标文档描述 USB VIP 在不同配置下的性能数据如最大/典型吞吐率、链路利用率、响应延迟、仿真吞吐量仿真效率等帮助验证团队评估验证环境的效率与瓶颈。usb_svt_faq.pdf常见问题解答收集了实际使用中的高频问题及解决方案包括环境配置、编译报错、仿真行为异常、协议理解等是排障的有力补充。usb_svt_release_notes.pdf发布说明版本更新日志包含新支持的 USB 协议特性如 USB4、USB 3.2 Gen2x2 等、已修复的缺陷、已知限制、工具版本兼容性要求等升级前必读。2.设置vipUSB_agent是VIP配置host提供的顶层。时间精度1ps/1ps。1.连接vip和dut将definepkgmacros添加到pkg在top层例化vif并连接2.例化vip将vip的agent例化到TB的env里 通过set配置vif到env里如果cfg里开启SS接口如果开启则set配置if到agent里的ss_if上3.设置seq4.设置test在test层可以set使用的seq到sequencer.main_phase的default_sequence中3.vip配置3.1.cfgphy_cfg物理层PHY 时序参数、接口信号延迟、电气特性模拟等link_cfg链路层LTSSM 状态机细粒度控制、训练序列参数、电源状态切换时序proto_cfg协议层各传输类型Bulk/Control/Interrupt/ISOC的具体参数、包间隔、超时时间等endpoint_cfg协议层端点配置设备模式下各端点的地址、类型、最大包大小等1.设置cfg的角色dev_cfg代表一个USB Device VIP 代理Agent的整体配置对象。一个agent代表一条USB 总线上的设备侧。local_device_cfg是dev_cfg内部的一个队列/数组local_device_cfg[ ]用于配置该代理下挂载的具体设备功能Device Functions。host_cfg.local_device_cfg_size 0明确表示该主机 VIP 不模拟任何设备功能。即该 agent 仅作为纯主机不挂载任何虚拟设备。因为主机通常只发起事务不需要设备端的配置。dev_cfg.local_host_cfg null明确表示该设备 VIP 不模拟任何主机功能即该 agent 仅作为纯设备不发起主机事务。2.top_layer必须严格匹配VIP 与 DUT你的 RTL之间的物理/数字接口边界而不是取决于 DUT 内部是否集成了 PHY。以下是选择标准你的 DUT 顶层接口类型应设置的top_layer说明DP (D) / DM (D-)差分信号线串行PHY因为你的 IP 内部集成了 PHYDUT 的顶层端口通常是usb_dp_pad/usb_dm_pad。此时 VIP 必须工作在PHY层负责处理 NRZI 编码、位填充、模拟电平转换等并直接连接到这两根线上。UTMI / ULPI数字并行接口8/16位含 TX/RX 数据、Valid、Ready 等LINK即使内部有 PHY但如果你在验证环境顶层把 PHY 旁路bypass了将 VIP 直接接到数字 UTMI 接口上那么应设为LINK。VIP 会生成 UTMI 时序信号。纯 TLM 事务级没有信号线通过 socket 发送包PROTOCOL仅用于纯软件仿真模型如 C 模型或不需要管脚时序的极早期架构验证。绝对不适用于带真实 PHY 或 UTMI 接口的 RTL 验证。host_vip和device_vip需要互相提前确定device和host的参数。usb模式固定/OTG速度接口类型usb支持能力设备地址接上总线的速度hub地址支持的最高速度端点数量设备地址设为0因为当一个 USB 设备刚连接到主机或复位后它必须使用默认地址 0来响应主机的控制传输。主机在成功获取设备描述符后会通过SET_ADDRESS标准请求为该设备分配一个唯一的非零地址1~127。connected_hub_device_address0代表直连hostenumeration_priority代表device的枚举顺序配置特定端点端点号方向端点类型轮询间隔通常用于中断端点突发传输大小用于高速同步/批量端点 根据设备速率动态决定端点 0的最大包长High-Speed 通常为 64 字节Full-Speed 为 8/16/32/64 可选Low-Speed 为 8 字节注意对端点0方向不会生效端点0是双向传输批量传输supports_ustreams 1b0用于 USB 3.0 的流式传输Streams。 USB 2.0必须设为0。此处ep_number都是1因为USB 端点是由端点号 方向二元组唯一确定的。在 USB 协议中端点号Endpoint Number只是地址的一部分。真正的端点是EP1_IN和EP1_OUT它们是两个完全独立的物理/逻辑管道拥有各自独立的 FIFO、Toggle 位、MaxPacketSize。4.宏定义4.1.传输SVT_USB_SS/HS/FS/LS_CONTROL_MAX_PACKET_SIZE控制传输包sizeSVT_USB_HS/FS_BULK_MAX_PACKET_SIZE批量传输包sizeSVT_USB_HS/FS_ISOC_MAX_PACKET_SIZE同步传输包sizeSVT_USB_HS/FS/LS_INTR_MAX_PACKET_SIZE中断传输包size