所以不得不调研了很多关于这个,所以我想我会回答,但这里的是什么主意,
模拟总线的交易,就像读了总线功能模型(BFM)的思考和WRITE,减少了对同一时间进行时序分析的测试平台的开销。对BFM有更多的解释,BFM通常通过使数据更专注于减少测试平台的工作。
好吧,这是一个高层次的答案,让我们深入一点,BFM的
觉得作为测试平台块内,它位于整个块,当测试台需要执行的任务例如,他想写一个特定的地址,它要求BFM在该地址写入BFM,这是一个黑盒子,用于测试台,同时负责处理时间。它可以由可以由测试台加载的文件驱动,也可以由测试台用于执行事务的一堆任务来驱动。
被测设计(DUT)对BFM交易的响应是测试人员对设计感兴趣的。有人可能会争辩说,BFM可能会根据DUT而改变,这就是每个人所说的更好的BFM的区别。
如果BFM可以有一个可以加载的配置向量,以根据DUT规范进行初始化和行为,那么它可以帮助测试其他设计。
此外,BFM可以定义为抽象的虚拟函数(在SV中),它可以基于DUT进一步具体实现。
virtual class apb_bfm;
pure virtual task writeData(int unsigned addr, int unsigned data);
pure virtual task readData (int unsigned addr, output int unsigned data);
pure virtual task initializeSignals();
endclass
上面BFM抽象是对于APB万事达,即确实提到的,每个这些的低级别的细节必须由接口被封装并以具有时钟的健全性以及计时块的任务抽象接口类型。我在本节中引用了一本书,它精美地描述了如何构建测试平台和设计事务级模型(TLM)。阅读这篇文章将使你很好地理解如何设计一个。
另外这paper关于抽象BFMs提供了一个好的想法,如何BFM应该建模为一个好的设计。 APB示例源自此。
以下关于如何将BFM放置在测试框架中的图像是我可以从Bergeron的书中收集的。

希望那会是什么BFMS有一个基本的了解。当然,写一篇文章并开始工作很困难,但是这些基础知识可以让你对它有一个高层次的了解。
参考书籍: Bergeron,J.(n.d.)。在System Verilog中编写TestBenches。斯普林格。
的一个很好的例子是任何行为的交易精确的模型提供RTL刺激作为intrpreting其输入,用Verilog或C++或任何的结果。 https://en.wikipedia.org/wiki/Bus_Functional_Model。你可以谷歌的。 – Serge