- 博客(20)
- 收藏
- 关注
原创 UVM面试问题小结
1.UVM的理解;2.uvm_object和uvm_component的联系和区别3.树形结构;phase机制;TLM通信;sequence机制;run_test()函数
2022-06-19 16:31:16
3966
1
原创 UVM打印hello word
DUT文件hello_world.sv打印class hello_world extends uvm_test;//定义 `uvm_component_utils(hello_world);//将类注册到工厂factory,才能用uvm框架 function new (string name, uvm_component parent);//规定用new()函数分配空间 super.new(name, parent); endfunction virtual task run_
2022-05-31 19:58:01
442
原创 UVM相关组件介绍
System Verilog平台的建立经过面向对象class,IF加入,使得验证平台连接更加灵活,修改驱动信号时在顶层去修改,不用底层一个个修改monitor为何不直接从stimulus获取数据?刚开始送到Driver的激励不一定是合法激励,一方面dut需要接受的合规格激励经过driver过滤,driver根据某一协议发送数据,采样monitor根据这种协议收集数据采给RM,另一方面,保证dut的输入激励和输出口,并实现代码重用。UVM平台的建立组件作用及介绍UVM树形组织结构...
2022-05-31 11:03:45
189
原创 System Verilog激励发送和结果检查
本次展示输入何种激励和如何检查正确为主,其中DUT仍然保持不变,与[数字验证平台–从0到1(基于Verilog HDL)(https://blog.csdn.net/lfasdf/article/details/124984534?spm=1001.2014.3001.5502)一致tinyalu_tb.sv文件module top; typedef enum bit[2:0] {no_op = 3'b000, add_op = 3'b001
2022-05-27 19:30:10
284
原创 数字芯片验证平台--从0到1(基于System Verilog)
接上一篇文章,DUT不变,下面是schematictb文件tinyalu_tb.svmodule top; typedef enum bit[2:0] {no_op = 3'b000, add_op = 3'b001, and_op = 3'b010, xor_op = 3'b011,
2022-05-27 10:22:33
233
原创 数字芯片验证平台--从0到1(基于Verilog HDL)
算术逻辑单元(ALU)是指中央处理器CPU的一部分,用以计算机指令集中的执行算术与逻辑操作。某些处理器中,将ALU切分为两部分,即算术单元(AU)与逻辑单元(LU)。tinyalu.vmodule tinyalu ( input [7:0] A, input [7:0] B, input clk, input [2:0] op, input reset_n, input star
2022-05-26 15:51:20
316
原创 System Verilog线程与通信
在测试平台的环境里,大多数语句块被模拟成事务处理器,并运行在各自的线程thread(进程process)里。线程:SV的调度器就像交通警察,总是不停地选择下一个要运行的线程。线程之间通信:解决环境类知道发生器什么时候完成任务,以便及时终止测试平台中还在运行的线程。线程间通信由标准的Verilog事件、事件控制、wait语句、信箱和旗语。Verilog里面执行方式:顺序执行(begin…end)和并发方式(fork…join)SV里面新加入两种创建线程方式:fork…join_none和fork…j
2022-05-25 12:28:57
279
原创 System Verilog覆盖率
覆盖率是衡量验证完备性的重要指标通过建立能够自动统计功能覆盖率的模型,方便的得到当前功能的覆盖率,根据此调整验证策略,使仿真尽快收敛。你认识到的(完备性)不一定充分,所以从目标上将覆盖率分为代码覆盖率和功能覆盖率代码覆盖率功能覆盖率作用:检查代码是否冗余,设计要点是否遍历检查功能是否遍历被检测对象:RTL代码自定义容器检测方法:工具自动生成自定义收集条件vcs支持的代码覆盖率:line(行),cond(条件),fsm(状态机),tgl(翻转),path(路径
2022-05-24 16:06:07
612
原创 System Verilog Assertion断言SVA实操-1
断言Assertion:一种嵌入设计的检查,如果被检查的属性(Property)不是我们所期望的表现,那么期望序列的故障会生成错误提示。断言目的:减少调试时间,提高验证透明度及可观测性断言位置 1,嵌入到 RTL代码中,综合时被忽略module fan(); rtl代码 SVA断言endmodule2,在设计模型中,在独立的非代码块中以及设计模型外,在设计文件中。断言类型:即时断言和并发断言即时断言:在当前时刻断定信号的数值情况,立即求值和时序无关,且必须放在过程块中,如task,fun
2022-05-23 16:46:05
787
原创 System Verilog随机和约束
随机数组和队列,约束动态数组和队列示例1my_trans.sv文件class my_trans; rand bit [3:0] s_array[7];//非合并数组 rand bit [3:0] d_array[ ];//动态数组,使用rand修饰,每次随机化这个类,这个变量都会赋一个值 rand bit [3:0] queue[$];//队列,$代表最后一个元素 constraint d_array_cons {d_array.size() >
2022-05-14 14:48:56
983
原创 System Verilog面向对象OOP-2
类的多态:OPP中多个子程序使用一个共同名字的现象虚方法可以实现动态查找,实现基类句柄调用子类的方法(子类句柄可以直接赋值给父类句柄);而父类句柄完成调用子类成员变量,只有通过句柄转换才可以实现,因为编译器在编译时候做静态检查,不允许将父类句柄直接赋值给子类,所以做动态检查和转换$cast(子类句柄,父类句柄)class animal;//父类 int age=-1;//变量 function new(int a);//方法,new函数分配空间 age = a;
2022-05-13 17:28:50
186
原创 System Verilog面向对象OOP-1
面向对象(Object Oriented Programming)的特性:封装:有个包,包里面很多东西,找到包的的名字就可以去拿里面东西继承:子类的包里面东西比父类(基类)包里面的东西还多多态:子类和父类的包里面都有一个椅子,并且都叫椅子,但是椅子的功能不一样,至于用哪一把椅子,可以自己决定去调用哪一把椅子优势:Veriog使用接口层次方式,OOP直接使用函数或者任务例化调用的方式HDLSVmoduleclassinstanceobjectinstance na
2022-05-13 16:02:23
169
原创 System Verilog 数据类型练习
SV数据类型默认有符号数integer i; //4态, 32bits,signedbyte b8;//2态, 8bits,signed integerint i;//2态, 32bits,signed integershortint s;//2态, 16bits,signed integerlongint l;//2态, 64bits,signed integer默认无符号数bit b;//2态reg r;//4态logic w;//4态数组Array非合并数组:bit [31:
2022-05-12 19:37:18
572
原创 跨时钟域信号处理方法&异步FIFO
跨时钟域全同步设计:1个时钟全异步设计:没有时钟(存在少)全局异步,局部同步设计:不可避免,单一时钟不能满足设计需求多时钟域设计不可避免问题:亚稳态,同步失败同步化:同步器;保持寄存器和握手(效率不高);异步FIFO设计;两级寄存器一级寄存概率的平方,虽然两级并不能完全消除亚稳态危害,但是提高了可靠性,减少其发生概率分类:电平同步器,边沿检测同步器,脉冲同步器电平同步器(打两拍)从Clock1到Clock2的跨时钟,触发器之间无组合逻辑,电平同步一般只适用于频率一样,相位上没有同步,但
2022-05-11 11:03:40
6727
1
原创 竞争、冒险、毛刺
竞争:同一个信号,经过不同通路到达某一个门电路的输入端,时间上有先后(不是同时到达)的一种现象冒险:由于竞争导致输入产生了干扰信号,也就是预期不该有的信号如下图,输出F=A’ & A;由于反相器的存在,导致A’相比于A到达与门输入端的时间会滞后,导致出现干扰脉冲信号但是竞争不一定会有冒险,比如在低速数字电路,输出并联加入小电容滤波,即使输入端有竞争,脉冲持续时间比较短,刚往上跳动时候,电容通电也不会有脉冲,也就不一定有冒险,有冒险肯定有竞争下面举个产生毛刺和消除毛刺的例子测试文件`ti
2022-04-29 14:58:17
749
原创 过程赋值语句
过程快块中的赋值语句被称为过程赋值语句。过程性赋值是在initial语句或者always语句内的赋值。过程赋值语句有阻塞赋值语句和非阻塞赋值语句两种。1.阻塞赋值语句阻塞赋值语句的操作符号为“ = ”,其语法格式如下:变量 = 表达式;例如:b = a;特点:1.在串行语句块中,各条阻塞赋值语句将按照排列顺序依次执行;在并行语句块中,语句同时执行,没有先后之分2.执行阻塞赋值语句的顺序是,先计算等号右端表达式的值,然后立刻将计算的值赋给左边的变量,与仿真时间无关下面是一个阻塞赋值语句的例子,
2022-04-28 16:00:06
1352
原创 二选一数据选择器2-1 MUX
这里描述一个2选1的数据选择器Verilog HDL数据流设计2选1的数据选择器module mux_2to1_fan(s0,in0,in1,out); input [1:0] s0,in0,in1; output [1:0] out; wire [1:0] in0_temp; wire [1:0] in1_temp; assign in0_temp= in0/2; assign in1_temp= in1%2; assign out=s0?in1_temp:
2022-04-27 20:49:11
7238
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人