0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

学会这些System Verilog方法,芯片验证入门没问题

jf_5P3RKFtu 来源:于博士Jacky 作者:于博士Jacky 2022-12-09 15:08 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1. 验证的主流语言为什么是System Verilog语言?

9922df96-7744-11ed-8abf-dac502259ad0.jpg

一个掌握Verilog语言的工程师初次看SystemVerilog都会有这样的感受,这就是Verilog啊,很容易啊,So easy啊。没错,确实是这样,System Verilog的产生就是因为芯片设计规模不断增长,功能日趋复杂,单纯的用Verilog和VHDL等硬件语言已经无法满足验证的需求,结合C,C++等软件语言,又显得难度太大,不容易掌握,因此产生了SystemVerilog,当然也产生了其他验证语言,比如Vera和e语言,但因为SystemVerilog结合了来自 Verilog、VHDL、C++的概念,还有验证平台语言(OpenVera和e语言)和断言语言(OVA和PSL),使得SystemVerilog在验证界坐稳了第一的宝座。它将硬件描述语言(HDL)与现代的高层级验证语言(HVL)结合了起来。使其对于进行当今高度复杂的设计验证的验证工程师具有相当大的吸引力。这些都使得SystemVerilog在一个更高的抽象层次上提高了设计建模的能力。随着不断地发展,System Verilog拥有芯片设计及验证工程师所需的全部结构,它集成了面向对象编程、动态线程和线程间通信等特性,作为一种工业标准语言,SV全面综合了RTL设计、测试平台、断言和覆盖率,为系统级的设计及验证提供强大的支持作用。另一方面,验证方法学(VMM、OVM、AVM和UVM等)的推动也功不可没,System Verilog能够和芯片验证方法学结合在一起,即作为实现方法学的一种语言工具。使用验证方法学可以大大增强模块复用性、提高芯片开发效率,缩短开发周期。

2.出镜率较高的数据类型

逻辑(logic)类型。

四状态类型:interger,reg,logic,time,wire,tri

双状态数据类型(更好的性能,更低的内存消耗)。

二状态类型:bit,int,byte,shortint,longint

队列,动态和关联数组(自带搜索和分类功能)

队列和数组的操作,常常用在reference model建模或者checker的数据比对过程中。队列的操作包括常用函数:insert,delete,push_back, pop_back, push_front, push_back等;数组的操作(min最小值,max最大值,unique排除重复,find索引相关,sum求和,sort升序,rsort降序,reverse倒序,shuffle乱序等。

关联数组(对于非常大的寻址空间存储建模,我们只需要访问边界值,以及中间个别一些空间进行验证,关联数组提供保存稀疏矩阵的元素)。

993dbe1a-7744-11ed-8abf-dac502259ad0.jpg

枚举类型

类似于宏定义,或者使用参数。

typedef enum{WAIT, DECODE, READY}fsmstate_e;

fsmstate_e pstate,nstate;

995dfaf4-7744-11ed-8abf-dac502259ad0.jpg

结构体(支持抽象数据结构)用struct建语句创建数据结构。

typedef struct{bit[7:0] r, g, b} pixel_s;

pixel_s my_pixel;

997ba46e-7744-11ed-8abf-dac502259ad0.jpg

fork...join块可以指定一条或多条语句,每一条语句都应该作为并发进程执行。

选项 描述
join 父进程会阻塞直到这个分支产生的所有进程结束。
join_any 父进程会阻塞直到这个分支产生的任意一个进程结束。
join_none 父进程会继续与这个分支产生的所有进程并发执行。在父线程执行一条阻塞语句之前,产生的进程不会启动执行。

9989ea2e-7744-11ed-8abf-dac502259ad0.png

Function和Task

function执行不消耗时间,带时间的操作如#100ns,@,wait等都不能出现在function。所以一般而言,function是不能调用task的,但是在fork……join_none中例外。函数可以有返回值。

消耗时间的操作用task,比如driver里面对信号的驱动过程,一般来讲是在task中完成,但是具体的算法是由function完成的,所以,task中调用function。task没有返回值。

3. System Verilog的Interface

99a04d46-7744-11ed-8abf-dac502259ad0.jpg

这是一个比较新的概念,Interface封装了连接性:接口可以作为单个项目通过端口传递,从而用单个名称替换一组名称。这减少了建模端口连接所需的代码量,并提高了端口连接的可维护性和可读性。封装功能,与通过接口连接的模块隔离。因此,通信协议的抽象级别和粒度可以完全独立于模块进行细化。

可以包含参数、常量、变量、函数和任务、流程和连续分配,这对于系统级建模和测试应用程序都很有用。

可以帮助构建功能覆盖记录和报告、协议检查和断言等应用程序。

可以用于无端口访问:接口可以作为模块中的静态数据对象直接实例化。因此,可以从设计中的不同点调用用于访问接口内部状态信息的方法来共享信息。

灵活性:接口可以像模块一样参数化。此外,可以使用未指定的接口实例化(称为泛型接口)创建模块头。这个接口可以在稍后实例化模块时指定。

4. System Verilog的面向对象(OOP)

面向对象使用户能够创建复杂的数据类型,并且将它们跟使用这些数据类型的程序紧密的结合在一起。用户可以在更加抽象的平台上建立测试模型,通过调用函数改变信号,而不是直接改变电平信号。

99c7a148-7744-11ed-8abf-dac502259ad0.jpg

从结构体开始:程序设计=数据结构+算法实现

99e90374-7744-11ed-8abf-dac502259ad0.jpg

定义一个类

类将结构体和它相应的函数集合在一起,成为一种新的数据组织形式。在这种新的数据组织形式中,有两种成分,一种是来自结构体的数据变量,在类中被称为成员变量;另外一种来自与结构体相对应的函数,被称为一个类的接口。

9a0a74c8-7744-11ed-8abf-dac502259ad0.jpg

继承一个类

分析所要解决的问题,并找出其中的共性,用这些共性构建一个基类(或者父类);在此基础上,将问题分类,不同的分类具有各自的共性,使用这些分类的共性构建一个派生类(或者子类)。

9a26d172-7744-11ed-8abf-dac502259ad0.jpg

多态:多个程序使用一个共同的名字的现象。

9a4be2e6-7744-11ed-8abf-dac502259ad0.jpg

静态变量和方法

一个类的所有实例都共享变量的一个版本,也就是说所有实例都共享同一个copy,该变量对所有实例都是可见并相同的。使用关键字static产生。

9a6b99e2-7744-11ed-8abf-dac502259ad0.jpg

类的参数化定义

9a84014e-7744-11ed-8abf-dac502259ad0.jpg

9a95d612-7744-11ed-8abf-dac502259ad0.jpg

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Verilog
    +关注

    关注

    30

    文章

    1370

    浏览量

    114140
  • C++
    C++
    +关注

    关注

    22

    文章

    2122

    浏览量

    76714
  • 芯片验证
    +关注

    关注

    5

    文章

    40

    浏览量

    47878

原文标题:学会这些System Verilog方法,芯片验证入门没问题

文章出处:【微信号:于博士Jacky,微信公众号:于博士Jacky】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何解决将e203的rtl导入vivado后报语法错误的问题

    写的rtl, 解决方法主要有两个 一、 shift全选这些报错文件,右键 点击set file type 将这些文件的类型改为system
    发表于 10-24 09:49

    为什么我选择VHDL入门

    在群里交流提问的时候,大家总是惊讶并疑惑:为什么我要选择 VHDL入门?因为好像 99% 搞 FPGA 开发的人都在用 Verilog。 我的选择,是通过网上搜索的讨论而做出的,为了留存,我这里水一
    的头像 发表于 06-25 11:18 891次阅读
    为什么我选择VHDL<b class='flag-5'>入门</b>

    Veloce Primo补全完整的SoC验证环境

    0 1   简介   SoC 设计团队的任务是在创建昂贵的生产掩膜之前完成完整的系统级验证。这意味着彻底审核所有硬件模块、这些模块之间的所有交互以及为最终应用创建的所有专用软件,而且所有这些任务都要
    的头像 发表于 06-12 14:39 1173次阅读
    Veloce Primo补全完整的SoC<b class='flag-5'>验证</b>环境

    超大规模芯片验证:基于AMD VP1902的S8-100原型验证系统实测性能翻倍

    引言随着AI、HPC及超大规模芯片设计需求呈指数级增长原型验证平台已成为芯片设计流程中验证复杂架构、缩短迭代周期的核心工具。然而,传统原型验证
    的头像 发表于 06-06 13:13 1094次阅读
    超大规模<b class='flag-5'>芯片</b><b class='flag-5'>验证</b>:基于AMD VP1902的S8-100原型<b class='flag-5'>验证</b>系统实测性能翻倍

    硬件辅助验证(HAV) 对软件验证的价值

    生态系统和定制指令集开发的唯一途径。 当下,芯片企业正在设计 RISC-V 人工智能 (AI) 与机器学习 (ML) 定制加速器,以实现特定工作负载的加速处理,这些企业创建的架构由软件驱动,而不使用遗留数据或任何通用数据。而是,针对软件工作负载应用在架构层面进行量身定制
    的头像 发表于 05-13 18:21 1643次阅读

    System Level EOS Testing Method”可以翻译为: “系统级电性过应力测试方法

    System Level EOS Testing Method”可以翻译为: “系统级电性过应力测试方法
    的头像 发表于 05-05 15:55 684次阅读
    “<b class='flag-5'>System</b> Level EOS Testing Method”可以翻译为: “系统级电性过应力测试<b class='flag-5'>方法</b>”

    CAN芯片逻辑响应验证测试

    在CAN芯片研发阶段,需要做诸多涉及通讯错误管理验证的问题。在ISO-16845国际标准中,规定完善的测试标准,如错误帧检测,传输帧相关检测,错误管理逻辑验证等,本文主要分享有效便捷的方法
    的头像 发表于 04-30 18:24 606次阅读
    CAN<b class='flag-5'>芯片</b>逻辑响应<b class='flag-5'>验证</b>测试

    FPGA Verilog HDL语法之编译预处理

    的语句)。Verilog HDL编译系统通常先对这些特殊的命令进行“预处理”,然后将预处理的结果和源程序一起在进行通常的编译处理。
    的头像 发表于 03-27 13:30 1088次阅读
    FPGA <b class='flag-5'>Verilog</b> HDL语法之编译预处理

    新思科技推出基于AMD芯片的新一代原型验证系统

    近日,新思科技宣布推出全新基于AMD Versal™ Premium VP1902自适应系统级芯片(SoC)的HAPS®原型验证系统,以此进一步升级其硬件辅助验证(HAV)产品组合。 此次推出的全新
    的头像 发表于 02-19 17:12 1153次阅读

    浅谈Verilog和VHDL的区别

    Verilog和VHDL是两种广泛使用的硬件描述语言(HDL),它们用于描述和模拟数字电路系统的行为和结构。这两种语言的主要作用是帮助工程师设计、仿真和验证集成电路(IC)和系统级芯片(SoC)中的硬件模块。
    的头像 发表于 02-17 14:20 2630次阅读
    浅谈<b class='flag-5'>Verilog</b>和VHDL的区别

    英诺达发布全新静态验证产品,提升芯片设计效率

    了重要一步,将为中国芯片产业的发展注入新的活力。 静态验证作为一种业界普遍使用的验证方法,通过对设计的源代码进行深入分析,能够发现设计中的潜在问题。与动态仿真
    的头像 发表于 12-24 16:53 1159次阅读

    Verilog 电路仿真常见问题 Verilog芯片设计中的应用

    在现代电子设计自动化(EDA)领域,Verilog作为一种硬件描述语言,已经成为数字电路设计和验证的标准工具。它允许设计师以高级抽象的方式定义电路的行为和结构,从而简化了从概念到硅片的整个设计流程
    的头像 发表于 12-17 09:53 1602次阅读

    Verilog 与 ASIC 设计的关系 Verilog 代码优化技巧

    Circuit,专用集成电路)设计是一个复杂的过程,涉及到逻辑设计、综合、布局布线、物理验证等多个环节。在这个过程中,Verilog被用来描述数字电路的行为和结构,进而实现ASIC的设计。 具体来说
    的头像 发表于 12-17 09:52 1439次阅读

    Verilog 测试平台设计方法 Verilog FPGA开发指南

    Verilog测试平台设计方法Verilog FPGA开发中的重要环节,它用于验证Verilog设计的正确性和性能。以下是一个详细的
    的头像 发表于 12-17 09:50 1560次阅读

    Verilog与VHDL的比较 Verilog HDL编程技巧

    Verilog 与 VHDL 比较 1. 语法和风格 VerilogVerilog 的语法更接近于 C 语言,对于有 C 语言背景的工程师来说,学习曲线较平缓。它支持结构化编程,代码更直观,易于
    的头像 发表于 12-17 09:44 2691次阅读