Was ist Backdoor-Speicherzugriff?

Es gibt einen Begriff in der HDL-Simulation/-Verifizierung, der als "Backdoor-Speicherzugriff" bezeichnet wird.

Ich habe das schon oft gehört, bin mir aber nicht sicher, wie das umgesetzt wird.

Außerdem gibt es einige Referenzen für dieses Konzept.

Könnten Sie einige der genannten Referenzen verlinken?
Backdoor bedeutet für mich jeder unbeabsichtigte Zugriffspfad, es greift keinen bestimmten Mechanismus heraus.
Dieser Link ist tot.
Speicher-Backdoor wurde im uvm-Benutzerhandbuch auf Seite 108 erwähnt, hier ist der Link
Hat es mit Video-RAM zu tun, das manchmal zwei Busse hat? Eine für reguläre Lese-/Schreibvorgänge (CPU-Seite) und eine für den schnellen Zugriff durch die DACs.
Video-RAM mit zwei Bussen sollte von jedem, der den richtigen Jargon spricht, als "dual ported" bezeichnet werden. Der Begriff „Backdoor“ wird mit gezielten Sicherheitslücken in Verbindung gebracht.

Antworten (1)

Diese Frage brauchte wirklich etwas mehr Kontext als nur "Wie funktioniert der Backdoor-Speicherzugriff?". Ein Link zu einem 198-seitigen Dokument, das wir lesen können, um zu erraten, was Sie fragen, ist nicht wirklich förderlich, um gute Antworten zu erhalten.

Selbst ein grundlegender Kontext wie "im Kontext der HDL-Simulation", der anscheinend das ist, was Sie fragen, würde helfen.

Davon abgesehen: Wenn Sie ein System simulieren (möglicherweise eine CPU testen, die Sie auf einem FPGA implementiert haben), müssen Sie die CPU mit dem externen Speicher in Ihrer Testbench verbinden. Das Speichermodell kann wie folgt aussehen:

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;

und Sie könnten dieses Speichermodell selbst schreiben oder es von einem Anbieter herunterladen.

Nun wird das Laden eines großen Programms über diese Ports viel (vergeudete) Simulationszeit in Anspruch nehmen. Dasselbe gilt für das Speichern der Programmausgabe zur späteren Analyse.

Nichts hindert Sie jedoch daran, dem Speichermodell weitere Verbindungen hinzuzufügen, die vollständig von den tatsächlichen Pins auf dem physischen Speicher getrennt sind und direkt mit Ihrer Testbench verbunden sind.

Beispielsweise könnten Sie eine Backdoor-Schnittstelle hinzufügen, die aus den Ports besteht

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

und geeignetes Verhalten (Lesen einer Binärdatei) in der SRAM-Architektur. Dann können Sie in der Testbench (vorausgesetzt, dass Progmem_Filename mit dem richtigen Filename-Port verbunden ist) schreiben

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

und Ihr Programmspeicher ist geladen und betriebsbereit.