自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(146)
  • 资源 (14)
  • 收藏
  • 关注

原创 linux中如何查看一个文件的起始结尾和中间

在linux中,有时候一个log文件非常大,直接打开需要很久的时间,而我们只关注其中某些行的信息,这个时候就可以将我们需要的内容提取出来,本文主要介绍如何提取的方法。

2024-04-10 10:01:13 469

原创 verdi中的driver和load

driver: 谁给它赋值了===双击load: 它给谁赋值了。

2024-03-04 15:55:29 459

原创 systemverilog中的bind

通常我们需要将设计的代码和验证的代码进行分离,systemverilog中提供bind的方式,能够在不改变设计代码的前提下,在设计的代码的module或者instance下边,例化一些用于存放断言等辅助代码的module/interface/program/checker。本文主要总结和记录一下bind的用法。

2024-02-29 15:25:12 606

原创 记录一个仿真模型在前仿和后仿中遇到的问题

在写仿真模型的过程中,为了方便,我们通常在tb里边,通过层次引用的方式,将模块的接口assign出来给interface,再将interface用config_db送给环境去处理,RTL前仿这样做没问题,但是后仿的时候存在一定的风险。

2024-02-27 16:43:59 403

原创 合并覆盖率

在验证过程中,我们经常通过覆盖率来判断,我们验证是否趋于收敛,然而,每一个case都会生成自己的覆盖率文件,这个时候就需要将不同的覆盖率文件合并到一起,本文主要记录如何实现覆盖率的合并,以及如何对这个计算过程加速。本文主要记录一下覆盖率合并的方法。

2024-02-22 16:44:18 360

原创 event | semaphores | mailbox

在systemverilog中,我们可以利用event | semaphores | mailbox来实现进程之间的通讯,本文主要介绍这三种数据类型的使用,以及他们之间的区别。

2024-02-21 18:00:04 881

原创 SystemVerilog约束随机(二)

集合操作set membership权重约束weighted constraints队列约束array constranint条件约束order constraints等价约束equivalence constraints顺序约束solver order主要记录一些sv中的约束方法,方便查阅。

2024-02-05 17:48:38 371

原创 vcs宏汇总选项

在用vcs仿真过程中,有时候宏不是在编译选项命令里面输入,不会出现在build.log,那么如何知道自己的仿真用到了哪些宏呢。

2024-02-04 17:38:36 422

原创 记录一些git的常用操作

记录一些常用的git操作,持续更新,方便自己查阅。

2024-02-04 17:29:24 669

原创 如何理解派生类的构造函数

在class中,有的时候有构造函数new,有的时候又没有构造函数new,本文主要记录一下,派生类的构造函数的执行过程,帮助更好的理解class的构造函数。本文主要记录派生类的构造函数执行过程。

2024-02-01 14:40:39 927

原创 数据的保护:local | protected

为了数据的保护,我们可以通过local或者protected去修饰数据,本文主要记录一下它俩之间的区别。

2024-02-01 11:14:20 351

原创 如何override已经存在的约束

在验证过程中,我们基本都是基于spec,做正常的约束,当我们测特定corner场景的时候,希望能够用新的约束,去override已经存在的约束。本文主要记录如何override已经存在的约束,当然这里还可以用random with操作,只不过random with约束的范围,必须在base约束的范围内。

2024-01-31 16:37:47 335

原创 进程的执行过程

本文主要记录一下进程的执行过程,并通过几个示例,进一步加深对进程的理解。

2024-01-30 16:18:25 959

原创 join | join_any | join_none之间的区别

本文主要记录一下,与fork想匹配的三个选项,join/join_any/join_none之间的区别。

2024-01-29 17:48:31 474

原创 信号的采样与驱动

在UVM验证过程中,有monitor和driver组件,分别用于收集信号和驱动信号,本文记录两个例子,用于理解信号的采样以及驱动的过程。本文主要通过两个例子,帮助理解一下信号的采样和驱动。

2024-01-26 16:52:44 562

原创 记录一些多维数组的方法

验证过程中,我们经常会用到多维数组存储数据,本文主要记录一下,如何去获取我们需要的数据,以及多维数组自带的一些方法。本文主要记录一下使用多维数组的一些方法。

2024-01-24 17:35:42 362

原创 流操作:打包/解包

在验证过程中,为了方便数据传输,我们经常需要对不同字段的数据先进行打包,再将打包好后的数据发到对端,对端收到数据后再进行解包,这个过程中,我们可以很方便的运用流操作符来解决。本文主要记录一下流操作符的使用。“>>”是从左往右的流操作符。“

2024-01-24 14:31:33 447

原创 记录一些队列中常用的方法

在实际项目中,我们经常会用到队列,本文主要总结一些队列的常用方法。队列自带的方法与find和with结合使用的方法本文主要记录一些队列常用的方法。

2024-01-24 10:34:08 350

原创 记录一些随机约束的控制方法

在运用UVM验证过程中,经常会用到大量的随机,这个时候我们需要控制随机约束的打开或者关闭,来实现不同模式的约束。本文主要记录一下,在随机过程中约束控制的方法。内嵌约束控制控制rand变量是否随机选择随机控制的变量控制约束块是否随机约束的嵌套控制本文主要记录一下随机控制的一些方法。

2024-01-23 16:02:22 384

原创 fifo force

在我们DUT的RTL中,经常会有很多的FIFO,很多时候,我们需要检查这些FIFO的空满,是否对系统有影响。本文主要介绍如何在验证环境中,随机force FIFO的空满。本文基于UVM的框架,自顶向下进行描述,先介绍sequence中的实现,再介绍random_fifo_force的具体实现。本文主要介绍DUT中FIFO的full和empty的随机force思路,并给出了具体的代码实现。

2023-12-28 17:33:10 492

原创 uvm_mem_mam

在验证过程中,我们会经常用到mem,希望能够对mem做动态内存管理,能够像C语言一样动态malloc一段空闲的地址空间。UVM的底层代码提供uvm_mem_man这个底层代码可以很方便用于实现上述功能。

2023-09-21 16:52:32 694

原创 如何使用UVM寄存器模型中的callback

我们在使用UVM的寄存器模型过程中,有时候需要在寄存器配置配置前准备一些数据,或者在寄存器配置之后触发一些操作,这个时候就可以用到UVM寄存器模型中自带的callback,本文主要介绍如何使用UVM中寄存器模型自带的callback。在uvm-1.2\src\reg\uvm_reg_cbs.svh中,分别为读写提供了pre和post的回调函数,以及post_predict的回调函数等如下所示。

2023-09-19 18:03:47 404

原创 $value$plusargs字符串参数传递后如何随机

在仿真过程中,经常在命令行通过$value$plusargs传递一个字符串到环境中,去选择不同的sequence,但是,有些时候需要随机选择其中某几个seq,而只有整数和枚举类型可以随机,字符串无法随机,那么如何解决这个问题呢?总的来说就是借助一个关联数组进行查表,来解决字符串不能随机的问题。

2023-09-15 17:58:15 354

原创 在sequence中对变量随机

很多时候,我们在写sequence激励的时候,有一些变量需要做一些简单的随机,但是又不希望引入其他的类,这个时候我们可以利用std::randomize()来处理。总的来说,利用std::randomize()函数可以很方便的在sequence内部对变量进行随机,而不用额外引入类。

2023-07-20 10:55:27 506

原创 记录一些uvm自带的后门访问方法

在写case的时候,很多场景下可能需要我们后门去访问RTL中的某些信号或者寄存器的值,这个时候uvm自带的函数就很好用。本文主要记录一些uvm中自带的一些后门访问函数。

2023-03-30 17:48:15 2236

原创 UVM中如何根据字符串创建对应的类

很多时候,我们会将一些数据包的名字,以字符串的方式存放到一个字符串数组中,然后需要根据字符串去创建对应名字的数据包。本文主要介绍如何利用UVM的工厂模式,根据字符串创建对应名称的数据类。本文主要介绍,如何通过字符串,创建与之对应的数据类。

2022-12-30 18:13:18 396

原创 VCS自带的UPF低功耗仿真demo介绍

VCS工具安装路径下,自带了一个UPF低功耗仿真的演示用例,本文主要介绍一下这个演示用例的使用,同时解决一些使用过程中的问题。将MVSIM_NATIVE_DEMO文件夹拷贝出来,在该路径下输入tree查看层次结构,如下所示,其中,LP、LP_DVE、LP_LPA文件夹分别存放的是仿真环境,REF文件夹是不带UPF的参考对比仿真环境,RTL和UPF文件夹分别用来存放设计代码和UPF文件。

2022-11-15 16:35:44 3280 4

原创 sequence如何接收来自driver的transaction

大多数情况下,验证环境都是充当host的角色,利用sequence往DUT中打激励,进而达到验证的目的。但是有些情况下,需要sequence充当device的角色,接收来自driver的transaction,进行处理后,sequence再将resp返回给driver,这种sequence被称作Reactive Sequences,本文主要记录一下Reactive Sequences的具体实现。

2022-11-07 14:05:42 613

原创 uvm_event和uvm_event_pool

uvm_event类有两种不同的操作模式:边沿敏感和电平敏感。边沿敏感模式包括:trigger(),wait_trigger(),wait_ptrigger()和wait_ptrigger_data() 方法。不要使用reset(),is_on(),is_off(),wait_on()和wait_off()方法。wait_*方法会被阻塞,在调用trigger()时释放。

2022-11-03 14:07:05 1422

原创 管理多个sequence的执行方法:top_sequence

在UVM验证环境中,我们通常会有很多不同类型的sequence,例如:控制复位的sequence、控制寄存器配置的sequence、控制总线的sequence等等,这些不同的sequence需要管理。本文主要记录一下,在同一个uvm验证环境中,不同的sequence之间,同步以及执行顺序先后,的控制方法。本文主要记录一下,如何利用top_sequence,实现多个sequence的管理。

2022-11-02 15:35:53 715

原创 sequence启动的两种方式

如果把UVM验证环境比作一把枪,那么sequence相当于是枪里边的子弹,这里主要记录一下sequence的两种启动方式。本文主要记录一下UVM中,直接和间接启动sequence的方式,在间接启动sequence时,phase objections的管理方法。

2022-10-31 10:38:37 2729 1

原创 带参数的传输类(Parameterized Transaction Class)

在UVM的验证环境中,为了让环境具备更好的移植性,通常采用参数形式的传输类,本文主要通过代码记录一下,这些带参数的传输类,在UVM验证环境中的使用方法。带参数的传输类,需要重新定义get_type_name这个虚函数,并且返回的type_name,也需要自己构造,否则通过field automation机制使用print函数时,会打印其父类。本文主要记录一下,带参数的传输类,在UVM环境中的使用方法,以及需要注意的一些方面。

2022-10-26 17:49:19 260

原创 巧用fork—join_none启用后台进程

聊一聊最近遇到的一个问题,巧妙的利用fork——join_none启动后台进程,实现了进程之间的并行处理。

2022-10-24 10:48:13 751 2

原创 UVM如何处理out-of-order乱序传输

乱序传输(out-of-order)是指在协议中,后发出去的req,支持先回resp,通常通过ID来保证req和resp之间的关系。很多协议支持乱序传输,例如AXI4。本文主要介绍,在UVM的环境中,构造支持乱序传输的验证环境的方法。本文主要总结一下,在uvm环境中,如何处理乱序的传输。首先给出整体思路,然后分别针对sequence和driver提供具体的代码实现供参考。

2022-10-21 15:37:27 1580

原创 `uvm_do宏如何与底层的driver进行交互

在张强《UVM实战》中的179页,提到了“uvm_do系列宏其实是将下述动作封装在一个宏中”,这句话大概的提到了uvm_do这个宏里边的具体实现,但是这些内容是怎么通过sequencer,与底层的driver进行交互的,确不得而知。本文主要记录一下,uvm_do这个宏,与底层driver交互的方式,从而进一步帮助我们理解数据的传递方式。本文主要记录一下uvm_do这个宏的具体实现,以及与底层driver之间的交互过程。

2022-10-21 10:35:45 619

原创 UVM field automation机制

由于UVM中的field automation机制比较常用,用的时候需要到处去找对应的宏,本文主要记录一下UVM中的field automation机制,方便使用的时候进行查阅。

2022-10-20 15:17:45 806

原创 SystemVerilog约束随机(一)基本介绍

本节记录SystemVerilog约束随机的基础的知识。更多相关内容参考《IEEE Std 1800™-2012, IEEE Standard for SystemVerilog—Unified Hardware Design, Specification, and Verification Language》。本文主要简单的记录一下,SystemVerilog中的约束随机相关的基础知识。

2022-10-11 15:52:18 680

原创 interface中modport和clocking

interface是UVM验证过程中的一个重要的组件,主要起到连接测试用例与DUT的作用,具有简化代码,易于修改等特点。本文主要介绍interface中的modport和clocking的用法。modport和clocking都是interface组件中的块,主要用于对信号进行分组和同步采样。本主要总结了modport和clocking的基本用法,同时实战演示了interface的用法,以及在uvm环境中的传递方式。

2022-10-10 11:57:36 3991 1

原创 UVM中的中断sequence

很多时候,我们的DUT(Design Under Test)中,存在中断信号,本文主要记录一下,如何为这些中断信号创建sequence。本文主要总结并记录一下,在UVM环境中,如何处理中断。

2022-09-26 09:45:10 752

原创 利用回调函数在driver中收集覆盖率

在UVM环境中,很多时候,我们通过driver,将数据包发送完成后,希望收集一下数据包的覆盖率,那么可以在driver中添加回调函数,利用回调函数收集覆盖率,本文主要记录一下,利用driver中的回调函数,来收集覆盖率的方法。

2022-09-23 15:41:48 356

dma ral 20240404

support uvm_reg_hw_reset_seq/uvm_reg_bit_bash_seq/uvm_reg_access_seq/uvm_reg_mem_built_in_seq support reg callback support ral function cov & code cov

2024-04-01

What’s Next for SystemVerilog in the upcoming IEEE 2023 standard

What’s Next for SystemVerilog in the upcoming IEEE 2023 standard

2024-03-20

SystemVerilog Style Guide - systemverilog.pdf

SystemVerilog Style Guide - systemverilog.pdf

2024-03-08

sv的约束随机以及随机稳定性指导

sv的约束随机以及随机稳定性指导

2024-02-22

产生ral的field和reg的底层文件

这个文件可以根据ralf文件,抽出用于生产ral的底层field和reg的底层文件。

2023-09-27

UVM中处理复位信号的参考代码

复位存在于每一个UVM验证环境中,简单的同时,也是我们最容易忽略的功能点。在验证环境中,通常复位信号的处理,就是在top顶层产生时钟时,做一个复位的动作。这样做的好处是简单,但是如果我们想在仿真过程中,加入一个复位的动作,实现起来就比较麻烦,对于接口上,复位后驱动的复位值,也难以实现。 本文主要介绍一种通用的方法,专门用来处理复位,具备很好的移植性,复用性,使用起来也非常方便,将复位相关的内容,单独拿出来处理,能够解决常规验证环境中,无法中间加入复位动作的痛点。

2022-09-08

1800-2017 - IEEE Standard for SystemVerilog--Unified Hardware Design.pdf

SystemVerilog IEEE的标准

2021-07-06

SystemVerilog_3.1a.pdf

SystemVerilog的基本语法介绍

2021-07-06

uvmgen_userguide.pdf

产生UVM环境的一个自动化脚本

2021-06-25

uvm_ralgen_ug_sp2.pdf

uvm_ralgen_ug_sp2.pdf

2021-06-15

合肥工业大学 自动化考研资料汇总

本人合肥工业大学的研究生,考研一路过来整理的资料汇总。

2014-07-09

Multisim11.01注册机

Multisim11.01注册机 破解Multisim11.01

2011-11-09

Windows7答疑3000个

收集了3000个关于windows的问题

2011-09-29

C8051F020 资料大全

C8051F020 资料大全

2011-08-05

汇编 语言 王爽

汇编 语言 王爽

2011-08-05

谭浩强 C语言

谭浩强 C语言 大全

2011-08-05

数据结构 大全

数据结构 大全

2011-08-05

数字电路课件 ppt

数字电路课件 ppt

2011-08-05

计算机二级考试真题大全

2000到2011年计算机二级考试真题大全

2011-08-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除