SystemVerilog & IC验证
文章平均质量分 77
SystemVerilog & IC验证相关知识
小wang的IC自习室
这个作者很懒,什么都没留下…
展开
-
流水线的dependence问题(指令相关性)
今天被问到了流水线的dependence问题,一开始没听懂,然后硬猜应该问的是指令相关性,之后查询了一下,硬猜满分(手动狗头),顺便总结一下。指令的相关性,指令流水线的一个特点是流水线中的各条指令之间存在一些相关性,使得指令的执行受到影响。要使流水线发挥高效率,就要使流水线连续不断地流动,尽量不出现断流情况。然而,由于流水过程中存在的相关性冲突,断流现象是不可避免的。原创 2022-08-21 11:05:19 · 1759 阅读 · 2 评论 -
uvm_event和sv中的event的区别
uvm_event和sv中的event的区别:SV中event是单纯一个类型(声明了就可以用),而UVM的uvm_event是一个类(需要相应的创建或拿到句柄)。uvm_event是通过从资源池获取共享的对象句柄,避免组件之间的相互依赖。event被->触发之后,会触发使用@等待该事件的对象;uvm_event通过trigger()来触发,会触发使用wait_trigger()等待的对象。如果要再次等待事件触发,event只需要再次用->来触发,而uvm_event需要先通过reset()方法重置初原创 2022-08-15 14:14:54 · 1974 阅读 · 0 评论 -
systemverilog中@和wait的区别
事件阻塞@/wait()和事件触发->同时发生时,wait()阻塞可以正常等到事件触发,而@阻塞与事件触发产生竞争,有可能等到也有可能等不到触发而一直阻塞。原创 2022-08-15 11:00:52 · 2148 阅读 · 0 评论 -
uvm数字IC验证覆盖率收集
在进⾏芯⽚验证时,最重要的⼀个环节就是完成对dut的覆盖率收集⼯作,覆盖率主要分为下⾯三类:1、代码覆盖率2、功能覆盖率3、断⾔覆盖率如何完成覆盖率收集?原创 2022-07-20 10:55:38 · 4876 阅读 · 0 评论 -
UVM中 sequence中的starting_phase
在UVM中,由于driver以及monitor中main_phase常常是一个死循环,故常常将仿真验证平台的进程控制放在sequence中。在sequence中可以使用starting_phase来控制验证平台的关闭。那怎么为sequence中的starting_phase赋值呢?......原创 2022-07-16 18:16:36 · 3044 阅读 · 0 评论 -
SV笔记:static 和 automatic 概念及相关规定
目录1 首先总结如下:2 全局变量和局部变量3 静态变量和动态变量4 静态方法和动态方法class中成员和方法默认为automatic,program、module、interface、package中函数和任务和变量默认为静态的。在讨论静态变量和动态变量之前,我们先说全局变量和局部变量的概念。变量可以分为动态(automatic)和静态(static),静态变量的特点:动态变量的特点:如下,使用静态变量count来计数所创建的实例数目:解释代码:static 和 automatic 除了可以修饰类中原创 2022-06-27 23:22:08 · 4226 阅读 · 1 评论 -
UVM寄存器模型RAL——寄存器域uvm_reg_field配置方法configure()的参数说明
代码如下:class ctrl_reg extends uvm_reg; `uvm_object_utils(ctrl_reg) uvm_reg_field reserved; rand uvm_reg_field pkt_len; rand uvm_reg_field prio_level; rand uvm_reg_field chnl_en; ... virtual function void build(); //所在寄存器、fi.原创 2022-05-29 12:33:20 · 4463 阅读 · 1 评论 -
UVM中的get_type_name(),get_name(),get_full_name()方法
1、简明解析get_type_name(),get_name(),get_full_name()首先需要明确的是,在工厂注册机制下,get_type_name(),get_name()在component组件类和object基类中的返回值是一样的,而get_full_name()在不同类型的类中,会有不同的返回值。get_type_name():返回对象的class名; get_name():返回创建对象时,传入的字符串; get_full_name():在component类会返回当前co原创 2022-05-28 21:44:58 · 10033 阅读 · 1 评论 -
uvm_config_db的set()与get()方法
1、set方法1.1 方法原型:uvm_config_db#(T)::set(uvm_component cntxt, string inst_name, string filed_name, T value);1.2 举个栗子:uvm_config_db#(int)::set(this, "c1", "val1", 100);1.3 参数含义1)#( )括号中是要传送的数据类型T,可以是:virtual interface; 单一变量值如:int,string,enum等原创 2022-05-28 12:56:04 · 6233 阅读 · 3 评论 -
SV -- Assertions 断言
文章目录 SV -- Assertions 断言 1.简介 1.1 立即断言 2.SVA (system verilog assertion) 2.1 Sequence 2.2 Property 2.2.1 implication 2.2.2 repetition 重复操作 2.2.3 go to repetition 跟随重复 2.2.4 Nonconsecutive repetition 非连续重复 2.2.5转载 2022-05-04 21:49:34 · 13138 阅读 · 1 评论 -
Questa Sim生成覆盖率文件时报错:Failed to open coverstore data file 。。。
在用Questa Sim跑测试文件时,添加仿真指令如下:可以跑通,然后输入“ run -all ”指令运行测试文件,也可以正常跑通,之后点击End Simulation结束仿真:但是并没有得到覆盖率文件,查看命令行信息发现有报错:报错信息:# ** Error: (vsim-7) Failed to open coverstore data file "C:UsersÂ61Desktop està³/mcdf_full_random_test_1634670461.data" in原创 2022-05-04 21:28:28 · 839 阅读 · 1 评论 -
对SV中的ref关键字的理解
绿皮书《systemverilog验证——测试平台编写指南》97页,有对ref端口的简单描述:ref端口是对变量(不能是net)的引用,它的值是该变量最后一次赋值。并没有给出具体使用场景,那上边这句话要怎么理解呢?使用ref声明的端口信号,在进行参数传递时,共享同一个变量存储空间,即“引用”传递进来的实参,而不是复制传递的参数。举个栗子就好理解了:比如下边一段代码:int a = 0;task change_test(string name, ref int num)原创 2022-05-04 18:03:09 · 9664 阅读 · 2 评论 -
数字IC验证面试(常问题88道)
Q1. 定宽数组、动态数组、关联数组、队列各自特点和使用定宽数组:属于静态数组,编译时便已经确定大小。其可以分为压缩定宽数组和非压缩定宽数组:压缩数组是定义在类型后面,名字前面;非压缩数组定义在名字后面。Bit [7:0][3:0] name; bit[7:0] name [3:0]; 动态数组:其内存空间在运行时才能够确定,使用前需要用new[]进行空间分配。 关联数组:其主要针对需要超大空间但又不是全部需要所有数据的时候使用,类似于hash,通过一个索引值和一个数据组成,索引值必须是唯一的。转载 2022-03-24 11:37:28 · 18282 阅读 · 4 评论 -
数字IC设计流程相关名词梳理及各流程EDA工具总结
目录1. 数字IC设计流程相关名词梳理半定制设计(ASIC):RTL ( Register Transfer Level)设计:功能验证:逻辑综合:形式验证:STA ( Static Timing Analysis,静态时序分析) :时钟树综合CTS(Clock Tree Synthesis):布局布线:Extrat RC和STA:版图物理验证:GDSII文件:2. IC设计过程中用到的EDA工具总结1. 数字IC设计流程相关名词梳理 半定制设计原创 2022-03-16 20:02:31 · 4398 阅读 · 0 评论 -
数字IC设计(ASIC设计)完整流程详解
目录I、ASIC设计流程一、确定项目需求二、前端流程三、后端流程II、IC设计流程相关名词梳理(含各流程EDA工具梳理)III、IC设计流程整理(图片)I、ASIC设计流程一、确定项目需求1. 确定芯片的具体指标:物理实现制作工艺(代工厂及工艺尺寸);裸片面积(DIE大小,DIE由功耗、成本、数字/模拟面积共同影响);封装(封装越大,散热越好,成本越高)。性能指标:速度(时钟频率);...原创 2022-03-16 19:56:08 · 30371 阅读 · 0 评论 -
SV学习笔记:句柄传递及句柄的类型转换
SystemVerilog:句柄传递和类型转换问题总结笔者在习句柄传递和转换时,发现有一些需要注意的点,因此总结了一下,顺便在这下边叭啦记录一下:一、父类句柄与子类句柄之间的类型转换子类句柄可以赋值给父类句柄(但是父类句柄不可以赋值给子类句柄),如下:super= sub;其中:super为父类句柄,sub为子类句柄。赋值后含义为:此时的父类句柄super已经指向了子类的对象。 虽然父类的句柄super指向了子类,但它仍然是父类的句柄,因此用该句柄调用方法/属性时,只能访问.原创 2022-02-27 10:36:10 · 2924 阅读 · 5 评论 -
SV学习笔记——randc为什么不能随机化产生具有唯一元素值的数组
“如果想要产生一个随机数组,它的每一个元素值都是唯一的。如果使用randc数组,那么数组的每一个元素都会独立的随机化,并不会按照我们的本意使得数组中的元素值都是唯一的。” 在学习路科验证的课程的SV语言部分之四随机约束一讲中有上述这么一句话,路桑在这里没有细讲,当时一头雾水,想着randc这个关键词修饰的变量,随机化之后产生的随机值不是不会重复嘛?然后翻了下绿皮书(《SystemVerilog验证——测试平台编写指南》),第六章“随机化”章节中,6.13.5小节“产生具...原创 2022-02-24 15:16:40 · 2381 阅读 · 5 评论