¿Qué es un BFM, qué hace en una simulación?

4

Cuando queremos probar un sistema digital y verificar su funcionamiento, simplemente escribimos un banco de pruebas y ponemos un poco de estímulo para un DUT. Básicamente, esto implicaría asignar un valor a una señal seguida de una instrucción de espera seguida de otra asignación de señal y una instrucción de espera, y así sucesivamente, hasta que hayamos intentado todas las entradas posibles que deseamos, luego de lo cual la simulación llega a su fin.

Ahora me he topado con algo llamado BFM y quiero saber dónde encaja en el escenario. ¿Existen diferentes tipos de BFM que existen 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) contiene instrucciones para estimular las señales del DUT. Por lo tanto, en un banco de pruebas simplemente instanciaremos el BFM y su correspondiente DUT y los conectaremos. No se necesita hacer nada más y se debe simular el DUT sin que tengamos que escribir ninguna línea para las asignaciones de señales o declaraciones de espera, ¿es correcto (supongo) mi comprensión?

    
pregunta quantum231

1 respuesta

3

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 BFMs permite:

  1. Para simular un comportamiento del componente HW cuando su descripción RTL no está disponible o el componente reemplazado por BFM ya se ha verificado.
  2. Simplifique el proceso de verificación al convertir comandos simples en secuencias complicadas de señales dentro de BFM.

El # 1 se aplica al diseñar algunos módulos en paralelo: BFM es mucho más fácil de escribir y probar que un diseño RTL completo. Puede utilizar BFM en la simulación de otros módulos hasta que esté lista la RTL de los módulos reemplazados con BFM.

El # 1 también se aplica cuando el módulo representado por BFM ya se ha probado (como la IP de terceros) - no quiere perder tiempo en simular su implementación interna, sino que 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).

Puede leer este SNUG paper para una discusión mucho más amplia.

    
respondido por el Vasiliy

Lea otras preguntas en las etiquetas