自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CDNS PCIe VIP debug info

1. TLP payload的顺序是反向的,即大小端反的,比如下面的denalirc打印的信息看,pl是我们发TLP时的配置,Cfg才是真正的data顺序。而seq写的时候如下:可以看到payload[2]时第三个8bit payload,但是我们是想配置bit15,在实际寄存器里是第二个byte。

2024-03-26 14:25:43 289

原创 30 UVM Adder Testbench Example

注:加法器可以很容易地用组合逻辑开发。引入时钟和重置,使其具有测试台代码中时钟和重置的味道。加法器设计在时钟的正边缘产生两个变量的合成加法。复位信号用于清除out信号。

2024-01-01 22:30:38 534

原创 29 UVM Command Line Processor (CLP)

随着设计和验证环境的复杂性增加,编译时间也增加了,这也影响了验证时间。因此,需要对其进行优化,以便在不强制重新编译的情况下考虑新的配置或参数。我们已经看到了function or task如何基于传递参数进行行为。类似地,UVM提供了一个接口来提供命令行参数,从而提供了灵活性,在“uvm_cmdline_processor”类的帮助下可以避免重新编译testbench。它允许使用不同的配置运行测试。

2024-01-01 22:27:06 515

原创 28 Singleton Object in UVM

单例对象/singleton object只是类的单个对象。即使用户尝试创建多个新对象,也会返回相同的对象。允许创建单个对象的类称为singleton类。在UVM中,uvm_root类只有一个实例。因此,它被称为单例类/singleton object。

2024-01-01 22:15:49 554

原创 27 UVM queue

uvm_queue类构建一个动态队列,该队列将按需分配并通过引用传递。

2024-01-01 22:07:40 786

原创 23 UVM Event

even机制提供进程之间的同步。与System Verilo event相比,UVM event提供了额外的灵活性,如保持事件等待器/event waiters的数量和设置回调。

2023-12-31 11:29:41 1016

原创 22 UVM Callbacks

回调用于改变组件或对象的行为而不修改其代码。请参阅以更好地理解。。

2023-12-29 16:57:48 511

原创 21 UVM printer

uvm_printer 类提供了以不同格式打印 uvm_objects 的灵活性。我们已经讨论了使用宏的 print() 方法,或者如果不使用 utils_begin/ end 宏,则编写 do_print() 方法。UVM printer提供四种内置printer。

2023-12-29 16:44:33 565

原创 20 UVM comparer

在uvm_object中,我们讨论了print、clone、copy、compare方法等。compare()方法比较两个对象,如果比较成功则返回1。uvm_comparer 添加比较策略并计算错误比较的数量(如果有)。

2023-12-29 16:36:11 610

原创 19 UVM Subscriber

uvm_subscriber 类提供与analysis port连接的analysis export。顾名思义,它订阅广播器,即analysis port来接收broadcasted transactions。

2023-12-29 16:30:29 609

原创 18 UVM Scoreboard

UVM scoreboard是一个检查DUT功能的组件。它用analysis export从monitor接受transaction事务以进行检查。用户定义的scoreboard是从 uvm_scoreboard 扩展而来的,而 uvm_scoreboard 又派生自 uvm_component。

2023-12-29 16:17:18 1234

原创 17 UVM Agent

agent是保存并连接driver,monitor和sequencer实例的容器。agent基于协议或接口要求开发结构化层次结构。

2023-12-29 14:31:33 550

原创 16 UVM Monitor

UVM monitor是一个passive component,通过virtual interface来捕获DUT的信号,并将他们转化为sequence item格式。sequence item或者transactions被广播给其他component组件,如UVM scoreboard,coverage collector等。monitor使用TLM analysis port来广播transactions事务。

2023-12-29 11:11:49 557

原创 15 Sequence-Driver-Sequencer communication in UVM

我们分别讨论了sequece_item、sequence、sequencer和driver。在本节中,我们将讨论他们如何相互talk,sequencer如何给driver提供从sequence里的sequence item。在开始阅读本节之前,请确保您了解sequencer和driver中使用的所有方法。(参考:UVM seqeuencer和UVM driver ).

2023-12-28 22:23:00 979

原创 14.3 Lock and Grab Methods in UVM sequencer

UVM sequencer通过使用锁定机制向driver提供对序列的独占访问权限(exclusive access)。此锁定机制是使用lock和grab方法实现的。例如:在控制器或微处理器中,internal core中断服务处理以及其他操作。有时,如果设备引发特定中断,需要立即关注并停止正在进行的进程执行。一旦core为这个高优先级中断提供服务,就可以恢复之前的进程。

2023-12-28 21:54:23 1015

原创 14 Arbitration in sequencer(仲裁)

uvm_sequencer 有一个内置机制,可以在sequencer上同时运行的sequence中进行仲裁。基于仲裁算法,sequencer将得到仲裁权的sequence的sequence_item发送到driver。每个sequence发送的sequence_items也有自己的id来区别于其他sequence。要设置特定的仲裁机制,请使用 set_ arbitration 函数,该函数在 uvm_sequencer_base 类中定义。

2023-12-28 17:40:47 926

原创 【PCIe】CDNS PCIe VIP -- Callback使用举例

之前针对CDNS PCIe VIP Calback部分进行了学习,并写了上面的博客。学习就是为了应用,本文就将记录一些我实际用到的我觉得比较典型的例子。仅供学习参考。

2023-12-28 17:13:05 1980

原创 14.1 virtual sequence and virtual sequencer

virtual sequence只是一个容器,它在不同的sequencer上启动多个sequence。virtual sequencer控制其他sequencer,它不连接到任何driver。

2023-12-27 23:32:00 1051

原创 14 UVM sequencer

sequencer是在sequence和driver之间建立连接的中介。最终,它将transactions或sequence items传递给driver,以便将其驱动到DUT。

2023-12-27 23:10:50 350

原创 13.3 Start a sequence

通过调用start方法启动sequence,该方法接受指向sequencer的指针,sequence_item通过该sequencer发送给driveer。sequencer的指针也通常称为m_sequencer。start方法为m_sequencer分配一个sequencer指针,然后调用body()任务。完成与driver交互的主体任务后,start()方法返回。由于它需要与driver交互,因此start()是一种阻塞方法。

2023-12-27 22:49:39 371

原创 13.2 uvm_sequence_base Methods

可以使用uvm_sequence_base类中的预定义方法调用将随机序列项驱动到driver。有两种方法使用一组uvm_sequence_base方法,sequence可以通过这些方法发送sequence items并从driver检索响应(如果适用)。

2023-12-27 22:37:33 406

原创 13.1 UVM sequence macros

根据需要,在编写sequence时可以使用几个宏。

2023-12-27 17:20:17 352

原创 13 UVM sequence

UVM sequence是一个容器,用于保存通过sequencer发送到driver的data items (uvm_sequence_items)。

2023-12-27 17:04:11 423

原创 12 UVM Driver

driver与 DUT 交互。它使用接口/interface将随机事务(randomized transactions)或sequence item驱动到 pin-level的DUT。driver必须从uvm_driver扩展。从sequencer中检索/retrieve事务或序列项,driver使用接口句柄将它们驱动到设计。可以从已在顶级层/top-level次结构中设置的配置数据库中检索。

2023-12-27 16:52:53 974

原创 11 sequence items in UVM

所有用户定义的sequence items都是从类扩展的,因为它利用生成激励并具有sequence-sequencer机制的控制功能。

2023-12-27 16:15:31 372

原创 10. UVM Environment

环境为agents, scoreboards和其他验证组件(包括有助于在 SoC 级别重用块级环境组件的其他环境类)提供良好的层次结构和容器。用户定义的 env 类必须从 uvm_env 类扩展。

2023-12-27 16:10:07 377

原创 9. UVM Test

test位于启动环境组件构建的层次顶部(top of the hierarchical)。它还负责测试平台配置和激励生成过程。根据验证计划中提到的设计特征和功能,编写测试。用户定义的测试类源自。

2023-12-27 15:55:15 941

原创 8 UVM testbench Top

testbench top是一个具有DUT和接口实例的静态容器(static container)。接口实例在TB top和DUT信号相连。生成时钟,并将初始重置适用于DUT。它/clock也被传递给接口句柄。接口使用set方法存储在uvm_config_db中,可以使用get方法沿层次结构向下检索。UVM testbench top还用于通过调用run_test()来触发测试。

2023-12-26 23:54:31 434

原创 7.3 Passing interface handle down the hierarchy in UVM

axi_inf接口句柄存储或设置在配置数据库中,在env类中field_name是axi_interface。在低层次driver类中,使用相同的field_name检索或获取。

2023-12-26 23:45:33 406

原创 7.3 uvm_config_db in UVM

uvm_config_db类派生自uvm_resource_db类。它是uvm_resource_db顶部的另一层便利层,简化了用于uvm_component实例的基本接口(资源库的访问方法)。下面uvm_config_db类的代码段取自uvm源代码。

2023-12-26 23:33:48 971

原创 7.2 uvm_resource_db in UVM

uvm_resource_db是一个类型参数化 type-parameterized的类,它是资源数据库顶部的一个方便层(convenience layer)。这个便利层简化了对低级数据库的访问,并且没有添加新功能。因此,uvm_resource_db不是从uvm_resource类派生的。例如:uvm_resource_db #(整数)::设置(…);3. 如果作为命令行参数提供,它会打印所有资源数据库的访问(写入和读取)。

2023-12-26 23:05:28 909

原创 7. Resource database in UVM(UVM的资源数据库)

UVM集中资源数据库用于可配置(configurable)对象/object、变量/variables、虚拟接口/virtual interfaces、队列/queues、类句柄/class handles等,并从数据库中检索它们。这种可配置的测试平台为验证工程师提供了一定程度的自由度,以在测试平台的各个部分中使用所提供的信息。

2023-12-26 19:06:26 922

原创 6 UVM Object

uvm_object类是所有uvm层次类的基类,如uvm_report_object、uvm_component、uvm_transaction、uvm_sequence_item、uvm_sequence等。它在定义一组方法(如create, copy, print, clone, compare, record等)方面起着重要作用。

2023-12-25 23:59:32 916

原创 5 UVM Objections

UVM Objection示例。

2023-12-25 18:00:50 473

原创 【PCIe】CDNS PCIe VIP 杂记 -- Packet Classes

在写callback那篇文章之后,继续这篇,因为CDNS VIP知识点散且杂,我们实际应用其实也只是冰山一角,【实话实说,UG及相关文档也有点杂、无序,尤其对新手不友好】,所以我也很难将一个topic总结详细到位,后面看时间和遇到的问题类型,根据自己的实际情况和理解不定时不定期更新不同topic吧。这篇更新一下packet class类,类特别多,只写我自己频繁用到的和我的理解点。后面有新的理解也会不定时回头再更新。顾名思义,packet class就是用来define不同种类的packet的。

2023-12-18 15:55:23 1297

原创 【SystemVerilog】$feof

这个定义的意思是,文档的结尾都有一个。

2023-12-12 15:11:42 1541

原创 【PCIe】CDNS PCIe VIP 杂记 -- Callback

最近在研究Cadence PCIe VIP,怎一个“惨淡”来描述。用的真是一言难尽啊,都是泪。记录一些最近学习的觉得想记录的内容在此,仅供参考讨论学习哈。有不对之处请指出大家一起讨论。

2023-12-12 10:29:41 1574

原创 PCIe知识碎片日常记录

1. message TLP包的类型是message,如PME, INTx message中断信息。但是MSI(message signaled interrupt)中断虽然名字有message,但是它的TLP包是。PCIe的知识实际上很多并且相对杂,在实际项目应用中并不一定都能够用到。这里会将自己在项目或者学习过程中遇到的有意义的,容易混淆的知识碎片进行记录。

2023-12-07 19:00:42 583 1

原创 【SystemVerilog】 $cast动态强制类型转换

会经常用到$cast,但因为一直没理解透彻,每次使用都得现找内容再消化。今天自己重新总结整理一下。

2023-12-07 11:09:28 1881 1

原创 SystemVerilog Callback理解

的,比如CC总不能给主函数注册一个“由民警配送到我家”的回调函数吧。

2023-11-29 19:03:39 1014 1

空空如也

空空如也

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

TA关注的人

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