自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 I2C虚拟项目总结

testbench:完成测试序列的编写提示:以下是本篇文章正文内容,下面案例可供参考测试目的:触发rx_over中断中断描述:根据寄存器IC_RAW_INTR_STAT[1]描述当RX FIFO中的数据超过buffer-depth时,再据需往里面填充数据后就会触发RX_OVER中断通过设计文件找到定义的buffer-depth。

2023-11-07 11:07:26 550 2

原创 UVM入门实验——lab5

对uvm_reg的定义,以及uvm_reg_block的组织对uvm_reg_adapter的定义,以及它与uvm_reg_block之间的关系对uvm_reg_predictor的使用,以及它与uvm_reg_adapter和uvm_reg_block之间的关系改造之前的寄存器发送序列,并以uvm_reg的操作方式去取代应用内建的寄存器序列,做全面的寄存器测试提示:以下是本篇文章正文内容,下面案例可供参考。

2023-08-30 16:16:20 209

原创 UVM入门实验——lab4

将产生transaction并且发送至driver的generator组件,拆分为sequence与sequencer在拆分的基础上,实现底层的qequence完成sequencer与driver的连接和通信构建顶层的virtual sequencer将原有的mcdf_base_test拆分为mcdf_base_virtual_sequence与mcdf_base_test,前者发挥产生序列的工作,后者只完成挂载序列的工作。

2023-08-26 20:29:51 220

原创 UVM入门实验——lab3

TLM单向通行端口和多向通信端口的使用TLM的通信管道UVM的回调类型uvm_callbackUVM的一些仿真控制函数提示:以下是本篇文章正文内容,下面案例可供参考在mcdf_base_test类中使用宏uvm_register_cb(T,CB)完成类的关联mcdf_base_test类与cb_mcdf_base类匹配回调类属于uvm_object类1.cb_mcdf_data_consistence_basic与cb_mcdf_data_consistence_basictest。

2023-08-22 15:55:55 245

原创 UVM入门实验——lab1

工厂的注册、创建和覆盖机制域的自动化以及uvm_object的常用方法phase机制config机制消息管理提示:以下是本篇文章正文内容,下面案例可供参考例如compare()的回调函数do_compare()方法:在do_compare方法中例化新的句柄rhs_,它是trans类型,而传递进来的参数rhs是uvm_object类型,因此比较前需要进行句柄类型转换子类需要调用super.do_compare()确保父类的属性也能比较(前提是有父类properties)

2023-08-16 20:45:11 436

原创 UVM入门实验——lab0

懂得如何编译UVM代码理解SV和UVM之间的关系了解UVM验证顶层盒子和SV验证顶层盒子之间的联系掌握启动UVM验证的必要步骤提示:以下是本篇文章正文内容,下面案例可供参考只有继承于uvm_test的类,才能作为UVM验证环境的顶层创建UVM顶层环境,只能依靠run_test(“UVM_TEST_NAME”)来传递,或者通过仿真命令的参数执行,不能通过构建new()进行。new()可以创建对象,但不能参与构建顶层验证环境。

2023-08-14 16:29:23 258

原创 MCDF-实验5——覆盖率收集

实验5主要是认识如何定义覆盖率,如何从验证计划到测试用例的实现,最后再到覆盖率的量化。主要掌握两种验证量化数据即代码覆盖率和功能覆盖率。从这两种数据,我们可以掌握何时可以结束验证,确认验证的完备性。覆盖率模型已经给出:主要定义了相应测试的覆盖组和采样函数,需要注意的是单个覆盖点声明type_option.weight = 0;是必须的,否则cross会将覆盖点的默认仓也算上,这样cross覆盖率就不是我们想要的了。

2023-08-09 19:55:16 310

原创 MCDF-实验4——从MCDT进入MCDF

第一:验证环境按照隔离的观念,应该分为硬件DUT,软件验证环境package,和处于信号媒介的借口interface第二:对于软件验证环境,它需要经历建立阶段(build),连接阶段(connect),产生激励阶段(generator)和发送激励阶段(transfer)当所有的激励发送完毕且比较完全后,才可以结束测试。与MCDT相比较,MCDF添加了寄存器控制和状态显示功能,同时也添加了一个重要的数据整形功能。

2023-08-08 12:55:17 349 1

原创 MCDF-实验3——随机约束与环境结构

本次实验需要升级实验2中的genenrator和initiator之间的数据生成和数据传输的处理。同时将何时结束测试的主动权讲给generator而非test。添加monitor和checker组件。提示:以下是本篇文章正文内容,下面案例可供参考1.$finish(),没有找到如何在generator中结束仿真的办法。2.约束块中的条件语句可以使用{staement1 -> statement2;3.%x格式是以16进制打印4.使用case语句可以取出相同id的数据。

2023-07-12 22:11:20 346 1

原创 MCDF-实验2——硬件验证方式与软件验证方式的过渡

本次实验使用接口、类和包,完成软件验证方式提示:以下是本篇文章正文内容,下面案例可供参考**检查:**可以在创建两个类的对象时,对channel的id和name作初始化,避免在每个task中初始化参数。只留下task前面关于idle_cycles的部分。还有就是chnl_generator内产生数据的函数名不是get_data了已经改为get_trans所以需要更改。测试块从结果可以看到问题出在chnl_generator.get_trans这里。检查后发现创建对象时都是chnl0_gen.

2023-07-02 21:27:21 333 2

原创 MCDF-实验1

1.不能对动态数组内的元素进行非阻塞赋值2.for-loop中参数用分号;隔开3.动态数组可以作为任务/函数参数来传递,传递办法有两种,一是传递整个数组,而是传递数组内的单个元素传递整个数组:endtask。

2023-06-22 15:00:07 208 1

原创 MCDF-实验0

多通道数据整形器(MCDF,multi-channle data formatter),它可以将上行(uplink)多个通道数据经过内部的FIFO,最终以数据包(data packet)的形式送出。需要注意的是上行数据和下行数据的接口协议不同,此外多通道数据整形器也有寄存器的读写接口,可以支持跟多的控制功能。1.上行数据的通道从端(Channel Slave),负责接收上行数据,并储存到其FIFO中。

2023-06-19 12:49:37 295

原创 SV绿皮书-第六章-随机化

当定向测试无法满足要求时,受约束的随机化测试(CRT)随之出现。定向测试集能找到你认为可能存在的bug,CRT方法通过随机激励,可以找到你都无法确定的Bug。通常和面向对象编程(OOP)同时使用。随机变量的声明使用关键字在定义完随机变量后,可以对该随即变量的值进行约束。采用约束块{}的形式,每个约束块都有其名字,块内为随机变量的约束表达式称为约束语句。

2023-06-13 16:57:59 483

原创 SV-路科-V0实验:lab7使用软件包Packages标准化验证环境

提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

2023-06-12 20:37:11 292

原创 SV-路科-V0实验-lab6功能覆盖率

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2023-06-10 11:14:09 339

原创 SV-路科-V0实验-lab5使用类替换验证组件

lab4我们将数据包封装到了类中。但同一个时间内只能把数据包从一个输入端驱动到另一个输出端。本次实验,我们将验证组件产生器,驱动器,监视器和比较器都分别封装到相应的类中(Generator,Driver,Receiver,Scoreboard类)。同时创建testbench,将所有类容纳进去。验证组件类的对象的传递需要使用信箱Mailbox。属性1.首先声明驱动程序要驱动的接口信号interface,即例化接口router_io记得例化时带上插口TB2.声明字符串name,作为对象的标识,区分对象

2023-06-08 21:54:15 480

原创 SV-路科-V0实验:lab4-使用类封装数据包

在属性约束声明之后添加约束块限制sa和da在0至15以内,**payload.size()**在2至4之内。声明:外部方法new,传递参数string name,初始值为Packet;外部方法compare,返回值为bit类型,传递参数class类Packet pkt2cmp和ref类型的字符串string msg外部方法display用来放置打印语句,无返回值,传递参数为字符串string prefix,初始值为Accomplish。

2023-06-03 17:35:38 228

原创 SV-路科-V0实验:lab3-设置Monitor和Checker

check()用来比较输入端发送的数据和输出的得到的数据recv()接收从输出端拿到的数据,后续还会填充很多功能。get_payload()实现从输出端拿到数据的功能。

2023-06-01 20:22:30 542

原创 SV-路科-V0实验:lab2-产生并发送数据包

1.队列payload的设置有些问题。$urandom返回的是32bit无符号随机数,但是队列payload定义的是8bit。

2023-05-28 16:03:54 273

原创 SV-路科-V0实验:lab1- 搭建Testbench

16路输入,16路输出的路由器。完整的测试平台应该包含以下验证组件底色为灰色的为Top文件,在顶层文件中应该有例化测试文件,DUT文件,和接口文件;从该图中可以看到Test文件中包含对设计DUT的复位任务。通过接口interface将program中的reset激励连接到DUT的复位端。也就是说在top中实例要与router实例的对应。

2023-05-27 18:15:39 269

原创 SV绿皮书-第五章-面向对象编程OOP

类class可以定义在program,module,package中或以外的任何地方(最好在package内定义),类中可以包含functon,task,当有许多类时需要将它们用package打包到一个sv文件中,使用时只需将package导入到testbench中。如同对象的使用,通过已经例化的句柄调用方法。方法可以在类的内部定义,也可以在类的外部定义。

2023-05-21 17:22:49 186

原创 SV绿皮书-第三章-过程语句和子程序

SV绿皮书-第三章-过程语句和子程序等级不够没法自定义标签,只能随便添了

2023-04-20 17:25:09 411 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除