2017-07-17 141 views
0

我期待为SPI和UART总线设计总线功能模型。首先,我想了解一下我对公共汽车功能模型的看法是否正确。总线功能模型(系统Verilog)

它应该模拟总线事务,而不用担心底层的实现细节。

例如, 如果我要为SPI总线构建BFM,则设计应该能够模拟SPI上的事务,充当基于某种协议的主节点,例如从文件读取指令,然后显示它们在相应的模拟器上,

例如,将数据字节0c发送到从地址0f的通用数据传输指令(如send_write(0x0c,0x0f))应该将片选线驱动为低电平并相应地发送数据位基于SPI模式的时钟边沿,是我对BFM在这种情况下的正确理解吗?

现在我不明白这是什么,它有什么用? 在DUT和Te​​stBench之间放置BFM的位置,以及它如何帮助系统设计人员。

我也想知道是否有已经建成并测试任何参考BFMS可用来研究,

我会很感激,如果有人可以帮助我用一个例子,最好是在系统的Verilog。

+0

的一个很好的例子是任何行为的交易精确的模型提供RTL刺激作为intrpreting其输入,用Verilog或C++或任何的结果。 https://en.wikipedia.org/wiki/Bus_Functional_Model。你可以谷歌的。 – Serge

回答

1

所以不得不调研了很多关于这个,所以我想我会回答,但这里的是什么主意,

模拟总线的交易,就像读了总线功能模型(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的书中收集的。

An implementation of how a BFM could sit in between the test-bench and the Design Under Test

希望那会是什么BFMS有一个基本的了解。当然,写一篇文章并开始工作很困难,但是这些基础知识可以让你对它有一个高层次的了解。

参考书籍: Bergeron,J.(n.d.)。在System Verilog中编写TestBenches。斯普林格。

0

BFM是一个具有双重角色的VIP。它可以充当驱动程序或监视器/接收器。在驱动程序角色中,它使用接口句柄打包事务并使其在信号级别驱动,否则DUT无法接受事务(它仅具有信号接口)。作为接收方,它将通过接口句柄传输的信号解包到事务处理中,并将其发送到Scoreboard/Checker。在某些情况下,它也可以充当协议检查器。

你可以在我的经验BFM得到BFM使用这里 http://www.testbench.in/SL_00_INDEX.html