- 博客(53)
- 资源 (1)
- 收藏
- 关注
原创 sv代码中typedef class ***;的含义
解决循环依赖:当两个类需要相互引用时(例如类A中有类B的成员,类B中又有类A的成员),前向声明可以打破这种循环依赖。提前声明类类型:告诉编译器 ctrl_trans 是一个类类型,但此时还不定义它的具体内容。在 UVM 等验证方法学中,这种前向声明常用于事务(transaction)类的定义中。前向声明后,在正式定义该类之前,你只能使用该类型的指针或引用,不能实例化对象或访问成员。// 这里需要使用ctrl_trans类型。允许使用不完整类型:在正式定义该类之前,可以先用这个类型名声明指针或引用。
2025-07-01 23:58:58
132
原创 记录一个C语言打印的误区:无符号的数通过%d打印出现符号位的现象
• 无符号十六进制数转换为十进制数时,不会出现符号位问题。• 确保使用正确的格式说明符(如 %u)来打印无符号数,以避免误解。
2025-02-28 18:15:43
346
原创 如何解决svn st中出现!(冲突)的问题
svn status 中的!表示文件或目录在工作副本中丢失。根据具体情况,可以通过恢复、删除、移动或重新检出来解决问题。建议在使用 SVN 时遵循版本控制的最佳实践,避免手动操作导致状态混乱。
2025-02-26 18:53:18
568
原创 C语言#define TSLP0 (TSLP_Regdef *)TSENSORO BASE ADDR)的含义?
那么完整的代码可能如下所示:// 寄存器字段定义#define TSENSORO_BASE_ADDR 0x40000000 // 示例基地址这样,当你在代码中使用 TSLP0 时,编译器会将其替换为 ((TSENSORO_Regdef*)TSENSORO_BASE_ADDR),从而访问相应的寄存器。
2025-01-24 18:51:31
237
原创 C语言中的|=代表啥意思?
:是按位或运算符,对两个整数的二进制表示进行逐位比较,只要对应位中有一个为1,结果位就为1。例如,5 | 3 的结果是 7,因为 5 的二进制是 0101,3 的二进制是 0011,按位或运算后得到 0111,即十进制的 7。||:是逻辑或运算符,用于连接两个逻辑表达式,表示只要其中一个表达式的结果为真,整个表达式的结果就为真。代码28行:先读取HSECON1寄存器的值,与0x1按位或操作后的结果写入HSECON1的寄存器。
2025-01-24 18:47:11
1322
原创 UVM RAL Register Abstraction Layer:寄存器抽象层
topic没有RAL的TB有RAL的TBRAL介绍summary
2025-01-12 22:22:00
283
原创 UVM:callback
步骤四:集成拓展uvm callback的类到环境。步骤一:组件中嵌入callback的方法。步骤二:创建uvm callback的类。步骤三:拓展uvm callback的类。
2025-01-12 19:53:35
202
原创 UVM: TLM机制
整个TLM机制下,底层逻辑离不开动作发起者和被动接受者这个底层的模型基础,但实际上,在验证环境中,任何一个组件,都有可能成为动作的发起者,都有可能主动发起命令,且只有掌握主动权,才能更灵活的控制数据的流通,因此TLM机制下,实际用的最多的组件,也就是基于FIFO的数据通信。
2025-01-08 22:59:21
455
原创 UVM:uvm_component methods configure
topicUVM component base classuvm_config_db建议使用uvm_config_db代替uvm_resource_dbuvm factorysv interface建议:uvm_config_db以下了解建议打印error
2025-01-07 23:17:59
258
原创 UVM: uvm_sequence
topcicsequence overviewsequence excution flowsequence class callbackssequencer driver communication
2025-01-07 22:12:24
272
原创 UVM :uvm_sequence_item property and methods
Set_type_override:同类型替换Set_inst_override:同例化替换。
2025-01-05 22:36:25
283
原创 I2C协议和验证平台
interface不可以在class中使用,需要使用的话那必须加virtual。只需要例化,不需要new()和create()。
2025-01-05 17:03:25
280
原创 SV中uvm cmdline processor和atoi()的用法解读
• 定义:uvm_cmdline_processor 是一个继承自 uvm_report_object 的类,专门用于处理命令行参数。• 作用:它通过解析命令行参数,使得用户能够通过命令行控制仿真行为和调试 UVM 环境。
2025-01-03 17:43:30
912
原创 UVM:OOP
class需要new实现空间分配。$cast(): 强制类型转换https://blog.csdn.net/qrqdl/article/details/143976920?spm=1001.2014.3001.5502
2024-12-29 23:40:35
197
原创 systemverilog语法:assertion property
递归很少用, recursive多时钟检查并发断言, concurrent assertionassert assumecover
2024-12-29 21:51:05
262
原创 systemverilog语法:coverage
示例如下:1个covergroup可以包含一个或多个coverpoint, 每个coverpoint中的bins可以显示的定义或者工具自动生成。例如,coverpoint 为[1:0]a, 那么bins就是0,1,2,3。
2024-12-28 11:28:11
231
原创 virtual function的使用原则
建议后续函数一般都定义为virtual function,便于后期再子类中进行修改。下面的代码会调用哪一个function?
2024-12-28 09:55:08
141
原创 sv中基于mailbox的分层验证实例
知识点1:Makefile吃文件的顺序需要注意:从底层到顶层,否则会导致编译顶层时不认识里面例化的class。知识点2:编译的文件较多时,可以采用files.f的格式,具体如下图所示:知识点3:include相当于文件展开在此,此时可能导致重复定义的错误。
2024-12-28 09:28:36
228
原创 车载项目中,模块功能安全等级ASLD的含义
用盖房子比喻来聊聊QM,ASILA到ASIL D。D 类似建造医院、核电站这类关键设施。QM 类似搭建临时户外遮阳棚。A 类似搭建简易储物棚。C 类似建设小型商业楼。
2024-12-27 15:36:34
311
原创 systemverilog语法:interprocess communication
不同Initial begin…end在同一时刻执行。@需要在event事件触发之前等待,边沿阻塞。以上代码存在问题,若第一个begin…end执行快,则输出右边代码,否则与右边不一致,存在竞争很冒险。上图中:0时刻的边沿变化变为电平期待一串事件发生用下图上图T1阻塞,原来的E2已经丢失常用做法如下图:event重新定义。
2024-12-26 22:53:28
242
原创 systemverilog语法:randomization
关键字: rand randc随机生效的方式:调用randomize约束:权重:=与:/的区别条件约束约束求解约束求解时存在顺序。
2024-12-24 22:14:21
183
原创 systemverilog语法:OOP(object oriented programming)
OOP的创建object和handle是通过new()实现的。面向对象和面向过程的区别:
2024-12-23 22:05:23
199
原创 systemverilog语法:procedural statements , task andfunction
自增和自减强制类型转换大小转换符号转换for循环:在SV中运行内部定义局部变量do…while循环至少执行一次(注意while循环可以执行0次)case语句。
2024-12-22 21:17:55
162
原创 systemverilog语法:data type
记录学习的systemverilog中的数据类型,主要包含以下几种:sv中的logic是verilog中reg和wire的替代。
2024-12-22 18:04:27
197
原创 systemverilog语法:interface和program
第一步:定义interface第二部:例化interface下图为上图的补充:整个testbench environmet - top block第一步:定义一个interface,这里定义了3个。第二步:查看dut的端口信号第三步:构建顶层top利用questa编译通过。
2024-12-20 23:28:15
364
原创 questa工具的使用记录
1.创建 project 和 library 文件夹:点击菜单栏上的“File”->“New”->“Project”2.向 project中添加代码文件:点击上一步骤中的“OK”之后,会显示3.编译文件:4:运行仿真5.查看结果6.查看波形。
2024-12-18 22:54:53
272
1
原创 仿真卡死问题记录
分析代码发现tslp_en==1,里面的语句不消化仿真时间,由于forever导致仿真挂住,打开59行注释后仿真通过。第一次以为是服务器penging, bqueues查看发现服务器资源正常。bjobs -l发现job卡住。具体调试办法如下:通过ctrl+c,之后run,继续ctrl+c,继续run,发现仿真卡在代码42行。
2024-12-13 21:43:04
187
原创 Makefile学习记录(1)
Makefile在数字IC的验证阶段特别常用,下面通过编译一个简单的实例说明。注意:路径为相对tb.f的相对路径。注释:1:波形名字为:test.fsdb。2:保存层级为tb_tslp, 0代表全部保存。解释说明:5:吃的filelist的路径,相对于case仿真路径run_dir的相对路径。6:提交到autoq的集群。19:依次执行comp_opts的选项,并把log输出到comp.lpg。22:运行simv,并吃ucli的文件,文件位置在…/ucli.txt,并把log输出到sim.l
2024-12-12 19:00:17
208
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人