• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • YouClaw
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

SOC/IP验证工程师

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

文章分类 -  UVM

1 2 3 4 下一页

uvm中wait_modified的用法
摘要:在以前的使用中,scoreboard都是在build_phase中调用get函数,并且调用的前提是参数已经设置过。一个sequence是在task phase中运行的,当其设置一个参数的时候,其时间通常是不固定的。 针对这种不固定的设置参数的方式,UVM中提供了wait_modified任务,它的参 阅读全文

posted @ 2026-02-01 15:47 SOC验证工程师 阅读(13) 评论(0) 推荐(0)

field automation常用函数
摘要:1.Copy函数用于实例的复制,其原型为: Extern function void copy(uvm_object rhs); 如果要把某个A实例复制到B实例中,应该使用B.copy(A)。在使用此函数前,B实例必须已经使用new函数分配好了内存空间; 2.Compare函数用于比较两个实例是否一 阅读全文

posted @ 2026-02-01 15:43 SOC验证工程师 阅读(5) 评论(0) 推荐(0)

如何停止sequence
摘要:在做reset测试的时候,先start一个sequence,在其body进行的途中复位,并把它终止。记录一下遇到一系列的问题。 干掉sequence的两种方式 本节简要介绍两种终止sequence的方法,用法都非常的简单,但采用这两种方法来结束sequence的时候,都有潜在的风险,这将在下节介绍。 阅读全文

posted @ 2026-02-01 12:12 SOC验证工程师 阅读(23) 评论(0) 推荐(0)

uvm中层级和路径的区别
摘要:uvm_top = uvm_root::type_id::create("__top__", null); uvm_test_top = my_casen::type_id::create("uvm_test_top", this); env = my_env::type_id::create("e 阅读全文

posted @ 2026-02-01 12:00 SOC验证工程师 阅读(4) 评论(0) 推荐(0)

uvm中package的用法
摘要:Package在UVM中的作用是什么? 参照【SystemVerilog的语言参考手册】的定义 【SystemVerilog包提供了额外的机制在多个SystemVerilog模块,接口和程序之间,共享参数,数据,类型,任务,函数,序列,以及特性的声明。 包是显示命名的作用域。它出现在源文本的最外层。 阅读全文

posted @ 2026-02-01 11:51 SOC验证工程师 阅读(12) 评论(0) 推荐(0)

uvm中常用的枚举类型以及其它类型
摘要:其他类型 uvm_status_e // Enum: uvm_status_e // // Return status for register operations // // UVM_IS_OK - Operation completed successfully // UVM_NOT_OK - 阅读全文

posted @ 2026-01-02 17:33 SOC验证工程师 阅读(14) 评论(0) 推荐(0)

uvm中run_phase和run-time的区别
摘要:核心区别概览 所属与并行关系:run_phase 与 12 个 run-time task phase(如 reset_phase、configure_phase、main_phase、shutdown_phase 等)是并行执行的;其中 run_phase 属于 common_domain,其余 阅读全文

posted @ 2025-12-03 19:50 SOC验证工程师 阅读(47) 评论(0) 推荐(0)

systemverilog中层次与路径的区别
摘要:uvm_top = uvm_root::type_id::create("__top__", null); uvm_test_top = my_casen::type_id::create("uvm_test_top", this); env = my_env::type_id::create("e 阅读全文

posted @ 2023-11-10 19:43 SOC验证工程师 阅读(215) 评论(0) 推荐(0)

uvm中使用uvm_hdl_read的注意事项
摘要:在验证环境中,会经常使用uvm的后门操作系列函数,uvm_hdl_force, uvm_hdl_read, uvm_hdl_deposit等。使用后门操作可以直接通过信号的字符串hierarchy路径,进行对RTL内部信号的读取和赋值。 使用uvm_hdl_read常见的写法可能是这样: ``` b 阅读全文

posted @ 2023-07-29 11:41 SOC验证工程师 阅读(8208) 评论(1) 推荐(2)

验证环境中如何捕获后门路径信号的跳变
摘要:环境中后门获取DUT内部信号的3种方法: 信号的Hierarchy读取 interface连接 VPI访问 其中前两种方式,借助systemverilog种阻塞等待操作,可以精确地捕获信号的跳变,比如@和wait: ``` //信号Hierarchy读取 @(tb_top.dut.cnt) @(po 阅读全文

posted @ 2023-07-29 11:33 SOC验证工程师 阅读(453) 评论(0) 推荐(0)

验证环境获取DUT内部信号的方法
摘要:在UVM寄存器模型的操作中,寄存器用于设置DUT状态和芯片状态信息的上报,有前门和后门读写两种方式。 推而广之,其他的DUT内部信号,由于验证的需要,有时也需要进行后门读写。这些信号除了包含前门可读的寄存器以外,还会包含reg/wire信号、状态机的状态值、memory内容等。总的来看,获取DUT内 阅读全文

posted @ 2023-07-29 11:26 SOC验证工程师 阅读(1153) 评论(0) 推荐(0)

uvm中的uvm_root解析
摘要:uvm_top = uvm_root::type_id::create("__top__", null); uvm_top= new("__top__", null); uvm_test_top = my_casen::type_id::create("uvm_test_top", this); u 阅读全文

posted @ 2023-07-10 23:10 SOC验证工程师 阅读(258) 评论(0) 推荐(0)

uvm中使用put_response/get_response导致Reponse queue overflow的解决方法
摘要:引子 开始本文讨论之前我们先来以一个具体的例子来引出我们今天将要讨论的问题。 put_response/get_response的常规用法实例 图1是apb_master_driver中的一段代码,106-109行是关于driver中将transaction信息通过response的方式返回给发起这 阅读全文

posted @ 2023-07-09 19:23 SOC验证工程师 阅读(2518) 评论(1) 推荐(2)

uvm_table_printer的用法
摘要:相信大多数朋友在打印类中数组成员时都遇到过数组打印信息不全的困扰: ![](https://img2023.cnblogs.com/blog/2601779/202307/2601779-20230703215928937-70626745.jpg) 假如图中pload[5]到pload[194]中 阅读全文

posted @ 2023-07-03 22:03 SOC验证工程师 阅读(1506) 评论(0) 推荐(0)

get_sequencer的详细用法
摘要:uvm_sequence_item.svh ``` // Function: get_sequencer // 返回一个指向默认sequencer的指针 // Returns a reference to the default sequencer used by this sequence. fu 阅读全文

posted @ 2023-06-27 21:07 SOC验证工程师 阅读(109) 评论(0) 推荐(0)

get_response使用详解
摘要:// Task: get_response // 默认情况下,sequences必须通过调用get_response找回responses。 // 如果没有指定transaction_id, 此任务将返回发送给这个sequence的下一个response。 // 如果在response队列里面没有r 阅读全文

posted @ 2023-06-27 20:53 SOC验证工程师 阅读(1167) 评论(0) 推荐(0)

uvm中get_transaction_id的用法
摘要:``` // Function: get_transaction_id // // Returns this transaction's numeric identifier, which is -1 if not set // explicitly by ~set_transaction_id~. 阅读全文

posted @ 2023-06-27 20:24 SOC验证工程师 阅读(318) 评论(0) 推荐(0)

uvm_config_db的重命名用法
摘要:uvm_component.svh ``` typedef uvm_config_db#(uvm_bitstream_t) uvm_config_int; typedef uvm_config_db#(string) uvm_config_string; typedef uvm_config_db# 阅读全文

posted @ 2023-06-27 20:08 SOC验证工程师 阅读(47) 评论(0) 推荐(0)

UVM消息打印机制打印的时间跟波形时间不一样
摘要:``` 在使用UVM构建测试平台时调用`uvm_info时发现波形中信号变化的时间和`uvm_info显示的时间不一致(本文以`uvm_info为例说明),并且使用UVM-1.1和UVM-1.2居然`uvm_info显示的时间还不一样,这到底是怎么回事儿呢?下面本文将通过追究下到底是什么原因导致的, 阅读全文

posted @ 2023-06-04 18:51 SOC验证工程师 阅读(737) 评论(0) 推荐(0)

在UVM中使用正则匹配
摘要:通常我们需要在验证环境中对路径path做正则或者对寄存器名做正则匹配来做针对的处理,如打印,检查或者屏蔽等操作,因此我们需要能在UVM环境中使用正则表达式进行字符串的搜索匹配。 恰好,UVM给我们提供了两个接口,分别是如下两个函数: ``` function int uvm_re_match(str 阅读全文

posted @ 2023-06-04 15:18 SOC验证工程师 阅读(858) 评论(0) 推荐(0)

1 2 3 4 下一页
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3