- 博客(26)
- 收藏
- 关注

原创 走进UVM:通用验证方法学快速入门指南
本文描述了一种使用UVM,由主流用户进行功能验证而不是高技能的验证专家的验证方法。它源于Doulos在向硬件设计和验证社区的工程师教授系统验证和功能验证方法方面的经验。虽然大量的研究和开发功能验证方法是正确地关注超级用户的需求,因为他们解决最困难的验证问题,我们发现大多数主流用户有不同的焦点,即,如何使高效与最小的延迟和专业编程专业知识。sv和UVM提供了机制来创建用于检查、覆盖收集和刺激生成的验证组件,并为特定的测试修改这些组件的行为。事实上,学习曲线对非专家来说可能是令人生畏的。
2024-06-26 14:31:50
5142
原创 SV:覆盖组及覆盖率数据采样方法
覆盖组(covergroup)与类相似,一次定义后可多次实例化。covergroup可以包含一个或者多个coverpoint,且全都在同一时间采集。covergroup可以定义在类中,也可以定义在interface或者module中;covergroup可以采样任何可见的变量,例如程序变量、接口信号或者设计端口。
2024-09-13 15:10:38
915
1
原创 UVM:callback机制的意义和用法
在不创建复杂的OOP层次结构前提下,针对组件中的某些行为,在其之前后之后,内置一些函数,增加或者修改UVM组件的操作,增加新的功能,从而实现一个环境多个用例。(3)从UVM callback空壳类中扩展UVM callback类;(4)在验证环境中创建并登记UVM callback实例。Callback机制在UVM验证平台,最大用处就是为了。(1)在UVM组件中内嵌callback函数或任务;(2)声明一个UVM callback空壳类;在具体行为前后嵌入callback函数或者任务。
2024-09-08 22:43:30
672
原创 数字验证:UVM的factory机制是什么
使用factory机制的第一步首先需要将类注册到工厂。这个factory是整个全局仿真中存在且唯一的"机构”,所有被注册的类才能使用factory机制。这很好理解,想要使用工厂机制,你首先得在工厂中注册这个类。注册只需要遵照范式,使用utils宏对相应对象完成注册,注意不要弄错component和object。
2024-08-27 21:25:25
2360
原创 数字验证:UVM的objection机制是什么
前文中我们了解了uvm的phase机制:数字验证:一文弄懂UVM的phase机制-优快云博客,而objection与phase之间关系紧密。objection字面的意思就是反对、异议。在验证平台中,可以通过raise_objection来提起“反对”,通过drop_objection来通知系统可以关闭验证平台。当然,一定是raise在drop之前: 在进入到某一phase时,UVM会收集此phase提出的所有objection,并且实时监测所有objection是否已经被撤销了,当发现
2024-08-26 14:13:51
1355
原创 数字验证:UVM的phase机制是什么
uvm中的phase共有9种,按照是否消耗仿真时间可以分为和。其中只有是耗时的,给DUT施加激励和检测输出也是在这个phase里完成的。UVM整体框架的运行都是从tb中的一句开始 ,那么在这句程序背后发生了什么呢?首先uvm的树根uvm_root类对象uvm_top创建了uvm_test_top,这一过程体现在仿真中就是在0时刻创建。接着引入的phase机制清晰地实现UVM树的层次例化,同时将仿真过程层次化。具体而言,uvm_top从时间和空间两个维度规定了执行顺序。
2024-08-25 19:43:42
2999
原创 UVM-打印信息机制是如何运作的
相比传统的SV使用$display函数打印消息,UVM通过冗余度级别的设置提高了仿真日志的可读性。在打印之前,UVM会比较要显示信息的冗余度级别和默认的阈值,若小于阈值则显示;反之不显示。默认的冗余度阈值是UVM_MEDIUM,所有低于其的信息都会显示出来,如UVM_LOW.
2024-08-11 23:51:08
1922
原创 UVM-config_db机制和用法
config_db机制用于在UVM验证平台间传递参数,通常成对出现,其中set相当于寄信,get相当于收信。,这样就可在tb的initial块中就进行设定了。真正将这些配置信息落实在各component,是在testbench运行过程build_phase中。
2024-07-25 00:30:47
1801
原创 数字电路-建立时间和保持时间详解
对于数字系统而言,建立时间(setup time)和保持时间(hold time)是数字电路时序的基础。数字电路系统的稳定性,基本取决于时序是否满足建立时间和保持时间。我自己在初学时一度很难理解清楚他们的概念,在这里用笔记的方式尽量详细解释建立时间和保持时间的要点。
2024-07-13 22:43:32
6765
2
原创 手撕代码-verilog分频器处理
奇数分频的处理稍微复杂一些,但是观察一下两个clk波形,也很容易找到规律:以3分频为例,慢时钟在上升沿后等两个原时钟下降沿下降;再等两个快时钟沿上升后上升。具体到3分频,可以采取的方式是将上升沿和下降沿分开来计,形成一个上升沿敏感的2分频和下降沿敏感的2分频时钟,两者相或即可得到3分频时钟。用上升沿和下降沿各产生一个7分频的时钟信号,这两个信号的距离是3.5个时钟周期,用逻辑或的形式,产生3.5分频信号。半整数分频电路不再有占空比要求,以3.5分频为例,我们可以参考奇数分频的实现方法,
2024-06-21 23:51:49
410
原创 AMBA总线笔记2-AHB协议
AHB是针对高频率高频宽及快速系统模块设计的总线,构成包括主设备master、从设备slave、仲裁器arbiter、译码器decoder。每个AHB都需要一个仲裁器和一个译码器且只有一个。
2024-06-20 23:37:00
1125
原创 典型跨时钟域(CDC)信号处理
时钟出现斩断/毛刺的原因:在时钟的高电平期间使能信号拉低,造成了斩断,如果下级电路对毛刺敏感,比如异步复位,就会影响电路工作的稳定性、可靠性,严重时会导致整个数字系统的逻辑紊乱。在应用中,可能出现一段时间我们并不需要时钟,因此可以通过门控的方式将时钟信号置0,等待需要时再拉高,这能在很大程度上降低整体电路的功耗,节省资源。因为若出现亚稳态,打一拍过后仍然有输出亚稳态的风险,但在两拍过后,这种可能性非常低,也很少有需要打三拍的情况,因此打两拍处理是最常用的。Q:为什么第二级DFF的Q非需要接入输入?
2024-06-18 21:45:57
1155
原创 AMBA总线笔记1-APB设计要点
APB一般情况下都是对寄存器的访问,或者接触一些慢速的外设SPI,I2C,WDT时才会使用,所以完全没必要使用很快的频率,一般在5MHz到50MHz之间,当然具体还要取决于应用场景。APB的外设一般挂在AHB2APB,或者AXI2APB的bridge上,AHB/AXI的的频率较高,一般情况下,APB时钟频率是AHB/AXI时钟频率的n分频。APB2没有PREADY,也就是slave必须要及时响应,但是使用APB的模块基本都是慢速设备,有可能无法及时响应,因此APB2被淘汰了,很少使用。
2024-06-16 23:43:21
1625
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人