今日头条
没有人首先确保测试用例是有效的并且将充分利用如此宝贵的资源,就将验证工作放到模拟器上。在上一篇博客中,我们展示了如何从便携式刺激模型出发,并使用测试台综合技术将该测试从事务通用验证方法 (UVM) 环境迁移到生成在设计的嵌入式处理器上运行的代码的环境中。这些处理器可以实例化到模拟器中——等等什么?这是您听到针在唱片上被刮擦的地方。
它比这复杂得多,但这就是创建便携式刺激 (PSS) 的原因。将为模拟器开发的测试平台迁移到模拟器上太困难了。该标准没有说明应该如何做。这留给 PSS 工具开发人员作为练习。PSS 定义了一种可以定义场景的语言,并允许测试台综合技术针对多个平台和抽象。这些目标有一些特定的要求。让我们一步一步来。
仿真器的大小取决于它们可以处理的门当量数。这类似于说 FPGA 有这么多门容量。从获取寄存器传输级别 (RTL) 代码到使其适用于仿真器或 FPGA,有一个转换过程。对于某些类型的设计,每个供应商可能或多或少有效率。增加仿真器的大小既慢又昂贵,因此您必须小心使用这些仿真资源的目的。如果您的设计有四个处理器,您是否真的要将它们映射到仿真器中,即使您有可用的 RTL 代码?
这就是混合仿真概念的用武之地。您需要将设计划分为将使用仿真器结构的部分以及将在行为模型中运行的部分。处理器通常是这个目标,并且会使用与模拟器相同的行为模型。混合仿真是您的仿真器提供商将拥有的一项功能,他们应该拥有适合使系统的该部分高效的工具。然而,在某些情况下,这种情况可能会发生逆转。如果您正在开发自己的 RISC-V 处理器并且想要验证它怎么办?现在,您可能想要制作多个环境之一的虚拟模型,并让您的处理器的 RTL 代码在这些环境中运行。
大多数系统不是独立的,需要某种形式的外部刺激,并且必须检查结果。仿真器和主机之间的通信可以通过 Accellera 的 SCE-MI 标准来实现,该标准定义了外部软件或测试平台与仿真器之间的通信协议。并非所有供应商都使用此标准,有些供应商有它的变体。他们都在同一个概念上工作。首先,您采用验证知识产权 (VIP) 模型并将其分成两部分。连接到模拟器的一侧将事务转换为逻辑信号转换。另一方处理更高级别的协议。介于两者之间的是一种通信协议,可优化流量在两部分之间流动的时间和方式。再次,
错误的通信可能会影响您的仿真器性能。考虑一个以 10MHz 运行的仿真器(基于 FPGA 的仿真器的典型速度,没有过多的跟踪或调试启用)连接到一个行为模型。每次这两个模型必须交换数据时,模拟器都必须停止,并且会遇到物理通信系统的延迟,可能是 PCIe,加上软件层,然后模拟器或测试平台必须运行。如果每个周期都发生这种情况,你的模拟器会爬,这会花费你很多钱。这就是为什么没有人愿意使用 UVM 运行模拟器的原因——每次需要数据时,它都必须考虑下一个向量。在本例中,这意味着每个处理器总线周期至少一次。模拟器效率越高,速度下降的成本就越高。
仿真编译需要很长时间,在绝对必要之前应避免重新编译。在验证过程的后期,重新编译设计变得不那么频繁,因为大多数错误都被发现了。但是,测试台经常更改,几乎每次运行时都会更改。如果测试台是用 Verilog 硬件描述语言编写的,这将触发重新编译,从而产生大量开销。使用 Test Suite Synthesis 进行仿真,该工具的输出将是在处理器上运行的 C 代码和用于 I/O 的事务。这些测试存储在设计内存中,并在运行时作为目标文件加载。更改不会导致重新编译,只是快速重新加载内存。这可以极大地改变编译动态。
便携式刺激也可以产生真正的影响,因为我们提前为跑步预先生成了所有刺激。虽然可能无法将所有刺激存储在模拟器中,但可以利用一些内存,以便可以批量传输大量刺激,仅在需要重新填充缓冲区时停止模拟器。
同时,可以进行类似的修改,以便结果检查的数据也被缓冲,直到它需要被刷新,或者模拟器已经停止以获得更多刺激。此时,可以下载响应数据并检查是否有任何故障。如果已经存在,则可以终止仿真器运行。可能已经有足够的信息可以开始调试了。如果不是,则故障时间是已知的,因此模拟器中的调试运行只需执行到第一次故障时。
Breker 与一些仿真提供商合作,将这一解决方案变为现实。反过来,他们一直在努力完善混合仿真,现在他们可以在其中添加 Breker 测试综合解决方案。我们将继续共同努力改进组合解决方案,并使 Accellera 标准的原始概念成为现实。我们现在可以采用单个模型并将其定位到多个执行平台。这消除了繁琐的任务并提高了模拟器的使用效率。与往常一样,如有问题或意见,请随时与我联系。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !