首页 > 其他分享 >UVM:2.1_验证平台的组成

UVM:2.1_验证平台的组成

时间:2023-07-31 18:37:53浏览次数:48  
标签:输出 monitor reference 验证 scoreboard UVM model DUT 2.1


1.首先看下面的结构吧:

UVM:2.1_验证平台的组成_可移植性

这个结构虽然不是一个严格满足官方规范的架构,但它真的可以跑.

1). driver:产生最原始的data,发送给两部分。一个是DUT,另一个是reference model。

2)  reference model:是一个和DUT逻辑上相同的模块,可以sv,也可以通过DPI实现。我遇到的问题是,如果reference model和DUT是一个人写的,那么纯粹就是把同样的逻辑写了两遍,要错一起错,感觉意义不大了。你们是怎么处理的呢?

3)DUT:就是DUT。

4)monitor:是把DUT的输出给scoreboard作比较。严格说,monitor 和 DUT 的箭头应该是双向的。

5)scoreboard:比较reference model的输出和monitor的输出是否相同。


2:虽然上面的也能跑,但是明显不如官方的标准逼格高。小的还看不出来,但是大了,结构会很乱,扩展性rambling;接口的可移植性想都不要想;如果把这个给一个平时严格按照要求做的engineer,他会疯掉,简直没法交流。


所以比较基础的标准结构应该想下面一样:

UVM:2.1_验证平台的组成_可移植性_02

这样就把sequencer,agent的概念加进去了,更有了hierarchy的感觉。

标签:输出,monitor,reference,验证,scoreboard,UVM,model,DUT,2.1
From: https://blog.51cto.com/u_11309773/6911046

相关文章

  • UVM:5.1.6 build 阶段出现UVM_ERROR停止仿真
    1.在build_phase使用uvm_error,也会退出:2.结果:3.在end_of_elaboration_phase之前的phase中,如果出现UVM_ERROR,UVM就认为出现了致命错误,会调用uvm_fatal结束仿真。4.小设计看不出优势,大设计有用。......
  • UVM:3.4.2 重载打印信息的严重性
    1.所有warning替换成error:2.只对某个特定id起作用:3.重载严重性是没有递归函数的。4.可以在命令行中实现:<simcommand>+uvm_set_severity=<comp>,<id>,<currentseverity>,<new_severity><simcommand>+uvm_set_severity="uvm_test_top.env.i_agt.drv,my_driver,......
  • UVM:4.1.1 验证平台内部的通信
    1.两个components通信可以有如下方法:1)设置全局变量。2)设置public让外部访问。3)写一个新的class,uvm_object,用config_db(config_object)配置,被配置的components去吃这个新的class。但是都不好!!!!!!!!!!!!!!!!2.1)上面的方法如果加入阻塞和非阻塞的概念,会更复杂。2)scoreboard主动要求数据,又怎么实现......
  • UVM:5.1.8 phase 机制的必要性
    1.可以这么写:第三行在第二行后面就可以。2.将顺序降到最低,也可以这么写:3.UVM将例化放在build_phase,连接放在connect_phase,这就是phase的来源。方便用户。......
  • UVM:4.1.3 UVM 中的PORT 与 EXPORT
    1.UVM中常用的PORT有:总结到一起:1)put,get,transport都是3个。2)peek与get类似,都是主动获取数据。是有区别的。。。3)get_peek结合了get和peek的功能。4)前12个的参数就是PORT中的数据类型,后3个是request的类型和response的类型。5)如果没有指定是否阻塞,则都可以当。(都可以作只是端口......
  • UVM:6.3.3 uvm_rand_send 系列宏
    1.uvm_rand_send系列宏有如下几个:1)和uvm_send的唯一区别是它会对transaction进行随机化。2)使用前提是transaction被分配了空间,(就是uvm_create)2.uvm_rand_send系列宏及uvm_send系列宏的意义在于,如果一个transaction占用内存较大,希望前后两次发送的transaction都是用同一块内......
  • UVM:6.4.4 p_sequencer 的使用
    1.考虑如下情况,sequencer有如下变量:2.在sequence发送transaction时,必须设置此dmac和smac,sequence的body如何得到这两个值呢?1)在介绍sequence时,内部有m_sequencer,直接使用m_sequencer得到这两个变量:编译错误:因为m_sequencer是uvm_sequencr_base(uvm_sequencr的基类)类型,而不......
  • UVM:6.3.1 uvm_do系列宏
    1.uvm_do系列宏主要有以下8个:1)uvm_do_on用于显式指定那个sequencer发送此transaction。第一个是transaction指针,第二个是sequencer指针。2)使用uvm_do时,默认的sequencer就是此sequence启动时为其指定的sequencer,sequence将这个sequencer的指针放在其成员变量m_sequencer中。......
  • UVM:6.2.3 sequencer 的grab 操作
    1.grab比lock优先级更高。2.lock是插到sequencer仲裁队列的后面。3.grab则是插到前面,一发出就拥有sequencer的所有权。4.如果遇到lock,grab不会打断lock,等待lock完成。5.两个grab试图获取,和lock一样,先获得先用,用完再给另外一个。6.my_case0:7.结果......
  • SpringBoot SpringSecurity(四)短信验证码登录
    SpringSecurity默认只提供了账号密码的登录认证逻辑,所以要实现手机短信验证码登录认证功能,我们需要模仿SpringSecurity账号密码登录逻辑代码来实现一套自己的认证逻辑。通过下面步骤来完成短信验证码登录:1、短信验证码生成2、改造登录页3、添加短信验证码认证3.1定义SmsAu......