芯片前端验证
爱吃土豆的小小
这个作者很懒,什么都没留下…
展开
-
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 阅读 · 0 评论 -
UVM相关组件介绍
System Verilog平台的建立经过面向对象class,IF加入,使得验证平台连接更加灵活,修改驱动信号时在顶层去修改,不用底层一个个修改monitor为何不直接从stimulus获取数据?刚开始送到Driver的激励不一定是合法激励,一方面dut需要接受的合规格激励经过driver过滤,driver根据某一协议发送数据,采样monitor根据这种协议收集数据采给RM,另一方面,保证dut的输入激励和输出口,并实现代码重用。UVM平台的建立组件作用及介绍UVM树形组织结构...原创 2022-05-31 11:03:45 · 189 阅读 · 0 评论 -
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 评论 -
数字芯片验证平台--从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 · 234 阅读 · 0 评论 -
数字芯片验证平台--从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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
System Verilog覆盖率
覆盖率是衡量验证完备性的重要指标通过建立能够自动统计功能覆盖率的模型,方便的得到当前功能的覆盖率,根据此调整验证策略,使仿真尽快收敛。你认识到的(完备性)不一定充分,所以从目标上将覆盖率分为代码覆盖率和功能覆盖率代码覆盖率功能覆盖率作用:检查代码是否冗余,设计要点是否遍历检查功能是否遍历被检测对象:RTL代码自定义容器检测方法:工具自动生成自定义收集条件vcs支持的代码覆盖率:line(行),cond(条件),fsm(状态机),tgl(翻转),path(路径原创 2022-05-24 16:06:07 · 612 阅读 · 0 评论 -
System Verilog Assertion断言SVA实操-1
断言Assertion:一种嵌入设计的检查,如果被检查的属性(Property)不是我们所期望的表现,那么期望序列的故障会生成错误提示。断言目的:减少调试时间,提高验证透明度及可观测性断言位置 1,嵌入到 RTL代码中,综合时被忽略module fan(); rtl代码 SVA断言endmodule2,在设计模型中,在独立的非代码块中以及设计模型外,在设计文件中。断言类型:即时断言和并发断言即时断言:在当前时刻断定信号的数值情况,立即求值和时序无关,且必须放在过程块中,如task,fun原创 2022-05-23 16:46:05 · 787 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 阅读 · 0 评论