首页 > 其他分享 >SystemVerilog -- 1.1 Introduction ~ tb

SystemVerilog -- 1.1 Introduction ~ tb

时间:2024-04-13 13:35:12浏览次数:18  
标签:驱动程序 -- DUT Introduction design 测试 驱动 设计 tb

我们需要一个称为testbench的环境对设计运行任何类型的仿真。

What is the purpose of a testbench ?

Testbench允许我们通过仿真来验证设计的功能。它是一个容器,其中放置设计并使用不同的输入激励进行驱动。

  1. 生成不同类型的输入刺激
  2. 使用生成的激励驱动设计输入
  3. 允许设计处理输入并提供输出
  4. 以预期行为检查输出以查找功能缺陷
  5. 如果发现功能性错误,则更改设计以修复该错误
  6. 执行上述步骤,直到不再出现功能缺陷

Components of a testbench

introduction中现实的示例不是模块的、可扩展的、灵活的、甚至不是可重用的,因为 DUT 的连接方式以及信号的驱动方式。让我们看一个简单的测试平台,并尝试了解促进与 DUT 之间传输数据的各种组件。

Component Description
Generator 产生不同的输入激励以驱动 DUT
Interface 包含可驱动或监控的设计信号
Driver 驱动生成的激励到设计中
Monitor 监控设计输入输出端口以捕获设计活动
Scoreboard 检查设计输出是否具有预期行为
Environment 包含上述所有验证组件
Test 包含可以使用不同配置进行调整的环境

What is DUT ?

DUT 代表 Design Under Test,是用 Verilog 或 VHDL 编写的硬件设计。DUT 是一个术语,通常用于芯片制造后的硅后验证。在预验证中,它也被称为 Design Under Verification,简称 DUV。

// All verification components are placed in this top testbench module
module tb_top;
    // Declare variables that need to be connected to the design instance
    // These variables are assigned some values that in turn gets transferred to the design 
    // as inputs because they are connected with the ports in the design
    reg  clk;
    wire en;
    wire wr;
    wire data;

    // Instantiate the design module and connect the varibles declared above with the ports         
    // in the dsign
    design myDsn (
                  .clk(clk),
                  .en(en),
                  .wr(wr),
                  ...
                  .data(data)
                 );
    // Develop rest of the testbench and write stimulus that can be driven to the design
endmodule

WHat is an interface ?

如果设计包含数百个端口信号,则连接、维护和重用这些信号将很麻烦。相反,我们可以将所有设计输入输出端口放入一个容器中,该容器将成为 DUT 的接口。然后,可以通过此接口使用值驱动设计。

Waht is a driver ?

驱动程序是通过接口中定义的任务对 DUT 进行 pin-wiggling 的验证组件。当驱动器必须为设计驱动一些输入值时,它只需要在接口中调用预定义的值,而实际上不知道这些信号之间的时序关系。时序信息在接口提供的范围内定义。这是使测试平台更加灵活和可扩展所需的抽象级别。将来,如果接口发生变化,那么新的驱动程序可以调用相同的任务并以不同的方式驱动信号。task

How does the driver know what to drive ?

generator 是一个验证组件,可以创建有效的数据事务并将其发送给驱动程序。然后,驱动程序可以简单地通过接口驱动 generator 提供给他的数据。数据事务实现为类对象,如上图中的蓝色方块所示。驱动程序的工作是获取数据对象并将其转换为 DUT 可以理解的内容。

Why is a monitor required ?

到目前为止,人们一直在讨论如何将数据驱动到被测设备。但这只是一半,因为我们的主要目标是验证设计。DUT 处理输入数据并将结果发送到输出引脚。监视器拾取处理后的数据,将其转换为数据对象并将其发送给scoreboard。

Waht is the purpose of a scoreboard ?

scoreboard 可以具有与 DUT 行为相同的参考模型。此模型反映了 DUT 的预期行为。发送到 DUT 的输入也会发送到此参考模型。因此,如果 DUT 存在功能问题,则 DUT 的输出将与参考模型的输出不匹配。因此,比较设计和参考模型的输出将告诉我们设计中是否存在功能缺陷。这通常是在 scoreboard 上完成的。

Why is an environment required ?

它使验证更加灵活和可扩展,因为可以将更多组件插入到同一环境中,以便将来的项目使用。

What does the test do ?

测试将实例化环境的对象,并按照测试想要的方式对其进行配置。请记住,我们很可能会有数千个测试,并且对每个测试的环境进行直接更改是不可能的。相反,我们希望环境中的某些 knobs/parameters 可以针对每个测试进行调整。这样,测试将刺激的产生更好的控制,并且会更有效。

What are abstraction levels ?

在前言中,您看到我们使用单个信号切换了设计。

#5  resetn <= 0;
#20 resetn <= 1;

相反,如果您将这两个信号放在一个任务中并称其为“apply_reset”任务,则您刚刚创建了一个可以重复使用的组件,并隐藏了断言的信号和时间间隔的详细信息。这是我们在开发测试平台时希望拥有的一个功能-隐藏细节-这样测试编写者就不需要为如何使用而烦恼,而是专注于何时以及为什么应该使用这些任务。测试编写者最终使用任务、配置环境并编写代码来测试设计。

module tb_top;
    bit resetn;

    task apply_reset ();
        #5  resetn <= 0;
        #20 resetn <= 1;
    endtask

    initial begin
        apply_reset();
    end

endmodule

标签:驱动程序,--,DUT,Introduction,design,测试,驱动,设计,tb
From: https://www.cnblogs.com/sys-123456/p/18132690

相关文章

  • 实验一(3)
    CryptoAPI简介WindowsCryptoAPI是Microsoft公司提出的安全加密应用服务框架,也是PKI推荐使用的加密API。它提供了在Win32环境下使用认证、编码、加密和签名等安全服务时的标准加密接口,用于增强应用程序的安全性与可控性。应用开发者可以在不了解复杂的加密机制和加密算法的......
  • P1908 逆序对
    原题链接题解本质:求一个数前面有几个数大于它,我们把序列分成几段,然后对每段分别进行排序,然后找出这个数在前面已经排好序中的序列里有几个大于它code#include<bits/stdc++.h>usingnamespacestd;#definelllonglonglla[500005],b[500005],c[500005];//a-original......
  • 容器化部署GVM扫漏系统
    官网https://greenbone.github.io/docs/latest/index.htmldocker版本快速安装docker目前的docker已经自带了dockercompose工具,所以无需单独安装$dockerversionClient:DockerEngine-CommunityVersion:26.0.0APIversion:1.45Goversion:......
  • 原型设计工具比较及实现
    以下是对墨刀、Axure和Mockplus的对比分析:墨刀适用领域:快速原型设计:墨刀提供了简单易用的界面,适合快速原型设计和迭代。团队协作:墨刀支持多人实时协作,团队成员可以即时查看和编辑原型。云端存储:墨刀的云端存储功能使得原型可以轻松地分享和访问。优点:易于上手:用户界面简......
  • 最全能的AI换脸软件,FaceFusion下载介绍(可直播)
    FaceFusion是一款多功能的AI换脸软件,它不仅能图片、视频换脸,还可以直播换脸,换脸效果真实、自然与大多数换脸软件不同的是,FaceFusion不仅支持N卡处理程序(Azure),还额外提供了CPU处理模式(渣机必备)  FaceFusion最新中文版:百度网盘:https://pan.baidu.com/s/1Xwif-_sMpmdbavVT2yi......
  • 52 Things: Number 40: What is normally considered the difference between SPA and
    52Things:Number40:WhatisnormallyconsideredthedifferencebetweenSPAandDPA?52件事:第40件:通常认为SPA和DPA之间的区别是什么? Thisisthelatestinaseriesofblogpoststoaddressthelistof '52ThingsEveryPhDStudentShouldKnowToDoCryptogr......
  • 基于 Scriptable 从零开始美化iOS桌面(一)
    今天我为大家带来新的作品,iOS17桌面组件神器(Scriptable)原创脚本,精美作品分享!喜欢的话就点关注吧!更多脚本正在路上...*script:ONE-Progress.js*version:1.0.0*author:Nicolas-kings*date:2021-03-06*github:https://github.com/Nico......
  • Adobe Illustrator 2024 v28.4.1 (macOS, Windows) - 矢量绘图
    AdobeIllustrator2024v28.4.1(macOS,Windows)-矢量绘图Acrobat、AfterEffects、Animate、Audition、Bridge、CharacterAnimator、Dimension、Dreamweaver、Illustrator、InCopy、InDesign、LightroomClassic、MediaEncoder、Photoshop、PremierePro、AdobeXD请访......
  • RabbitMQ 入门:我的思维导图总结
    刚看完尚硅谷的RabbitMQ入门教程,感觉自己对知识点的理解还有些混乱,看完相关面试题后整理了一份简单的思维导图,仅供参考,如有错误,欢迎指正!视频教程:尚硅谷RabbitMQ教程丨快速掌握MQ消息中间件rabbitmq_哔哩哔哩_bilibili1.概览2.具体细节2.1基本概念常见面试题:什......
  • Adobe Lightroom Classic v13.2 (macOS, Windows) - 桌面照片编辑
    AdobeLightroomClassicv13.2(macOS,Windows)-桌面照片编辑Acrobat、AfterEffects、Animate、Audition、Bridge、CharacterAnimator、Dimension、Dreamweaver、Illustrator、InCopy、InDesign、LightroomClassic、MediaEncoder、Photoshop、PremierePro、AdobeXD......