仿真调试
在验证过程中,仿真的使用比传统的FPGA原型要早得多。例如模拟加速度一旦SoC的主要块可用,就会被考虑。因此,在运行仿真而不是回滚到纯HDL仿真时,需要高级调试功能来跟踪问题并找到bug。解决这些要求,Aldec的HES-DVM™包含一套完整的工具和功能,如:
- 调试探测采用HVD技术,确保100%的信号可视性
- 触发器和断点控制调试过程并减少要分析的调试数据量
- 记忆的可见性与模拟设计内存块的读写访问接口
- 硬件调试器工具–所有调试功能的GUI前端
- HES调试API–允许从C/C++代码控制所有调试功能的独特功能
调试探测
调试探头功能是为了在运行仿真时捕获设计信号的值,并保存波形数据库以备仿真后调试。
HES-DVM支持两种调试探测,即静态探测和动态探测,可以在速度和可见性之间进行必要的权衡。在这两种情况下,HES-DVM确保自动RTL源代码插装和真正的RTL视图,这意味着所有信号名称、数据类型和层次结构路径都会像HDL模拟器一样保留和显示。调试探针使用其中一个设计时钟进行采样,用户可以在运行时更改要使用的时钟。HES-DVM支持两种波形格式,即ASDB(可加载在Aldec的Riviera PRO或Active HDL中)和FSDB(可加载在Synopsys Verdi工具中)。VCD波形可通过ASDB转换获得。使用快速PCIe主机接口从仿真器板获取调试数据。
基本特征:
- 仿真设计的真实RTL视图
- 自动RTL代码检测
- 兼容各种调试工具(ASDB、FSDB、VCD波形)
- 运行时重新配置
- 基于PCIe的主机连接,实现快速调试数据下发
静态探测
静态探针特性作为片上逻辑分析仪实现,因此它为此类工具提供了特性。Aldec独特的高级逻辑分析仪(ALA)实现支持无缝多FPGA操作,每个FPGA中都有灵活的本地采样缓冲区,通过PCIe实现高吞吐量主机接口。
在运行合成之前,必须在设计设置流程中选择静态探针,因此使用静态术语。ALA提供了前所未有的容量高达256 Kbits的调试探头,可以分散在所有FPGA分区中。静态探测组织在数据和触发器组中,可以在模拟运行时选择和配置这些组。
数据组 | 触发组 | |
---|---|---|
组数 | 16 | 32 |
每组探针的数量 | 16kbit | 256位 |
探头总数 | 256kbit | 8kbit |
此外,用户可以通过探针限定表达式或指定捕获样本时的时间范围来调整调试过程。在任何情况下,ALA都保证不会丢失任何样本,因为调试缓冲区完全加载时,仿真时钟会自动暂停。
基本特征:
- 快速调试–在FPGA、片上采样缓冲区中进行探测
- 多FPGA支持
- 灵活的探头–可选择的数据组,前所未有的容量
- 运行时可配置采样时钟
- 强大的过滤器与样本资格表达
- 连续捕捉模式,没有样品下降
- 在每个分区中与设计逻辑自动集成
动态探针
Dynamic Probe功能可实现100%的可见性,它基于独特的HVD技术(基于硬件的可见性调试)。HVD算法用于自动分析和找出基本探头,这些探头是应从硬件捕获的设计信号的最小子集,以提供完整的可见性。
动态探测的最大优点是,用户不需要预先知道诊断给定问题需要哪些信号。相反,可以选择任何设计信号在仿真运行时进行调试。HVD扩展保留的基础信号,确保任何设计节点的可见性。
基本特征
- 用于智能探测和捕获最小数据集的HVD技术
- 自动映射到RTL名称
- 动态和交互式探针选择
- 按需启用/禁用进程
触发器和断点
调试复杂SoC时,需要检查不同的条件,以决定是否捕获调试数据。获取完整的设计数据集(100%的信号)是不现实的,因为对于数以百万计的信号,调试数据量对于任何类型的仿真器来说都是无法承受的。触发器和断点为调试过程带来了智能性和可控性。触发器与LogicAnalyzer中的触发器相同,用于释放收集的静态探针样本,而断点停止模拟时钟并将控制权返回给用户。
Aldec的hs - dvm支持基于静态探针和基于动态探针的软断点创建复杂的触发和断点条件。条件要么是布尔表达式,要么是带有一组完整关系操作符的序列表达式。所有触发器和断点条件都可以在运行时启用、禁用和重新配置。
基本特征:
- 大量触发器端口(32个)
- 多FPGA支持
- 布尔表达式和序列表达式
- 可编程计数器
- 可配置的触发位置
- 以仿真速度检查触发器和断点
记忆的可见性
内存块存在于任何类型的数字电路设计中。在SOC中,它们不仅被广泛用作本地数据存储,而且常常被用作微处理器子系统的关键元件。因此,内存内容的可见性对于硬件和嵌入式软件的验证都至关重要。内存查看器正在成为硬件和软件开发人员手中的首要工具。
Aldec的hs - dvm为模型提供了一个后门接口,用于调试,允许在运行仿真时读取和写入芯片上的内存数据。hs - dvm提供了各种标准内存模型的到达库,根据大小可以映射到FPGA ram块或外部板载DDR3资源。在模拟过程中,给定的内存是通过其派生自RTL源代码的层次名称来选择的。物理地址和数据组织保存在用户界面中,尽管实际的FPGA实现。
基本特征:
- 当运行设计仿真设置时,hesdvm中可用的内存流
- 内存模型具有用于调试的后门接口
- 在仿真运行时提供读写访问
- 仿真中的内存使用原始RTL层次结构路径进行标识
- 使用物理寻址和数据组织来访问内存内容
- 使用数据文件进行单单元格和块访问
- 便于SoC bringup中的程序和数据存储器初始化
HW调试器
HW调试器工具为所有仿真调试功能提供了一个GUI。它使用TCP/IP套接字连接到仿真目标,因此可以在仿真主机工作站或甚至从桌面计算机远程运行它。HW调试器可在Linux和MS Windows操作系统上使用,并允许跨平台操作。
基本特征:
- 所有调试功能(探测、触发器、断点、采样时钟)的GUI界面
- 仿真时钟控制(stop, run, run for/until)
- 具有文件读/写和丰富显示选项(基数、值、字符串)的内存查看器
- RTL设计结构和信号视图
- 选定的动态探测和当前值的列表
- 运行时选项重新配置
- 用于自动化的脚本命令
HES调试API
的HesDebugApi是一个在C中具有接口的库,它可以用于任何能够连接C或C++对象的应用程序。该库支持HES-DVM的所有调试功能,因此它是HW调试器GUI的替代接口。使用HES调试API是开发功能强大的交互式测试台的一种方便方法,可以初始化片上内存、探测内部寄存器甚至动态配置断点。有了这个独特的特性,验证工程师不再需要将仿真框中的设计视为黑盒。
基本特征:
- C-API容易与任何测试平台或应用程序集成(C,C++,SystemC,SV DPI-C,TCL,Python)
- 启用用于模拟的白盒测试方法
- 在仿真中直接访问调试探测和内存
- 快速接口要求苛刻的应用