Wenn wir ein digitales System testen und seine Funktionsfähigkeit überprüfen möchten, schreiben wir einfach eine Testbench und geben einen Stimulus für ein DUT ein. Grundsätzlich würde dies beinhalten, einem Signal einen Wert zuzuweisen, gefolgt von einer Warteanweisung, gefolgt von einer weiteren Signalzuweisung und einer Warteanweisung und so weiter, dies geschieht, bis wir alle möglichen Eingaben ausprobiert haben, die wir wollen, wonach die Simulation ihr Ende erreicht.
Jetzt bin ich auf etwas namens BFM gestoßen und möchte wissen, wo es in das Szenario passt. Gibt es verschiedene Arten von BFMs, die für verschiedene Arten von Tests existieren, da es (gelegentlich) Dutzende von Signalen auf einem DUT geben wird? Was ich davon erwarte, ist, dass ein BFM (was für Bus Functional Model steht) Anweisungen zum Stimulieren der Signale des DUT enthält. Daher werden wir in einer Testbench einfach das BFM und sein entsprechendes DUT instanziieren und sie verbinden. Es muss nichts weiter getan werden und das DUT soll simuliert werden, ohne dass wir Zeilen für Signalzuweisungen oder Warteanweisungen schreiben müssen, ist mein Verständnis (Vermutung) richtig?
BFMs sind SW-Module, die die Funktionalität einer HW-Komponente kapseln (Verhaltensmodell). BFMs sind nicht synthetisierbar.
Der Einsatz von BFMs ermöglicht:
#1 trifft zu, wenn ein paar Module parallel entworfen werden – BFM ist viel einfacher zu schreiben und zu testen als ein komplettes RTL-Design. Sie können BFMs in der Simulation anderer Module verwenden, bis die RTL der durch BFMs ersetzten Module fertig ist.
Nr. 1 gilt auch, wenn das von BFM dargestellte Modul bereits getestet wurde (z. B. IP von Drittanbietern) - Sie möchten keine Zeit mit der Simulation seiner internen Implementierung verschwenden, sondern benötigen nur ein Modell, das das Verhalten dieser IP "nachahmen" kann während weniger Rechenzeit verbraucht wird.
Nr. 2 besagt, dass BFMs verwendet werden könnten, um einfache Befehle (wie write(pcie_prim, mem_rd32, data, ...)
) in eine (komplizierte) Folge von Signalzuweisungen zu übersetzen, die ein komplexes Protokoll (wie PCIe) darstellen.
Sie sind herzlich eingeladen, dieses SNUG-Papier für eine viel breitere Diskussion zu lesen .
Benutzer36129
user_1818839
quanten231