通过一个简单的testbench来初识SystemVerilog

硬件描述语言(Hardware Description Language, HDL)是用于描述硬件行为的语言,可以在寄存器传输级、行为级、逻辑门级等对数字电路系统进行描述。为了验证HDL中的硬件描述是否正确,我们需要搭建一个testbench,来验证RTL代码是否正确无误。因此诞生这种具有更多功能的验证语言SystemVerilog。

    SystemVerilog是Verilog的扩展,可以完全兼容Verilog。它具有面向对象的特性,同时还具有随机化、约束和功能覆盖率等特性。提供了DPI接口,可以把C/C++的函数导入到SystemVerilog代码中。

那么如何在验证中使用SystemVerilog呢?

    首先我们需要知道,IC设计的代码主要由多个Verilog(.v)文件和一个顶层模块组成,其中所有的子模块都被实例化以实现所需的行为和功能。因此,需要构建一个testbench环境来验证这些设计代码。顶层设计模块在testbench环境中被实例化,设计的输入/输出端口与适当的测试平台组件信号相连接。分析输出并与预期值进行比较,以查看设计行为是否正确。


    下面举个例子:

    一个需要验证的D触发器的设计,D触发器的功能是在每个时钟的上升沿,输出引脚Q锁存到输入引脚D的值,是一个上升沿触发的触发器。假设该触发器有一个低电平有效的复位和一个时钟。


我们使用SystemVerilog语言为该RTL代码构建一个testbench,将信号值直接驱动到D触发器的输入引脚clk、rst_n、d以观察输出结果。通过驱动适当激励以及之后的检查结果,我们就可以验证其功能行为的正确性。充分验证后,可以通过综合工具可以将该设计逻辑综合为门级网表。

tb_top是一个简单的testbench,其中实例化了d_ff0,并将其端口与testbench的信号连接。只需要在testbench中驱动信号,就可以传递到设计中,通过对比输出来判断是否符合预期值。

    通过以上例子,可以基本了解SystemVerilog的用途,即用于搭建复杂的testbench和产生激励来验证设计代码。例子比较简单,并没有涉及复杂验证平台的搭建、OOP特性、随机激励、功能覆盖等等功能。对于更加复杂的设计,一般需要使用这些特性。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 姓名:李亚洲 学号:20181213925 学院:广研院(通信工程学院) 引自: https://zhuanlan...
    兴趣使然阅读 3,244评论 0 2
  • 写在前面 个人博客首页 注:学习交流使用! 从初学者对数字设计的疑问?到什么是FPGA?什么是ASIC?在到布尔代...
    Reborn_Lee阅读 2,929评论 0 0
  • 一个计数器通常是由一组触发器构成,该组触发器按照预先给定的顺序改变其状态,如果所有触发器的状态改变是在同一时钟脉冲...
    锦穗阅读 15,078评论 0 6
  • 单选 1. 可以出现多个用例测试通过后某个测试点才能覆盖的情况。 A. 正确B. 错误 2. 下边哪些因素不会影响...
    黑心的一涛阅读 20,491评论 1 12
  • fpga规范 工作过的朋友肯定知道,公司里是很强调规范的,特别是对于大的设计(无论软件还是硬件),不按照规范走几乎...
    Michael_Johnson阅读 5,945评论 1 4

友情链接更多精彩内容