自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 UVM的高级用法

一般大家项目中都是用UVM_INFO/UVM_ERROR/UVM_FATAL这三个比较多,也没有太注意ID,verbosity可能就是UVM_LOW、UVM_HIGH两种在使用,其实ID是很重要的,而且UVM中也提供了很多task,可以将制定hier下的打印替换可以把UVM_INFO替换成UVM_ERROR,或者把UVM_LOW替换成UVM_HIGH,甚至提供了把制定ID的信息通过文件导出,之前自己都是用的SV的语法来实现,所以这里把相关的UVM的message的高级用法总结下。

2025-08-23 23:39:18 718

原创 UVM-p_sequencer

我们一般会定义一个virtual_sequencer,然后在virtual sequencer中例化各个vsqr,然后在env中连接到virtual_sequencer,最后把virtual_sequencer声明成virtual_base的p_sequencer,这样所有的sequence都可以通过p_sequencer访问和使用了。但是由于m_sequencer的基类是uvm_sequencer,而my_sequence对应的sequencer为my_sequencer。

2025-08-17 23:11:46 156

原创 UVM面试问题总结

UVM RAL是一个用于对寄存器进行抽象建模的库,它提供了一个高层次的抽象来描述寄存器文件,并支持前后门访问,简化寄存器和存储器的验证,自动生成寄存器模型代码,支持寄存器读写操作,提供影子模型跟踪寄存器的期望值和实际值支持预测和自检。所以在使用上,需要定义一个my_sequencer p_sequencer ,然后使用$cast(p_sequencer, m_sequencer), 其中uvm_declare_p_sequencer就是这样做的?4、什么是UVM RAL模型,为什么需要它?

2025-08-17 23:04:14 278

原创 SV-virtual的用法

构造函数和静态方法除外。多态:同名方法不同实现。

2025-07-16 08:40:14 367

原创 SV- modport

systemverilog中,interface里边,modport指定的信号方向,是相对modport自身而言的版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.youkuaiyun.com/hh199203/article/details/119607305。

2025-07-16 00:09:57 690

原创 UVM-sequence

seqr中main_phase指向seq 中的starting_phase。

2025-07-14 08:41:10 235

原创 UVM-objection

之前理解phase是用于component,但是objection是phase用于控制的,但是并不是只有component才能使用objection,任何能访问uvm phase句柄的类都可以操作objection。starting_phase是uvm_sequence_base类中的成员变量,类型为uvm_phase指针,它自动指向sequence启动时sequencer当前main phase。方法启动时,UVM自动将‌。‌注入sequence的。以sequence为例。当sequence通过。

2025-07-11 08:45:30 176

原创 UVM-phase

特性uvm_object创建方式动态创建(new/create)build_phase自动创建销毁方式显式销毁/GC回收仿真结束自动销毁存在周期临时性整个仿真周期phase机制无有(自动执行)层次结构无通过parent构建典型应用function->->build_phase(自顶向下,以driver为例,必须agent之后,如果在agent之前使用,没有create,会导致指针空转)->connect_phase(要求子组件存在,再一级一级连接起来)

2025-07-09 08:40:28 861

原创 UVM-connection&communicate

Higher priority use.connect priority : PORT > EXPORT > IMPmust use IMP as the terminate point

2025-07-09 08:14:27 102

原创 UVM-event

【代码】UVM-event。

2025-07-09 08:10:56 259

原创 SVA-first_match(AI介绍,未仿真确认)

‌场景‌‌无风险‌‌使用后效果‌时间窗检查单事件多次触发✅ 仅首次有效匹配OR多分支逻辑多分支并发导致重复成功✅ 仅选取首个满足的分支重复操作符连续区间重叠匹配✅ 精准定位首次完整序列异步复位初始化多次满足条件误判✅ 锁定复位后首次有效点。

2025-07-08 08:08:20 359

原创 SVA-matched

任何时候如果一个序列定义了多个时钟,构造“matched”可 以用来监测第一个子序列的结束点。而信号“a”是根据时钟“clk1”来采样的。信号“b”则是根据时钟“clk2”来采样的。属性 p_match 验证在给定的时钟“clk2”的上升沿,如果序列 s_a。使用“##0”会产生混淆,即在信号“a”匹配后究竟哪个时 钟信号才是最近的时钟。这将引起竞争,因此不允许使用。当在一个序列中使用了多个时 钟信号时,只允许使用“##1”延迟构造。##2 也不允许,因为不可能同步到时钟“clk2”的最近的上升沿。

2025-07-07 08:25:46 498

原创 SVA-基本用法

禁止在两个不同时钟驱动的序列之间使用交叠蕴含运算符。因为先行算子的结束和后续算子的开始重叠,可能引起竞争的情 况,这是非法的。SVA 允许在使用蕴含的属性的后续算子中使用“if/else”语句。

2025-07-07 08:05:04 203

原创 SVA-ended/intersect

序列 s15a 和 s15b 是两个需要多个时钟周期来完成的简单序 列,属性 p15a 检查序列 s15a 和序列 s15b 满足两者间隔一个时钟 周期的延迟分别匹配检验。属性 p15b 检查相同的协议,但是使用 了关键词“ended”。在这种情况下,两个序列在结束点同步。由 于使用了结束点,两个序列间加上了两个时钟周期的延迟,来保 证断言检验的协议与 p15a 相同。“intersect”运算符和“and”运算符很相似,它有一个额外 要求。两个序列必须在相同时刻开始且结束于同一时刻。

2025-07-07 08:04:00 200

原创 SVA-带参数

rst_n)

2025-07-07 00:59:25 103

原创 SVA-within用法

这个写法的问题在于,假如enable高电平期间,data只changed了2次,永远不会报错,就算enable拉低了。在enable期间,data信号至少toggle了3次。

2025-07-07 00:55:56 266

原创 SVA用法-throughout

b) ##1 (c[->3]) ##1 (a&&b))包成一个sequence abc_seq。经典例子,这个是语法书上的例子,相当于在start下降沿开始检测,在后续sequence期间内保持为低。

2025-07-07 00:38:08 366

空空如也

空空如也

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

TA关注的人

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