当前位置: 首页 > news >正文

IC验证面试中常问知识点总结(七)附带详细回答!!!

15、 TLM通信

15.1 实现两个组件之间的通信有哪几种方法?分别什么特点?

最简单的方法就是使用全局变量,在monitor里对此全局变量进行赋值,在scoreboard里监测此全局变量值的改变。这种方法简单、直接,不过要避免使用全局变量,滥用全局变量只会造成灾难性的后果。
稍微复杂一点的方法,在scoreboard中有一个变量,这个变量设置为外部可以直接访问的,即public类型的,在monitor中对此变量赋值。要完成这个任务,那么要在monitor中有一个指向scoreboard的指针,否则虽然scoreboard把这个变量设置为非local类型的,但是monitor依然无法改变。这种方法的问题就在于,整个scoreboard里面的所有非local类型的变量都对monitor是可见的,而假如monitor的开发人员不小心改变了scoreboard中的一些变量,那么后果将可能会是致命的。
由config机制的特性可以想出第三种方法来,即从uvm_object派生出一个参数类config_object,在此类中有monitor要传给scoreboard的变量。在base_test中,实例化这个config_object,并将其指针通过config_db#(config_object)::set传递给scoreboard和monitor。。这种方法比上面的两种方法都要好,但是仍然显得有些笨拙。一是要引入一个专门的config_object类,二是一定要有base_test这个第三方的参与。在大多数情况下,这个第三方是不会惹麻烦的。但是永远不能保证某一个从base_test派生而来的类会不会改变这个config_object类中某些变量的值。也就是说,依然存在一定的风险。

a. TLM通信的优点是是什么?SV中用的是什么通信方式?TLM通信与mailbaox的对比?
  • 通信函数可以定制化,例如你可以定制put()/get()/peek()的内容和参数,这其实比mailbox 的通信更加灵活。

  • 将组件实现了完全的隔离,可以参考红宝书图12.4,因为只有通过层次化的TLM端口连接,我们就可以很好地避免直接将不同层次的数据缓存对象的句柄进行“空中传递”。而TLM 端口按照层次的连接,虽然看起来有点繁复,但也正因为这一点,可以使得组件之间保持很好的独立性。</

http://www.lryc.cn/news/462438.html

相关文章:

  • 【前端】如何制作一个自己的网页(8)
  • Java之模块化详解
  • HTB:Knife[WriteUP]
  • MOE论文详解(4)-GLaM
  • LeetCode322:零钱兑换
  • 速盾:高防 cdn 提供 cc 防护?
  • 【大数据应用开发】2023年全国职业院校技能大赛赛题第10套
  • 【源码部署】解决SpringBoot无法加载yml文件配置,总是使用8080端口方案
  • 2010年国赛高教杯数学建模B题上海世博会影响力的定量评估解题全过程文档及程序
  • 使用nginx配置静态页面展示
  • [IOI2018] werewolf 狼人(Kruskal重构树 + 主席树)
  • snmpgetnext使用说明
  • frameworks 之 触摸事件窗口查找
  • memset的用法
  • 阿里云国际站DDoS高防增值服务怎么样?
  • open-cd中的changerformer网络结构分析
  • 太速科技-426-基于XC7Z100+TMS320C6678的图像处理板卡
  • asp.net Core 自定义中间件
  • 掌握 C# 设计模式:从基础到依赖注入
  • 根据json转HttpClient脚本
  • 如何将LiDAR坐标系下的3D点投影到相机2D图像上
  • JAVA就业笔记6——第二阶段(3)
  • 02.04、分割链表
  • Excel 中根据患者的就诊时间标记病例为“初诊”或“复诊”
  • 遇到“mfc100u.dll丢失”的系统错误要怎么处理?科学修复mfc100u.dll
  • [Linux] 逐层深入理解文件系统 (1)—— 进程操作文件
  • RT-Thread 互斥量的概念
  • 6.计算机网络_UDP
  • Windows应急响蓝安服面试
  • PCL 点云配准-4PCS算法(粗配准)