Was ist ein BFM, was macht es in einer Simulation?

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?

siehe Bedienungsanleitung? Prüfstandsgeräte enthalten alle sehr herstellerspezifische Dinge. Ich persönlich habe noch nie von BFM gehört, muss etwas Spezifisches für Ihre Marke von Siggen sein.
Bus-Funktionsmodell. Imitiert einen Busstandard in der Simulation, hat nichts mit einem Siggen zu tun.
OK, ich bin in Altera Qsys auf BFM gestoßen.

Antworten (1)

BFMs sind SW-Module, die die Funktionalität einer HW-Komponente kapseln (Verhaltensmodell). BFMs sind nicht synthetisierbar.

Der Einsatz von BFMs ermöglicht:

  1. Um ein Verhalten einer HW-Komponente zu simulieren, wenn ihre RTL-Beschreibung entweder nicht verfügbar ist oder die durch BFM ersetzte Komponente bereits verifiziert wurde.
  2. Vereinfachen Sie den Verifizierungsprozess, indem Sie einfache Befehle in komplizierte Signalfolgen innerhalb von BFM umwandeln.

#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 .

Der Link zum Papier funktioniert nicht.