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

SOC/IP验证工程师

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

公告

文章分类 -  Systemverilog

1 2 3 下一页

UVM整型枚举转字符串方法
摘要:在UVM中,使用uvm_field_automation机制注册二维数组需要特殊处理,因为UVM没有直接支持二维数组的宏。以下是三种实现方法,从推荐程度排序: 方法1:使用动态数组的动态数组 + 自定义处理(推荐) class my_item extends uvm_sequence_item; / 阅读全文

posted @ 2025-07-21 22:31 SOC验证工程师 阅读(42) 评论(0) 推荐(0)

SystemVerilog中bit扩展为byte方法
摘要:在SystemVerilog中,将1位的bit类型值1扩展为8位的byte类型(所有位均为1,即8'b11111111),可以通过以下两种方法实现: 1. 使用位复制操作符(推荐) bit a = 1'b1; // 1位变量,值为1 byte b; // 8位有符号整数类型 assign b = { 阅读全文

posted @ 2025-07-21 22:30 SOC验证工程师 阅读(43) 评论(0) 推荐(0)

sv中浅复制和深复制的详解
摘要:句柄的传递 句柄可以用来创建多个对象,也可以前后指向不同对象 Transaction t1,t2; // 声明句柄 t1 = new(); // 创建对象并将其指针赋予t1 t2 = new(); // 创建对象并将其指针赋予t2 t1 = t2; // 将t2的值赋予t1,t1和t2指向同一对象, 阅读全文

posted @ 2023-10-14 21:13 SOC验证工程师 阅读(211) 评论(0) 推荐(0)

systemverilog中浅复制和深复制的具体用法
摘要:做IC 验证进行transaction比对时,发现曾经验证通过的module总是发生mismatch的情况,这是不应该发生的情况,因为这个module曾经已经验证通过并且RTL已经稳定,bench也很稳定,但是出现了mismatch的情况。最后经过debug发现两种不同写法的代码会导致不同的结果: 阅读全文

posted @ 2023-10-14 20:56 SOC验证工程师 阅读(718) 评论(0) 推荐(0)

systemverilog中浅复制和深复制的区别
摘要:使用SystemVerilog搭建环境的时候,经常会遇到需要对一个对象进行复制,以防止对象的方法修改原始对象的值。对于初学者经常会使用new函数来实现class的内建的复制功能,但是,当要复制的对象中含有其他对象(object)时,使用内建的复制功能将会得到不期望的结果。本文将示例说明shallow 阅读全文

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

systemverilog中信号的多驱动问题
摘要:当某个信号出现多于一个驱动源的时候,或者某个信号是双向(inout)的时候,都需要使用wire来完成线网连接。具体用法就是声明某个信号为wire sigal_a;或者wire logic signal_a;就可以了。 注意直接声明为logic signal_a;是不行的,会报类似如下的错误:xmel 阅读全文

posted @ 2023-08-19 10:36 SOC验证工程师 阅读(2302) 评论(0) 推荐(0)

各种语言的条件编译的用法总结
摘要:Verilog/SystemVerilog ``` //条件语句 if () else if() else //条件编译 `ifdef macro `ifndef macro `elsif macro `else `endif ``` bash shell ``` //条件语句 if command 阅读全文

posted @ 2023-06-13 21:11 SOC验证工程师 阅读(58) 评论(0) 推荐(0)

SystemVerilog中的$time和$realtime的用法
摘要:``` 在搭建验证环境时,经常需要在环境中插入很多info用于输出一定的log信息用于进行debug,在插入这些info方法的时候,经常需要同时输出该方法执行的具体时间,用于方便定位问题,为此在Verilog和SystemVerilog中提供了一堆关于time的方法,如果对于这些方法使用的不是很恰当 阅读全文

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

sv中$stack()的使用方法
摘要:这个系统函数在[IEEE]SystemVerilog.std.1800_2017里你是搜索不到的,但是你在SystemVerilog的环境中是可以使用的。 你可以使用$stack()这个系统函数来查看报错的文件层次,类似于python的trackback,可以帮助你定位异常问题,从而协助你进行deb 阅读全文

posted @ 2023-06-04 14:35 SOC验证工程师 阅读(330) 评论(0) 推荐(0)

SV中宏的用法总结
摘要:``` 本文主要给大家介绍SV宏,谈到SV宏大家应该不会感到陌生,因为大家在做前端设计或验证的时候会用到`define定义宏,进行条件编译,或者使用宏来定义参数等,做前端验证的工程师会使用`define来定义一些信号路径等。这些SV宏的用法都是比较常规的用法,很少有验证工程师使用SV宏来处理一些其他 阅读全文

posted @ 2023-05-27 14:30 SOC验证工程师 阅读(2716) 评论(0) 推荐(0)

for循环和fork...join_none联合挖的坑
摘要:![](https://img2023.cnblogs.com/blog/2601779/202305/2601779-20230525210725322-1746120634.png) 示例中,在for循环中使用了fork...join_none结构调用$write显示每次循环执行过程中循环变量的 阅读全文

posted @ 2023-05-25 21:48 SOC验证工程师 阅读(916) 评论(0) 推荐(0)

一些有趣的数组相关的SystemVerilog 约束
摘要:我们在工作中常常会针对数组施加各式的约束,下面列举一下有趣的Systemverilog数组约束示例: 1、如何约束动态数组的最后一个元素为特定值。(事先不知道数组的大小) ``` rand int some_dynamic_array[]; constraint last_elem_c { some 阅读全文

posted @ 2023-05-25 20:46 SOC验证工程师 阅读(513) 评论(0) 推荐(0)

DPI-C接口的使用
摘要:为了方便与C、C++等语言的交互,uvm中引入了DPI接口,自定义的函数需要写函数主体,然后再import后声明和使用,验证环境中便可以像调用system verilog中的函数一样使用这些函数。而且,对于C语言中内置的函数,不需要写函数主体,直接声明使用。同理c语言也可以调用sv里面的函数或者ta 阅读全文

posted @ 2023-05-14 18:15 SOC验证工程师 阅读(4069) 评论(0) 推荐(0)

SystemVerilog中数组的用法总结
摘要:定宽和动态数组初始化时需要加符号';队列不需要。 定宽数组的声明: int lo_hi[0:15];//16个整数[0]...[15] int c_style[16];//16个整数[0]...[15] 声明并使用多维数组: int array2[0:7][0:3];//完整的声明 int arra 阅读全文

posted @ 2022-11-26 22:55 SOC验证工程师 阅读(1027) 评论(0) 推荐(0)

SystemVerilog中的类型转换总结
摘要:在一个父类与子类中: 在父类中有一个变量,在子类中有一个不一样的变量; 在父类和子类中都有一个virtual的且同名的函数; 如果将子类句柄赋值给父类句柄时: 在父类句柄中引用一个变量时,会先从子类里面找,如果找不到再到父类里面找。 父类与子类中的变量和函数没有任何关系。 虚方法: 阅读全文

posted @ 2022-09-17 17:50 SOC验证工程师 阅读(136) 评论(0) 推荐(0)

SystemVerilog中soft软约束
摘要:soft表示的是软约束,如果在一个约束块中使用soft,那么表示这个约束块相比于没有使用soft的约束块(硬约束块)的优先级要低。 在constraint中的约束表达,可以使用soft修饰,当该约束和其他非soft约束冲突时,soft修饰的约束会失效。 要注意的是除了soft软约束块外,所有的约束块 阅读全文

posted @ 2022-09-17 15:34 SOC验证工程师 阅读(5594) 评论(0) 推荐(0)

SystemVerilog中延时的方法
摘要:#100 intf.drv_ck.ch_valid <= 1; 延迟一百个时间单位后,执行后面的语句。 2. #100; intf.drv_ck.ch_valid <= 1; 延迟一百个事件单位后,执行后面的语句。 3. @(posedge clk); clk上升沿到来后,执行后面的语句。 4. r 阅读全文

posted @ 2022-08-12 21:44 SOC验证工程师 阅读(1354) 评论(0) 推荐(0)

SystemVerilog中静态变量和静态方法的理解
摘要:静态变量 1.与硬件领域例如module,interface不同的是,在class中声明的变量其默认类型为动态变量,即其声明周期在仿真开始后的某时间点开始到某时间点结束。具体来讲,其声明周期开始于对象创建,终于对象销毁。 2.如果使用关键字static来声明class内的变量时,则其为静态变量。静态 阅读全文

posted @ 2022-07-24 20:58 SOC验证工程师 阅读(880) 评论(0) 推荐(0)

Verilog中reg和SystemVerilog中logic的区别
摘要:关于reg和logic的区别,在SystemVerilog验证测试平台编写指南中有所提出,如下所示: SystemVerilog对经典的reg数据类型进行了改进,使得他除了作为一个变量以外,还可以被连续赋值、门单元和模块所驱动。为了与寄存器类型相区别,这种改进的数据类型称为logic。任何使用线网的 阅读全文

posted @ 2022-07-09 16:38 SOC验证工程师 阅读(848) 评论(0) 推荐(0)

SystemVerilog中$sformat和$formatf的妙用
摘要:字符串在验证平台中是经常被使用的,今天我们来说说在SystemVerilog中非常重要和常用的$sformatf()/$sformat()函数,他们是什么含义? 1.sformat和sformatf的区别 首先Jerry和大家解释下这两个函数什么含义。看下这段代码: string jerry_str 阅读全文

posted @ 2022-04-24 20:08 SOC验证工程师 阅读(553) 评论(0) 推荐(0)

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