BFM应该描述的是具有某种具体功能的电路。比如说,你的待测电路是一个智能卡,那他的BFM就是读卡器;那你就要根据协议,在BFM中描述出读卡器的具体行为。
写BFM就类似于写testbench了。BFM里面有需要主动触发的动作,以及被动接受的动作。主动触发的动作,你写成task,
这样方便在testcase中调用。被动触发的动作,你在BFM里面直接写成电路就可以了。当然你可以灵活处理。
以下是闲话:
我觉得你可能不知道怎末对电路写测试。
我认为测试分为两部分:1 功能分析;2 testbench编写
1 功能分析
你在编写测试之前,要仔细分析电路有哪些功能,并对这些功能分类。哪些是必须测的(must),哪些是应该测的(should),
哪些是最好测的(Nice to do)。然后,你将功能相近的feature分为一类,你可以用一个testcase来测试。
2 testbench
当testcase分类完毕,你就开始琢磨怎么写testbench了。testbench要能够提供所有激励,并且能够将激励传播到待测电路中,而且能够侦测错误。
另外,测试编写完毕了,测试通过了并不是就万事大吉了。通常,有些东西是工程师没想到的问题,而导致测试不全面。
这些就需要我们不断扩大知识面了。要特别提醒的是复位测试,复位和时钟的配合,跨时钟域的处理等。
啰嗦了一大堆,希望对你有点帮助。