最近在看《基于VerilogHDL……设计》这本书时,书上的Testbench这一部分中,讲到了关于总线功能模型BFM(Bus Function Model),不是很理解,于是乎在网上找了找相关的知识,在这里跟大家分享一下:
在软件设计中,经常需要将一些功能实现的细节用函数封装起来,这样上层需要某项功能时直接调用函数即可,无需关心底层的具体实现。Testbench在设计思想上更接近于软件,因此在设计中也常采用这种方法,将底层的接口时序用某种方式封装起来,对上层具体应用来说它只需要调用相关的任务,而不用了解底层的细节,就可以实现底层的接口时序。BFM的核心也就是封装接口时序。

以下一段来自百度百科:
BFM应该描述的是具有某种具体功能的电路。比如说,你的待测电路是一个智能卡,那他的BFM就是读卡器;那你就要根据协议,在BFM中描述出读卡器的具体行为。写BFM就类似于写testbench了。BFM里面有需要主动触发的动作,以及被动接受的动作。主动触发的动作,你写成task,这样方便在testcase中调用。被动触发的动作,你在BFM里面直接写成电路就可以了。当然你可以灵活处理。

BFM接收被测对象的输出信号,同时也向被测对象提供输入信号,核心是模拟实际芯片的接口行为。

以下内容来自CSDN某博主(感谢):
说到BFM,就不得不提验证,只有在验证前提下说bfm才有意义。
我们知道,验证就是送激励给DUV(design under verification),然后对DUV输出的信号(或内部信号)进行分析。根据这一句话,我们可以知道数据流大概是下面的样子:
“激励产生”-》“送激励”-》DUV-》“接收信号”-》“分析信号”
那么,BFM就是“送激励”和“接收信号”。在上面的数据流中,带有时序的部分,就是DUV和“送激励”、“接收信号”三部分。说白了,BFM,最大特点就是带有时序的模块,1拍1拍的把数据送给DUV,或者1拍1拍的把数据从DUV接收下来。BFM分为发送bfm和接收bfm。
对于发送bfm,将产生好的激励,在时钟控制下送给DUV,这里的激励,是通过没有时钟的模块产生的,用verilog,c,都可以。
对于接收bfm,将来自DUV的数据事先存在一个大的memory或者reg中,然后在某个时刻触发分析数据的事件,调用“分析信号”模块,从而达到分析DUV输出数据的目的。
“激励产生”和“分析信号”都是不带时序的,如果用verilog语言来写,最大的特点就是要用许多task来完成。“分析信号”也是类似的。

总线功能模型 BFM相关推荐

  1. HLS(一)Vivado高层次综合概述

    目录 1.什么是FPGA? 1.1 简介 1.2 架构 1.3 FPGA并行方式与处理器对比 2.硬件设计基本概念 2.1 时钟频率 2.2 延迟 2.3 吞吐率 2.4 存储布局 3.高层次综合 3 ...

  2. SystemVerilog学习-02-数据类型

    Verilog数据类型 Verilog语言提供两种基本的数据类型,即变量类型(variables)和线网类型(nets),这两种类型都是四值逻辑,即可表示0.1.X和Z值. reg,integer和t ...

  3. 荐读:Xilinx ZYNQ 动手实操演练

    今天给大侠带来Xilinx ZYNQ 动手实操演练,话不多说,上货.当我们一提到 Xilinx ZYNQ,大家脑海大多数就会浮现一个描述的词汇,高端,其实这个词很贴切的形容了Zynq系列产品,Xili ...

  4. 处女项目后关于IC验证经验的总结

      http://www.cnblogs.com/jyaray/archive/2011/05/11/2043091.html   完整的.详细的设计规范是验证工作的重要起点. 验证工作根据设计规范( ...

  5. 点对点信道互连以太网实验_汽车以太网 – 引领汽车IVN向多速以太网过渡

    1.概述 汽车行业已经成功地基于开放IEEE标准引入了用于车载网络(IVN)的以太网. 在OPEN联盟SIG和IEEE 802.3工作组的推动下,这些标准旨在开发一种更简单但功能更强大的汽车电气/电子 ...

  6. verilog经验谈

    规范很重要 工作过的朋友肯定知道,公司里是很强调规范的,特别是对于大的设计(无论软件 还是硬件),不按照规范走几乎是不可实现的.逻辑设计也是这样:如果不按规范做的 话,过一个月后调试时发现有错,回头再 ...

  7. 这是一篇很好的文章,学verilog的可以好好看看

    规范很重要 工作过的朋友肯定知道,公司里是很强调规范的,特别是对于大的设计(无论软件 还是硬件),不按照规范走几乎是不可实现的.逻辑设计也是这样:如果不按规范做的 话,过一个月后调试时发现有错,回头再 ...

  8. Josh‘s Notes: SystemVerilog 验证 (Part 1 — 验证导论)

    文章目录 1. 验证流程 1.1. 不同层次上的测试 1.2. 验证计划 2. Testbench 的基本功能 3. 定向测试 4. 方法学基础 5. 约束下的随机激励 6. 我们的随机化对象是什么 ...

  9. verilog学习五点经验分享 http://bbs.21ic.com/icview-402231-1-1.html

    1.规范很重要 工作过的朋友肯定知道,公司里是很强调规范的,特别是对于大的设计(无论软件还是硬件),不按照规范走几乎是不可实现的.逻辑设计也是这样:如果不按规范做的话,过一个月后调试时发现有错,回头再 ...

  10. FPGA工程师的个人工作经历总结

    很早之前就想对这几个月工作经历写的东西,一是作为自己的总结,二是自己也很想将自己这段时间的一些经历和大家分享一下,希望对初学者而言能使得他们能少走一些弯路.只是公司里的事情很多,最近经常加班,所以一直 ...

最新文章

  1. CSS布局基础之二认识Viewport
  2. docker部署项目 入门版
  3. JavaScript获取当前日期时间
  4. 【最简代码】1076 Wifi密码 (15分)_8行代码AC
  5. 论文浅尝 | 为基于知识库的问答构建形式查询生成
  6. group_concat函数使用
  7. sql数据库查询聚合函数_如何使用SQL Server数据质量服务确保正确的数据聚合
  8. 在Java中实现在线语音识别
  9. 安卓动画全解:补间动画(视图动画)、布局动画、属性动画、逐帧动画。动画Animation属性、Alpha属性、Scale属性、Translate属性、Rotate属性,动画集AnimationSet
  10. ElasticSearch 安装与API的使用
  11. 【Elasticsearch】高亮查询 highlighting (一)
  12. 解决sns.load_dataset()加载失败问题github下载缓慢问题
  13. excel熵值法计算权重_如何用熵值法确定指标权重?
  14. java指定浏览器_java程序中指定某个浏览器打开的实现方法
  15. PYTHON对接验证码短信接口DEMO示例
  16. Excel从入门到精通--基础篇
  17. 电脑连上Jink后打开Altium Designer弹出Failed to measure TotalIRLen(6)
  18. 维基百科--文件系统大全
  19. HOJ 1276 士兵队列训练问题(stl, 水题)
  20. 【Android Studio学习】第一篇、制作一个拥有登录和注册功能的简易APP

热门文章

  1. 【博闻强记】java来发送邮件
  2. 计算机课堂活跃小游戏,几个课堂小游戏(能活跃课堂气氛)
  3. LayoutInflater.inflate()方法的深入理解
  4. 云服务到底是什么东西?
  5. Python selenium模块对网页进行截屏保存图片 easyocr模块识别提取图片文字
  6. keil出现蓝色小箭头
  7. 微信好友只有昵称没有微信号_只知道昵称怎么查他的微信号
  8. 《指弹:Dream Catcher》
  9. 【c语言】(函数)利用麦克劳林公式求sinx,cosx,tanx
  10. excel部分网格线不见了_excel打印技巧(八)