- 博客(62)
- 资源 (1)
- 收藏
- 关注
原创 【SV验证入门】接口在设计和验证中的使用
Modport设计用的多,验证常用clocking block。interface信号端口变化,后期维护容易。module的所有语法适合interface。interface可以实现一定的逻辑。
2025-11-30 22:10:21
205
原创 【SV验证入门】SV语言针对设计的特性
1.互斥性检查:仿真时检查case项是否互斥,如果多个case项同时匹配,会产生运行时警告。Always_comb用于组合逻辑,但上述代码缺少else,会生成锁存逻辑,发生告警。2.完备性检查:确保所有可能的值都被case项覆盖,否则会产生警告。2.如果比较涉及 x 或 z,结果可能是 x(不确定)casex(expr) // x,z或?casez(expr) // z或?// 结合unique/priority。1.逐位精确比较,包括 x 和 z 值。
2025-11-27 08:35:17
331
原创 【SV验证入门】字符串类型
该代码展示了SystemVerilog中字符串操作的两个主要功能:字符串格式化和内置函数。第一部分演示了字符串拼接和格式化,使用{}操作符和$sformatf函数。第二部分展示了字符串长度(len)和整数转字符串(itoa)等内置函数的使用,以及通过循环构建新字符串的方法。特别需要注意的是字符串索引从0开始,以及初始化空字符串的重要性。运行结果验证了字符串操作的正确性,包括"Welcome to www.rockeric.com"和"RockerIC is establishe
2025-11-20 23:11:15
166
原创 【SV验证入门】如何理解验证和所需要的数据类型
SystemVerilog是Verilog的扩展,完整支持Verilog语法功能。其主要数据类型分为四值逻辑(integer/logic/reg/net)和二值逻辑,区别在于是否能表示X/Z状态。数据类型选择需考虑三个维度:变量类型(var/net)、数据类型(二值/四值)、符号类型(有符号/无符号)。单bit信号默认无符号,建议优先使用logic类型。 SystemVerilog新增了自定义类型支持,包括枚举类型(enum)和结构体(struct)。枚举类型可直接赋值给整型,但反向需显式转换。结构体将相关
2025-11-18 21:56:37
229
原创 [UT]记录case中seq.start(sequencer)的位置变化带来的执行行为的变化
*结论:**从57行移到60行改变了sequence的执行时机,从顺序执行变为并行执行,这会影响程序的同步逻辑和时序行为。执行流程:打印 → (sequence + 等待信号) 并行执行。代码选择打开57行,注释掉60行执行,结果58行不会打印。代码选择打开60行,注释57行执行,结果58行正常打印。执行流程:sequence → 打印 → 等待信号。sequence执行时间和信号等待可以重叠。第57行位置的时序(如果取消注释)第57行(注释掉的位置):第57行(顺序执行):第60行(并行执行)
2025-09-04 22:49:10
296
原创 [UT]记录uvm_config_db的错误:get中的第二个参数设置为this
问题:“this” 是一个字符串字变量,不是有效的 UVM 路径。UVM 期望的是一个组件层次路径(如 “uvm_test_top.env.agent”),而不是关键字。问题:当第一个参数(context)是 null 时,表示从全局配置中查找,但路径 “this” 没有意义。
2025-09-03 23:09:10
326
原创 [UVM]编写一个验证vld和rdy握手的断言
摘要: 该断言用于验证握手协议中vld信号的稳定性,要求vld信号在asserted后必须保持高电平,直到rdy信号asserted完成握手。触发条件为vld高且rdy出现下降沿,之后vld需持续为高直至握手完成。采用$fell、|=>等运算符检测时序,确保协议不被违反。若断言失败,表明vld提前撤销,将导致协议错误。该检查对保证数据传输稳定性、避免死锁具有关键价值,是总线/接口验证的核心内容。(149字)
2025-08-29 21:43:00
318
原创 [python学习记录2]变量
本文介绍了Python中变量的基本概念和使用方法。变量是存储数据的标识符,通过变量名可以访问存储的值。Python变量无需声明,首次赋值即创建。支持单变量赋值(如name="女娲后人")和多变量同时赋值(如x=y=z=1或a,b=1,2)。变量命名需遵循规则:区分大小写、不能以数字开头、避免使用关键字等,推荐使用有意义的名称。文章还通过收纳箱的比喻形象说明变量与内存地址的关系,并提供了练习题加深理解。
2025-08-17 23:15:14
411
原创 [python学习记录1]python简介
摘要: Python是吉多·范罗苏姆于1989年设计的一种编程语言,以代码可读性和简洁语法著称,其设计哲学体现在《Python之禅》中。基础功能包括print()函数输出内容、灵活使用引号(单/双/三引号)定义字符串,以及通过转义字符(如\n)实现换行等格式控制。初学者需注意代码缩进规则和英文输入状态的要求。课程还通过《一闪一闪亮晶晶》歌词示例演示了转义字符的应用,并总结了引号使用规则与基础语法要点。课后练习可帮助巩固知识。 (字数:150)
2025-08-17 22:37:42
294
原创 sv代码中typedef class ***;的含义
解决循环依赖:当两个类需要相互引用时(例如类A中有类B的成员,类B中又有类A的成员),前向声明可以打破这种循环依赖。提前声明类类型:告诉编译器 ctrl_trans 是一个类类型,但此时还不定义它的具体内容。在 UVM 等验证方法学中,这种前向声明常用于事务(transaction)类的定义中。前向声明后,在正式定义该类之前,你只能使用该类型的指针或引用,不能实例化对象或访问成员。// 这里需要使用ctrl_trans类型。允许使用不完整类型:在正式定义该类之前,可以先用这个类型名声明指针或引用。
2025-07-01 23:58:58
313
原创 记录一个C语言打印的误区:无符号的数通过%d打印出现符号位的现象
• 无符号十六进制数转换为十进制数时,不会出现符号位问题。• 确保使用正确的格式说明符(如 %u)来打印无符号数,以避免误解。
2025-02-28 18:15:43
448
原创 如何解决svn st中出现!(冲突)的问题
svn status 中的!表示文件或目录在工作副本中丢失。根据具体情况,可以通过恢复、删除、移动或重新检出来解决问题。建议在使用 SVN 时遵循版本控制的最佳实践,避免手动操作导致状态混乱。
2025-02-26 18:53:18
873
原创 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
266
原创 C语言中的|=代表啥意思?
:是按位或运算符,对两个整数的二进制表示进行逐位比较,只要对应位中有一个为1,结果位就为1。例如,5 | 3 的结果是 7,因为 5 的二进制是 0101,3 的二进制是 0011,按位或运算后得到 0111,即十进制的 7。||:是逻辑或运算符,用于连接两个逻辑表达式,表示只要其中一个表达式的结果为真,整个表达式的结果就为真。代码28行:先读取HSECON1寄存器的值,与0x1按位或操作后的结果写入HSECON1的寄存器。
2025-01-24 18:47:11
2054
原创 UVM RAL Register Abstraction Layer:寄存器抽象层
topic没有RAL的TB有RAL的TBRAL介绍summary
2025-01-12 22:22:00
373
原创 UVM:callback
步骤四:集成拓展uvm callback的类到环境。步骤一:组件中嵌入callback的方法。步骤二:创建uvm callback的类。步骤三:拓展uvm callback的类。
2025-01-12 19:53:35
229
原创 UVM: TLM机制
整个TLM机制下,底层逻辑离不开动作发起者和被动接受者这个底层的模型基础,但实际上,在验证环境中,任何一个组件,都有可能成为动作的发起者,都有可能主动发起命令,且只有掌握主动权,才能更灵活的控制数据的流通,因此TLM机制下,实际用的最多的组件,也就是基于FIFO的数据通信。
2025-01-08 22:59:21
560
原创 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
280
原创 UVM: uvm_sequence
topcicsequence overviewsequence excution flowsequence class callbackssequencer driver communication
2025-01-07 22:12:24
299
原创 UVM :uvm_sequence_item property and methods
Set_type_override:同类型替换Set_inst_override:同例化替换。
2025-01-05 22:36:25
303
原创 I2C协议和验证平台
interface不可以在class中使用,需要使用的话那必须加virtual。只需要例化,不需要new()和create()。
2025-01-05 17:03:25
344
原创 SV中uvm cmdline processor和atoi()的用法解读
• 定义:uvm_cmdline_processor 是一个继承自 uvm_report_object 的类,专门用于处理命令行参数。• 作用:它通过解析命令行参数,使得用户能够通过命令行控制仿真行为和调试 UVM 环境。
2025-01-03 17:43:30
1055
原创 UVM:OOP
class需要new实现空间分配。$cast(): 强制类型转换https://blog.csdn.net/qrqdl/article/details/143976920?spm=1001.2014.3001.5502
2024-12-29 23:40:35
224
原创 systemverilog语法:assertion property
递归很少用, recursive多时钟检查并发断言, concurrent assertionassert assumecover
2024-12-29 21:51:05
295
原创 systemverilog语法:coverage
示例如下:1个covergroup可以包含一个或多个coverpoint, 每个coverpoint中的bins可以显示的定义或者工具自动生成。例如,coverpoint 为[1:0]a, 那么bins就是0,1,2,3。
2024-12-28 11:28:11
343
原创 virtual function的使用原则
建议后续函数一般都定义为virtual function,便于后期再子类中进行修改。下面的代码会调用哪一个function?
2024-12-28 09:55:08
167
原创 sv中基于mailbox的分层验证实例
知识点1:Makefile吃文件的顺序需要注意:从底层到顶层,否则会导致编译顶层时不认识里面例化的class。知识点2:编译的文件较多时,可以采用files.f的格式,具体如下图所示:知识点3:include相当于文件展开在此,此时可能导致重复定义的错误。
2024-12-28 09:28:36
269
原创 车载项目中,模块功能安全等级ASLD的含义
用盖房子比喻来聊聊QM,ASILA到ASIL D。D 类似建造医院、核电站这类关键设施。QM 类似搭建临时户外遮阳棚。A 类似搭建简易储物棚。C 类似建设小型商业楼。
2024-12-27 15:36:34
386
原创 systemverilog语法:interprocess communication
不同Initial begin…end在同一时刻执行。@需要在event事件触发之前等待,边沿阻塞。以上代码存在问题,若第一个begin…end执行快,则输出右边代码,否则与右边不一致,存在竞争很冒险。上图中:0时刻的边沿变化变为电平期待一串事件发生用下图上图T1阻塞,原来的E2已经丢失常用做法如下图:event重新定义。
2024-12-26 22:53:28
259
原创 systemverilog语法:randomization
关键字: rand randc随机生效的方式:调用randomize约束:权重:=与:/的区别条件约束约束求解约束求解时存在顺序。
2024-12-24 22:14:21
214
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅