使用Systemverilog编写测试平台
一
设计大小和复杂性的显著增加对传统的验证方法而言是个重大的挑战。不断增加的模块间交互使得传统的功能验证方法效率低下,并且需要大量的验证时间。
在tape-out之前找到并fix所有的bug是验证的首要目标。 修复bug的成本随着时间的推移呈指数级增长。
01
SystemVerilog
1、通过使用复杂的同步和时序机制,可以仿真并发进程。
2、支持面向对象编程,提供必要的抽象级别来开发可重用的验证环境。
3、生成随机约束激励和自我检查,这有助于增加验证效率
并发性允许产生多个并行进程。 一个典型的例子是激励设计的同时检查结果。 这允许测试平台可以通过修改激励实时地对结果做出反应。
并发是通过fork-join结构实现的,该结构会产生多个并行进程。
对于进程间通信, mailboxes可以将消息发送到任何其他进程。
02
受约束的随机激励
随机激励确保了corner-case得到了充分的验证。 这是确保验证时间和精力花在最有效方面的方式。
SystemVerilog提供了一种非常强大的随机激励生成机制。 它基于对象的随机化,即通过调用预定义的randomize方法。
约束进一步增强了随机化约束,定义其中随机属性的边界,还可以添加weights,以便更频繁地产生某些激励。
03
Clocking模块
Clocking模块封装了同步时序的细节。 输入输出信号仅在时钟边沿被驱动和采样。 Clocking模块清晰地分离多时钟设计中的时钟域。
由于芯片的复杂性,系统验证的完备性是一个关键问题。 功能覆盖率补充了传统的代码覆盖率。 SystemVerilog提供内置功能覆盖率分析功能,满足了这一需求。
END