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

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

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

Además, hay algunas referencias para este concepto.

¿Podría vincular algunas de dichas referencias?
puerta trasera para mí significa cualquier ruta de acceso no intencionada, no identifica ningún mecanismo en particular.
Ese enlace está muerto.
La puerta trasera de memoria se mencionó en la página 108 de la guía del usuario de uvm aquí está el enlace
¿Tiene que ver con la RAM de video que a veces tiene dos buses? Uno para lecturas/escrituras regulares (lado de la CPU) y otro para acceso rápido por parte de los DAC.
La RAM de video que tiene dos buses debe llamarse "doble puerto" por cualquiera que hable la jerga adecuada. El término "puerta trasera" se asocia con agujeros de seguridad deliberados.

Respuestas (1)

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 lo leamos, con el fin de adivinar lo que está preguntando, 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á preguntando, ayudaría.

Dicho esto: al simular un sistema (tal vez probando una CPU que haya implementado en un FPGA), deberá conectar la CPU a la memoria externa en su banco de pruebas. El modelo de memoria puede parecerse a:

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 requerirá mucho tiempo de simulación (desperdiciado). Lo mismo ocurre con el almacenamiento de la salida del programa para un análisis posterior.

Sin embargo, no hay nada que le impida agregar más conexiones al modelo de memoria, que están completamente separadas de los pines reales en la memoria física y se conectan 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 (lectura de un archivo binario) en la arquitectura SRAM. Luego, en el banco de pruebas (suponiendo que Progmem_Filename esté conectado al puerto Filename correcto) puede escribir

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

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