Cuando queremos probar un sistema digital y verificar su funcionamiento, simplemente escribimos un banco de pruebas y ponemos algún estímulo para un DUT. Básicamente, esto implicaría asignar un valor a una señal seguido de una declaración de espera seguida de otra asignación de señal y una declaración de espera y así sucesivamente, esto se hace hasta que hayamos probado todas las entradas posibles que queremos, después de lo cual la simulación llega a su fin.
Ahora me he encontrado con algo llamado BFM y quiero saber dónde encaja en el escenario. ¿Existen diferentes tipos de BFM para diferentes tipos de pruebas, ya que habrá (ocasionalmente) docenas de señales en un DUT? Lo que espero es que un BFM (que significa modelo funcional de bus) contenga instrucciones para estimular las señales de DUT. Por lo tanto, en un banco de pruebas simplemente instanciaremos el BFM y su DUT correspondiente y los conectaremos. No es necesario hacer nada más y el DUT se simulará sin que tengamos que escribir ninguna línea para asignaciones de señales o declaraciones de espera, ¿es correcto mi entendimiento (suposición)?
Los BFM son módulos SW que encapsulan la funcionalidad de un componente HW (modelo de comportamiento). Los BFM no son sintetizables.
El empleo de BFM permite:
El n.° 1 se aplica cuando se diseñan algunos módulos en paralelo: BFM es mucho más fácil de escribir y probar que un diseño RTL completo. Puede usar BFM en la simulación de otros módulos hasta que el RTL de los módulos reemplazados con BFM esté listo.
El n.° 1 también se aplica cuando el módulo representado por BFM ya se ha probado (como una IP de terceros); no desea perder el tiempo simulando su implementación interna, solo necesita algún modelo que pueda "imitar" el comportamiento de esta IP. mientras consume menos tiempo computacional.
#2 dice que los BFM podrían emplearse para traducir comandos simples (como write(pcie_prim, mem_rd32, data, ...)
) en una secuencia (complicada) de asignaciones de señales que representan algún protocolo complejo (como PCIe).
Le invitamos a leer este documento SNUG para una discusión mucho más amplia.
usuario36129
usuario_1818839
cuántico231