自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 S家的AXI VIP如何配置interleaving

【代码】S家的AXI VIP如何配置interleaving。

2025-03-18 15:48:05 646

原创 如何调整AXI VIP的最大延时

在验证过程中,AXI VIP经常会用到,VIP中默认的延时设置最大是16,那么如何调整这些设置的最大值呢?本文主要记录在调整AXI VIP延时的时候如何调整最大值。

2025-02-19 16:00:42 874

原创 两个无时钟源信号之间的检测

最近遇到一个问题,需要检测两个无时钟源的信号,条件是如果a信号的上升沿来了后,如果b信号的上升沿在10ns到来,则打印pass,否则打印error。本文主要记录了解决一个问题的过程,从分析问题,到提出方案,再到代码实现。

2025-01-02 12:45:28 577

原创 DPI-C多die场景下的scope设置

在IC验证仿真过程中,当SV侧不同scope下有多个相同的task,在C侧如何去指定调用。多die环境下,在SV侧,每个die都有各自独立的die_tb以及VIP,每个die所在的die TB中,都会export相同的名字的function或task,然而在C一侧,在使用SV侧export的function/task时,它不知道是哪个die TB对应的function/task,因此,需要在使用scope的变量指定,C的function中调用的是哪个die TB对应的task/function。

2024-10-25 17:39:45 462

原创 DPI-C动态库so的使用

在做IC验证EDA仿真过程中,有时候需要调用C实现的参考模块,我们可以利用DPI-C的功能,实现SV侧调用C侧的函数。在具体实现过程中,我们可以将C代码编译成一个so文件的动态库,然后在SV侧加入这个so文件进行编译和仿真。这样做的好处是,C的具体实现对SV侧不可见,SV侧只需要关心函数接口和参数的传递。本文先介绍方法,然后演示一个demo,记录这个过程。module tb;

2024-10-25 16:14:54 627

原创 verdi中查看force信号

在RTL仿真过程中,我们有时候会对信号进行force操作,从而实现某些特定的功能。但是在仿真波形中,不能直接从波形上看出,这些信号的驱动,是因为前级电路的驱动,还是因为force的原因的驱动。从而使debug非常地不友好。本文记录一种通过verdi查看force信号的方法,同时记录一种将波形中所有的force信息dump出来的一种方法。本文主要记录通过verdi查看force信号的两种方式。

2024-09-21 16:00:58 1012

原创 systemverilog中的DPI-C用例介绍

本文主要基于VCS内置的三个关于DPI-C的使用用例,记录一下DPI-C的使用方法。测试用例的路径为$VCS_HOME/doc/examples/testbench/sv/。测试用例包括:dpi_longint,dpi_packed_array,dpi_structure。本文主要通过VCS自带的三个DPI-C测试用例,记录一下SV中DPI-C的使用方法。

2024-09-01 17:30:24 1547 1

原创 C语言中将函数名作为参数进行传递

在实际应用过程中,有时候需要将函数名作为参数传递,本文主要记录这一方法。本文主要记录C语言中,将函数名作为参数进行传递的方法。

2024-08-13 17:19:53 1167

原创 芯片bring-up的测试用例

最近做了一些用测试用例点亮芯片的工作,从测试用例的规划和编写,记录几点开发测试用例的心得体会。本文主要总结在点亮芯片的过程中,我们需要做哪些测试用例,以及编写这些测试用例的时候,有哪些注意事项。

2024-08-13 10:03:22 1680

原创 C语言中利用结构体进行寄存器访问

在运用C语言进行裸机测试时,如果用base_addr加offset_addr进行访问,当需要配置的寄存器很多时,我们很难记住地址地址所表示的意思,这个时候,我们可以利用结构体对寄存器进行封装,然后绑定基地址,这样我们就可以通过结构体的方式,对寄存器进行读写访问,使得代码具备更好的可读性和可维护性。本文主要记录一种C语言通过结构体的方式访问寄存器的方法。

2024-07-02 15:37:57 667

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

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

2024-04-10 10:01:13 843 1

原创 verdi中的driver和load

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

2024-03-04 15:55:29 1708

原创 systemverilog中的bind

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

2024-02-29 15:25:12 2483

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

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

2024-02-27 16:43:59 1027

原创 合并覆盖率

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

2024-02-22 16:44:18 884

原创 event | semaphores | mailbox

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

2024-02-21 18:00:04 1183

原创 SystemVerilog约束随机(二)

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

2024-02-05 17:48:38 924

原创 vcs宏汇总选项

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

2024-02-04 17:38:36 950

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

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

2024-02-04 17:29:24 749

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

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

2024-02-01 14:40:39 1031

原创 数据的保护:local | protected

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

2024-02-01 11:14:20 505

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

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

2024-01-31 16:37:47 430

原创 进程的执行过程

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

2024-01-30 16:18:25 1170

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

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

2024-01-29 17:48:31 1029

原创 信号的采样与驱动

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

2024-01-26 16:52:44 915

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

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

2024-01-24 17:35:42 421

原创 流操作:打包/解包

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

2024-01-24 14:31:33 568

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

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

2024-01-24 10:34:08 604

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

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

2024-01-23 16:02:22 645

原创 fifo force

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

2023-12-28 17:33:10 558 1

原创 uvm_mem_mam

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

2023-09-21 16:52:32 2237

原创 如何使用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 935 2

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

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

2023-09-15 17:58:15 706

原创 在sequence中对变量随机

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

2023-07-20 10:55:27 1134

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

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

2023-03-30 17:48:15 4582

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

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

2022-12-30 18:13:18 576

原创 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 5258 5

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

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

2022-11-07 14:05:42 820

原创 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 1979 1

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

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

2022-11-02 15:35:53 1018

谷歌开源库opentitian-master 20241217

谷歌开源库opentitian-master 20241217

2024-12-17

uvm_ralgen_ug_sp2.pdf

uvm_ralgen_ug_sp2.pdf

2021-06-15

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

SystemVerilog IEEE的标准

2021-07-06

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

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

2023-09-27

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

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

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

2022-09-08

uvmgen_userguide.pdf

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

2021-06-25

SystemVerilog_3.1a.pdf

SystemVerilog的基本语法介绍

2021-07-06

C8051F020 资料大全

C8051F020 资料大全

2011-08-05

谭浩强 C语言

谭浩强 C语言 大全

2011-08-05

Multisim11.01注册机

Multisim11.01注册机 破解Multisim11.01

2011-11-09

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

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

2014-07-09

计算机二级考试真题大全

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

2011-08-05

数字电路课件 ppt

数字电路课件 ppt

2011-08-05

汇编 语言 王爽

汇编 语言 王爽

2011-08-05

数据结构 大全

数据结构 大全

2011-08-05

Windows7答疑3000个

收集了3000个关于windows的问题

2011-09-29

空空如也

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

TA关注的人

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