SystemVerilog和UVM
文章平均质量分 62
验证相关如SV、UVM等。
sh_9220
这个作者很懒,什么都没留下…
展开
-
fsdb DUMP的操作记录
fsdb dump原创 2023-01-17 11:28:41 · 682 阅读 · 1 评论 -
【转载】verdi方法fsdbreport将fsdb的某个信号值抽出为可读文件 及波形转换,合并,修改工具
1.fsdbreport可以将fsdb的某个信号值抽出该功能在波形比较的时候有大用。举例:这个命令是将psel==1&penable==1&pwrite==0&pready==1时对应的prdata数据写到tmp_prdata.txt文件中,可以不加-exp条件,直接写出prdata数据,注意这个数据只在跳变的时候写出 -w 32是指定prdata的位宽-bt :begin time-et:end time以上可以设置dump的开始结束时间,有时我们只需要某个时转载 2021-12-16 15:07:32 · 4913 阅读 · 0 评论 -
【转载】Verilog +: -:语法
“+:”、"-:"语法看到这个语法的时候是在分析AXI lite 总线源码时碰见的,然后查阅了资料,做出如下解释。1.用处这两个应该算是运算符,运用在多位的变量中,如下:slv_reg0[(byte_index8) +: 8] <= S_AXI_WDATA[(byte_index8) +: 8];2."+:"变量[起始地址 +: 数据位宽] <–等价于–> 变量[(起始地址+数据位宽-1):起始地址]data[0 +: 8] <--等价于--> data[.转载 2021-06-08 09:15:29 · 583 阅读 · 0 评论 -
sv部分总结
1、相比verilog,sv新引入了logic数据类型。sv侧重验证,节省考虑verilog其他细分变量的精力。2、bit类型仅表示0和1,为二值逻辑。logic类型可以表示0、1、z、x,为四值逻辑。3、四值逻辑类型:integer、logic、reg、net-type。二值逻辑类型:byte、shortint、int、longint、bit。4、有符号类型:byte、shortint、int、longint、integer。无符号类型:bit、logic、reg、net-type。5、定原创 2021-04-06 22:10:50 · 1075 阅读 · 0 评论 -
【转载】System_Verilog打印格式
system_verilog display format1. 简介$display 和 $write的区别: $display系的系统函数:会在输出的末尾自动添加换行符(newline character); $write系的系统函数:光标会停留在输出的末尾,不会自动换行。 $display 和 $write相同之处: 按照参数列表的顺序输出参数; 参数可以是引号内的字符串(quoted string literal),表达式(expression) 和数值(value);转载 2020-12-28 18:55:14 · 4457 阅读 · 0 评论 -
【转载】p_sequencer与m_sequecer用法梳理
1.m_sequencer定义在uvm_sequence_item中定义了protected变量m_sequencer,它的类型是uvm_sequencer_base;我们常用的uvm_sequence继承于uvm_sequence_item,那么所有的sequence都是可以看到m_sequencer的.2.m_sequencer获取通常有两种方法启动sequence,一种是通过uvm_config_db设置default sequence来实现.在环境中会自动get来获取对应的参数.获取成功之后,通转载 2020-12-18 10:22:53 · 1837 阅读 · 1 评论 -
【转载】SystemVerilog中virtual关键字常见用法
在验证工作中经常使用"virtual"关键字,下面列举该关键字应用场景。主要应用场景在virtual class,virtual interface 以及 virtual task/function。 OOP三大特性(封装,继承,多态)中的多态在SystemVerilog中一般通过 “virtual” 关键字实现。 通过virtual声明的类,接口,任务与函数,其本身自带一些方法或者函数。后续的例化或者扩展可以对原有的内容进行增加或者修改,从而实现同一函数不同方法的多种形态。 1. ..转载 2020-12-16 11:56:06 · 868 阅读 · 0 评论 -
【转载】VCS 编译仿真方法总结
VCS/VCSMX 一般仿真步骤VCS仿真可以分成两步法或三步法, 对Mix language, 必须用三步法。仿真前要配置好synopsys_sim.setup文件,里边有lib mapping等信息。设置环境变量'setenv SYNOPSYS_SIM_SETUP /xxx/xxx/synopsys_sim.setup'. VCS对应的waveform工具有DVE和Verdi, DVE因为是原生的,所以VCS对DVE非常友好。但DVE已经过时了,其对uvm等新feature支持的不好。Verdi是D转载 2020-12-14 22:24:19 · 4254 阅读 · 0 评论 -
【转载】IC-工具篇--VCS使用教程
文章目录0.引言 1.知识要求 2.VCS simulation basics (基础操作) 3、Compile-time option exambles(VCS可选项的介绍) 4、VCS Simulation Command Format(simv的可选项) 5. Using DesignWare Library with VCS(使用新思科技的库) 5.实际操作 5.1 case1-加法器 5.111 增量编译 -Mupdate 5.112 日志文件输出-l +文件转载 2020-12-14 22:23:13 · 4634 阅读 · 0 评论 -
【转载】 UVM时间打印格式--timeformat
在UVM验证环境中通过添加打印信息来辅助定位问题,默认情况下,打印出来的时间信息是以fs、精度是0位的格式打印的.而目前的仿真环境大多以ns的仿真级别,为了方便我们定位问题,可以通过timeformat来修改打印的格式。timeformat的用法如下:第一个参数设置时间单位:unit_number;第二个参数设置进度单位,即时间小数点后面几位有效;第三个参数为打印时间的填充如ns、us等;第4个参数设置最小的数据宽度.设置$timeformat(-9,3,“ns”,10),其含义是时间单位是1ns,小数转载 2020-12-14 22:20:16 · 1935 阅读 · 0 评论 -
【转载】systemverilog 在class中使用force
1.直接force某个值,比如0/1/a之类的,可以在class中直接force2.force某个变量的值,比如 force dut.timer=timer, 如果timer是一个动态变量的话,编译会报错“ Class data is not allowed in non-procedural context.”,简单的解法是把timer定义成static类型3.如果2中不能简单定义成static类型的话,可以借用interface/bind module来实现,具体是在interface中增加tr转载 2020-12-14 22:19:10 · 2463 阅读 · 0 评论 -
【转载】verilog中$readmemb和$readmemh的使用
readmemb和readmemh用来从文件中读取数据到存储器中。读取的内容只包括:空白位置(空格、换行、制表格(tab和form-feeds),注释行、二进制或十六进制的数字。数字中不能包含位宽说明和格式说明,其中readmemb要求每个数字是二进制数,readmemh要求每个数字必须是十六进制数字。数字中不定值x或X,高阻值z或Z,和下划线(_)的使用方法和代表意义与一般Verilog HDL程序中的用法一致。在Verilog语法中,一共有以下六种用法:(1)$readmemb("<转载 2020-12-14 09:11:39 · 2368 阅读 · 0 评论 -
systemverilog——256位位宽赋值全1
两种方法①拼接bit [255:0] a;a = {256{1'b1}};②赋值0取反bit [255:0] a;bit [255:0] b;b = 'h0;a = ~b;参考链接:http://bbs.eetop.cn/thread-453585-1-1.html原创 2020-09-11 11:08:36 · 3585 阅读 · 0 评论 -
【转载】Verilog中Dump函数及用法
Verilog提供一系列系统任务用于记录信号值变化,常见的格式有vcd,fsdb等。1,Dump VCD格式$dumpfile("file. dump"); 打开一个VCD数据库用于记录$dumpvars(level,start_module); 要记录的信号,level=0表示记录所有$dumpflush; 将VCD数据保存到磁盘 不明白$dumpoff; 停止记录$dumpon; 重新开始记录$dumplimit(); 限制VCD文件的大小(以字节为单位)$dumpall; 记录所转载 2020-08-07 10:18:51 · 2663 阅读 · 0 评论 -
【转载】verilog中的timescale用法
timescale是Verilog HDL 中的一种时间尺度预编译指令,它用来定义模块的仿真 时的时间单位和时间精度。格式如下:`timescale 仿真时间单位/时间精度注意:用于说明仿真时间单位和时间精度的 数字只能是1、10、100,不能为其它的数字。而且,时间精度不能比时间单位还要大。最多两则一样大。比如:下面定义都是对的:`timescale 1ns/1ps`timescale 100ns/100ns下面的定义是错的:`timescale 1ps/1ns时间精度就是模块转载 2020-07-20 10:16:39 · 1159 阅读 · 0 评论 -
仿真波形截取
vcs仿真完成,对于生成的波形,截图其中一段,命令如下:fsdbextract source.fsdb -bt 10000ns -et 20000ns -o output.fsdb上面命令中,source.fsdb是原始波形文件,10000ns 和 20000ns是截取波形的开始时间点与结束时间点,otuput.fsdb是截取出来的波形文件名。...原创 2020-06-27 11:06:38 · 4911 阅读 · 3 评论 -
【转载】systemverilog数组直接打印
systemverilog中数组直接打印示例。int data_array[6]={0,1,2,3,4,5};$display("data array is: %p", data_array);print: data array is: {0,1,2,3,4,5}直接使用$display进行打印,其中与数组对应的数据类型为 %p 。至于为什么时 %p ,原作者没说,在网上找了找,回头有时间在接着写上。...转载 2020-06-10 14:22:10 · 4670 阅读 · 0 评论 -
UVM信息打印
1、UVM有4种信息安全等级UVM_FATAL、UVM_ERROR、UVM_WARNING、UVM_INFO,分别对应的宏为`uvm_fatal、`uvm_error、`uvm_warning、`uvm_info。2、`uvm_info宏打印信息的可视等级,为UVM_LOW、UVM_MEDIUM、UVM_HIGH、UVM_FULL、UVM_DEBUG。其他三个宏无该设置,有问题均会显示。可...原创 2020-03-05 02:47:47 · 3826 阅读 · 0 评论 -
【转载】systemverilog关于虚方法和多态
1.虚方法与多态1.1 背景:///////////////////////////////////////////////////////////////////////////////////////////////////基类:////////////////////////////////////////////////////////////////////////////...转载 2020-03-05 02:21:20 · 1850 阅读 · 0 评论 -
systemverilog学习总结【一】
一、systemverilog中fork的三种形式。三种形式均会创建进程,但其中进程的执行与后面程序程序的时序关系不同。1、fork...joinfork中最后一个进程执行完退出,才返回,执行后继语句。2、fork...join_anyfork中任意一个进程执行完成后就返回,执行后继语句。3、fork...join_nonefork中的进程不会被等待,就执行后继语句。链...原创 2020-03-05 02:18:25 · 577 阅读 · 0 评论 -
【转载】SystemVerilog中子程序调用与参数传递(ref关键字)
在SystemVerilog中新定义一种端口类型 "ref "传递变量地址而非变量本身。1. 传递值 传递值是子程序传递参数的默认机制。这种传递机制将每个参数拷贝到子程序区域,如果子程序是 automatic 类型,那么子程序会在其本身的堆栈中保留一个局部的参数副本。参数在子程序内部的修改对外部不可见。 参数巨大时使用该方式传递参数是不可取的。 // 传递值的方式如...转载 2020-02-28 23:55:40 · 4605 阅读 · 1 评论 -
【转载】UVM部分宏
参考:http://blog.eetop.cn/blog-1561828-2331509.html性价比分析`uvm_*_utils应该使用。这些配对的宏用来将类注册到factory中,定义create()方法。由于类型的注册必须准确,而这些宏代码简短、易于分析,也难以出错,所以这些宏是很方便的方法,应该使用。`uvm_info | warning | error | f...转载 2020-02-28 13:44:37 · 414 阅读 · 0 评论 -
【转载】Verilog中阻塞赋值和非阻塞赋值的区别
转载地址:https://blog.csdn.net/J_Hang/article/details/100632581Verilog中阻塞赋值(=)和非阻塞赋值(<=)的区别**阻塞赋值:**前面语句执行完,才可执行下一条语句;即:前面语句的执行(b=a)阻塞了后面语句的执行(c=b)。即:always块内,2条语句顺序执行。**非阻塞赋值:**always块内,2条语句同时执行。即...转载 2020-02-03 20:45:32 · 831 阅读 · 0 评论