我被分配了验证一些基于verilog的RTL代码的任务。现在,使用verilog编写RTL测试平台似乎非常困难(对我来说)。所以我想尝试下列之一。 - 尝试为RTL提供PLI接口,从而调用'C函数进行测试 - 使用系统'C连接'C函数
PS:我已经有了一个广泛的'C代码,用于测试行为模型。我是硬件编程世界的新手。任何指针都将非常感激。
答案 0 :(得分:5)
如果您已经拥有用于测试行为模型的大量C代码,那么要做的就是添加一个PLI(或DPI)接口,允许您从verilog调用该c代码。
SystemC基本上是C ++,有很多类可以让你对HW进行建模。我不知道如何通过学习SystemC来获得您正在尝试的任务,因为您已经拥有可以测试HW的C模型。学习SystemC对于你想要做的事情可能有些过分。
FYI。如果你想学习当今行业中大量使用的东西,那么我建议你学习SystemVerilog。这些天SystemVerilog,基本上是verilog,内置了一堆高级软件语言功能;与“VMM”一起,“验证方法”(即一堆库)似乎在硬件验证领域风靡一时。
答案 1 :(得分:4)
如果不知道您的DUV(验证设备)或您拥有的C代码,问题就不容易回答。您需要激励和检查设计的方法,在这里您可能需要从/到事务级别(C数据结构)转换为/从引脚级别转换。 SystemVerilog接口或SystemC可能是一种方法。我还没有使用过DPI / PLI接口。
答案 2 :(得分:0)
听起来你应该得到像Mentor或Cadence的模拟器这样的工具,它将RTL和SystemC代码结合在一个系统中。当然不是免费的,但它们是实践中存在的解决方案。
您需要的结构上正确的解决方案是让C或SystemC调用RTL,而不是相反。这样做意味着将一些RTL模拟器与C程序或SystemC程序集成。这当然是可行的,但这是一项相当大的事业。
另外,我认为使用SystemVerilog很有意义。
答案 3 :(得分:0)
我已经将SystemC和System Verilog / VMM用于验证,答案是,这取决于。当我在一家小型预算试图让他们的第一个ASIC出门的初创公司时,SystemC是一个自然的选择,因为它运行在我们的低预算模拟器上,SystemVerilog没有。使用SystemC,您无需使用PLI或DPI。实际上,您将SystemC模型实例化为测试平台中的一个组件,这很有趣。
但是,SystemC是一个C ++库,它没有非常直观的语法。在尝试学习SystemC库之前,你应该有一个不错的C ++背景。除了David Black的“来自Ground Up的SystemC”之外,这本书的内容大多数都很糟糕。
开始说,从我所看到的,SystemC自然是一种高级建模语言,而不是验证语言,没有任何预算购买真实模拟器的人正在使用SystemC进行验证。从一般的职业发展角度来看,如果您可以使用System Verilog,我会使用它。此外,您始终可以使用DPI连接到C模型进行输出检查,这仍然使用SV / VMM编写的生成器,监视器和记分板。