1

我的任务是验证一些基于 Verilog 的 RTL 代码。现在,使用verilog 对RTL 测试平台进行编码似乎非常困难(对我而言)。所以我想尝试以下方法之一。- 尝试为 RTL 提供 PLI 接口,从而调用'C 函数进行测试 - 使用系统'C 连接'C 函数

PS:我已经有一个广泛的'C 代码用于测试行为模型。我是硬件编程领域的新手。任何指针将不胜感激。

4

4 回答 4

5

如果您已经拥有用于测试行为模型的大量 C 代码,那么要做的就是添加一个 PLI(或 DPI)接口,允许您从 verilog 调用该 C 代码。

SystemC 基本上是 C++,有很多类可以让你对硬件进行建模。我看不出你会如何从学习 SystemC 来完成你正在尝试的任务中受益,因为你已经有一个可用的 C 模型,你可以根据它来测试硬件。学习 SystemC 可能对于您正在尝试做的事情来说太过分了。

供参考。如果您想学习当今行业中大量使用的东西,那么我建议您学习 SystemVerilog。现在的 SystemVerilog,基本上是 Verilog,内置了一堆高​​级软件语言功能;连同“VMM”,一种“验证方法”(即一堆库),似乎在硬件验证领域风靡一时。

于 2009-03-17T08:38:11.987 回答
4

如果不知道您的 DUV(正在验证的设备)或您拥有的 C 代码,这个问题就不容易回答。您需要刺激和检查您的设计的方法,在这里您可能需要从/到事务级别(C 数据结构)到/从引脚级别转换。SystemVerilog 接口或 SystemC 可能是一种方法。我还没有使用过 DPI/PLI 接口。

要拥有“最先进的”测试平台,您应该考虑使用其中一种测试平台方法,即VMMOVM。他们还将为您提供如何开始的文档。

于 2009-03-17T09:27:45.207 回答
0

听起来您应该获得像 Mentor 或 Cadence 的模拟器这样的工具,将 RTL 和 SystemC 代码结合在一个系统下。当然不是免费的,但它们是实践中存在的解决方案。

您需要的结构正确的解决方案是让 C 或 SystemC 调用 RTL,而不是相反。这样做意味着将一些 RTL 模拟器与您的 C 程序或 SystemC 程序集成。这当然是可行的,但这是一项相当大的任务。

另外,我认为使用 SystemVerilog 很有意义。

于 2009-08-14T08:03:05.710 回答
0

我已经使用 SystemC 和 System Verilog/VMM 进行验证,答案是,这取决于。当我在一家预算有限的初创公司试图推出他们的第一个 ASIC 时,SystemC 是一个自然的选择,因为它运行在我们的低预算模拟器上,而 SystemVerilog 没有。使用 SystemC,您无需使用 PLI 或 DPI。您实际上将 SystemC 模型实例化为测试平台中的一个组件,这很有趣。

然而,SystemC 是一个没有非常直观的语法的 C++ 库。在尝试学习 SystemC 库之前,您应该具有良好的 C++ 背景。除了 David Black 的“SystemC from the Ground Up”之外,可用的书籍大多很烂。

那就是说,据我所见,SystemC自然是一种高级建模语言,而不是一种验证语言,没有任何预算购买真正的模拟器的人不再使用SystemC进行验证。从一般职业发展的角度来看,如果您可以使用 System Verilog,我会使用它。此外,您始终可以使用 DPI 连接到您的 C 模型以进行输出检查,该模型仍然使用以 SV/VMM 编写的生成器、监视器和记分板。

于 2009-10-24T04:30:11.010 回答