¿Qué es el acceso de memoria de puerta trasera?

1

Hay un término en la simulación / verificación HDL llamado "acceso de memoria de puerta trasera".

He escuchado esto muchas veces aunque estoy No estoy seguro de cómo se implementa esto.

Además, hay algunas referencias para este concepto.

    
pregunta e19293001

1 respuesta

5

Esta pregunta realmente necesitaba un poco más de contexto que simplemente "¿Cómo funciona el acceso a la memoria de puerta trasera?". Un enlace a un documento de 198 páginas para que podamos leer, a fin de adivinar lo que está pidiendo, no es realmente propicio para obtener buenas respuestas.

Incluso un contexto básico como "en el contexto de la simulación HDL", que parece ser lo que estás preguntando, ayudaría.

Dicho esto: cuando simules un sistema (tal vez probando una CPU que hayas implementado en un FPGA) necesitarás conectar la CPU a una memoria externa en tu banco de pruebas. El modelo de memoria puede verse como:

entity SRAM is
   port (
      Address : in    unsigned(15 downto 0);
      Data    : inout std_logic_vector(15 downto 0);
      Wr_n    : in    std_logic;
      OE_n    : in    std_logic;
      CS_n    : in    std_logic
   );
end SRAM;

y puede escribir este modelo de memoria usted mismo o descargarlo de un proveedor.

Ahora, cargar un programa grande a través de estos puertos llevará mucho tiempo de simulación (desperdiciado). Ditto guardar el resultado del programa para su posterior análisis.

Sin embargo, no hay nada que le impida agregar más conexiones al modelo de memoria, que son completamente independientes de los pines reales en la memoria física, y se conecta directamente a su banco de pruebas.

Por ejemplo, podría agregar una interfaz de puerta trasera que consiste en los puertos

  Filename : in String;
  Load     : in std_logic;
  Save     : in std_logic;

y comportamiento adecuado (leer un archivo binario) en la arquitectura SRAM. Luego, en el banco de pruebas (suponiendo que Progmem_Filename esté conectado al puerto de nombre de archivo correcto) puede escribir

  Progmem_Filename <= "selftest.elf";
  Load             <= '1';
  wait for 1 ns;
  Load             <= '0';

y la memoria de tu programa está cargada y lista para ejecutarse.

    
respondido por el Brian Drummond

Lea otras preguntas en las etiquetas