![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
低調的貓
这个作者很懒,什么都没留下…
展开
-
RSIC-V 虚拟存储器技术
在早期的操作系统中,程序规模小,以致于物理内存可以容纳程序。但随着应用程序的规模越来越大,现有的物理内存已经无法容纳这样规模的程序了。其基本原理是程序的规模可以超过实际的物理内存,操作系统首先将程序内容的一小部分存储在物理内存中,将剩余的大部分内容放在下一级存储器,如磁盘等,后续根据需要交换物理内存与磁盘的内容,从而实现超过实际物理内存的程序正常运行。虚拟存储器的大小由处理器的位数决定,32位的处理器对应4GB的虚拟存储空间,64位的处理器对应。TB的虚拟存储空间。原创 2024-07-28 14:18:57 · 155 阅读 · 0 评论 -
UVM寄存器模型
UVM寄存器模型详解原创 2023-02-12 13:12:51 · 801 阅读 · 0 评论 -
UVM中的sequence
当只施加一种激励时,上述方法是可行的。但是如果需要对DUT施加不同的激励时,就需要对上述的main_phase进行修改。##1. sequence的由来。原创 2023-02-12 10:16:26 · 362 阅读 · 0 评论 -
UVM验证-objection机制
1、objection机制objection字面的意思就是反对、异议,主要面向于task phase。在验证平台中,可以通过drop_objection来通知系统可以关闭验证平台。例如:task driver::main_phase(uvm_phase phase);phase.raise_objection(this);//检测到有objection被提起,该phase中的代码被执行#100;phase.drop_objection(this);//撤销objectionendtasktas原创 2022-02-14 16:17:57 · 1399 阅读 · 1 评论 -
UVM验证-覆盖率
1、代码覆盖率行覆盖率(Line Coverage):衡量多少行代码被执行过;有限状态机覆盖率(FSM Coverage):衡量状态机中哪些状态和状态转换被执行过;翻转覆盖率(Toggle Coverage):衡量哪些单bit信号0/1翻转被执行过;分支覆盖率(Branch Coverage),也称路径覆盖率(Path Coverage):衡量哪些if、case、for、forever、while等语句分支被执行过;条件覆盖率(Condition Coverage):衡量哪些条件中逻辑操作数被执行原创 2022-02-08 10:46:38 · 5762 阅读 · 0 评论 -
UVM之TLM通信中的PORT、EXPORT和IMP
LTM通信有三种常用的操作:put操作、get操作和transport操作。原创 2022-01-30 09:13:55 · 5181 阅读 · 0 评论 -
System Verilog功能覆盖率的简单例子
1、定义类class Transaction;rand bit[31:0] data;rand bit[7:0] addr;endclass2、定义覆盖组covergroup Coovoint;coverpoint tr.addr;coverpoint tr.data;endgroup3、收集覆盖率Transaction tr;CovPoint ck;tr=new();ck=new(); //实例化覆盖组repeat(16)beginassert(tr.randomize);原创 2022-01-15 09:24:01 · 328 阅读 · 2 评论 -
UVM验证之config_db机制
1、set与get函数参数介绍config_db机制用于UVM验证平台之间的参数传递。set函数为寄信,get函数为收信,它们通常成对出现。比如:在某个用例的build_phase中使用如下方式寄信:uvm_config_db#(int)::set(this,“env.agt.driver”,“para”,10);set函数中,第一个参数和第二个参数组成目标路径,与此目标路径相同的目标才会成功收信。第一个参数必须是一个uvm_component实例的指针,第二个参数是相对此实例的路径。第三个参数表示一原创 2022-01-03 22:47:36 · 1314 阅读 · 0 评论 -
System Verilog功能覆盖率-覆盖率类型
1、代码覆盖率这种方式主要包括行覆盖率、路径覆盖率、翻转覆盖率、有限状态机覆盖率。其中,行覆盖率:衡量多少行代码被执行过;路径覆盖率:衡量穿过代码和表达式的路径有多少被执行过;翻转覆盖率:衡量哪些单bit变量的值为0或者1;有限状态机覆盖率:衡量状态机中哪些状态和状态转换已经被执行过。...原创 2021-12-29 21:31:09 · 1745 阅读 · 0 评论 -
System Verilog验证之数据类型
1、逻辑(logic)类型logic不同于reg和wire类型,它不仅可以作为一个变量,还可以被连续赋值、门单元和模块所驱动,但是logic类型只能有一个驱动。2、双状态数据类型System Verilog双状态数据类型有bit(无符号)、byte(有符号)、shortint(有符号)、int(有符号)、longint(有符号)。值得注意的是,当将双状态变量连接到DUT时,DUT输出的X或Z值,会被转换成双状态值,从而导致变量未知值的传播而未被测试代码检测出来。这里推荐使用($ isunknown)原创 2021-12-28 23:52:08 · 256 阅读 · 0 评论 -
UVM验证之field automation机制
1、field automation机制相关的宏uvm_field系列宏有如下几种:uvm_field_int(ARG,FLAG)uvm_field_real(ARG,FLAG)uvm_field_enum(T,ARG,FLAG)uvm_field_object(ARG,FLAG)uvm_field_event(ARG,FLAG)uvm_field_string(ARG,FLAG)上述宏分别用于注册整数、实数、枚举类型、uvm_object类型、事件、及字符串类型。...原创 2021-12-27 15:24:09 · 3476 阅读 · 0 评论 -
UVM验证之phase机制
1、task phase与function phase根据是否消耗仿真时间,uvm phase分为两大类:一类是function phase原创 2021-12-26 23:20:29 · 2876 阅读 · 0 评论 -
UVM验证:DPI-C引用外部C函数编译问题
在SV文件中通过import “DPI-C” function c_function(para0,para1,…,paran)声明外部C函数时,如果C函数参数的方向没有写完整,编译时会报错。正确的做法是:import “DPI-C” function c_function(input para0,input para1,…,output paran);切记参数方向一定要写完整。...原创 2021-12-22 13:20:44 · 1138 阅读 · 0 评论 -
UVM验证:uvm_do_on_with函数随机化约束问题及解决方案
比如:为了增强代码的可读性,我们通常会将顶层和底层的seq变量定义为相同名称,在顶层top_vseq中启动底层sub_seq时,'uvm_do_on_with(sub_seq,{a == a});这个约束是无法生效的。1、约束不生效的原因从编译器的角度出发,它不知道两个变量a有什么不同,并且会把它做为sub_seq作用域中的两个相同变量,这就导致约束失效。2、解决方案将顶层变量和底层变量定义成不一样的名称,比如:顶层变量定义为a,底层变量定义为rand_a,然后执行’uvm_do_on_with(s原创 2021-12-22 13:10:08 · 6058 阅读 · 0 评论 -
system verilog验证(二)之约束
随机化约束,顾名思义就是让被随机的变量得到期望的数值。比如: 定义了一个随机化类rand_class rand class rand bit[7:0]a; randc bit[15:0]b; endclass rand_class rand_class_r; 不加任何约束的话,执行rand_class_r.randomize()之后,a的值范围为0~255,b的值范围为0~65535。如果我们想要得到a的值...原创 2021-12-21 21:30:31 · 298 阅读 · 0 评论 -
system verilog验证(一)随机化
system verilog中的随机激励一般以类为单位进行随机产生,该类包含一个或多个随机变量,并且随机变量必须使用rand或者randc修饰符进行修饰。建立好带有随机变量的类之后,通过调用randomize()函数即可完成随机。下面通过一个简单的例子进行说明。 1、定义随机类 class Case_class; rand bit[31:0]a; randc bit[7:0]b; endclass 2、调用randomize...原创 2021-12-19 22:50:39 · 447 阅读 · 0 评论