Frage

Ich habe eine Verilog-basierte Testbank, eine Schnittstelle zu ‚C-Quelle DPI. Jetzt mit DPI Ich plane, meine ganze Firmware zu schreiben. Um dies zu tun Ich brauche 3 Dinge

  • Register lesen
  • Register schreiben
  • Die Interrupt-Handler Wie ich verstehe, Register liest und schreibt sind Aufgaben, die ich brauche von dem RTL Prüfstand zu exportieren. Und Interrupt-Handler (I implementiert durch eine Funktion von ‚C Import).

Ich habe die meisten die Kadenz Dokumentation und fand keine nützlichen Hinweise. Ich habe auch mit Kadenz Benutzer-Community registriert, aber es scheint, dass ich nicht fragen können, bis sie meine Anmeldung genehmigen.

Für den Fall, jemand ist sich dessen bewusst, würde ihre Hilfe zu schätzen wissen.

War es hilfreich?

Lösung

Eigentlich dachte ich, es so etwas wie diese aus.

//--From RTL ---
export "DPI" task reg_read;

task reg_read;
   input int nAddr;
   output int nVal;

 // -- read implementation --

endtask

// -- From C code
extern void reg_read (int nAddr, int *pVal);

void test_read (void)
{
   int nRegVal;

   // Dummy checking !!
   reg_read (0x100, &nRegVal);
}

// -- Again in RTL --
import "DPI" context task test_read ();

Dies funktioniert für mich ncverilog verwendet wird.

Andere Tipps

Cool ... Ich schrieb sogar einen Artikel zu diesem Thema. Link

Das Papier tatsächlich exportiert Register liest und schreibt und Sachen über die DPI und dann ein TCL-Interpreter ihn hinzufügen, so dass Sie TCL verwenden können Sie Ihre SIM-Karte zu steuern. Dies war etwas, das Labor Gecken geliebt, da alle ihre Werkzeuge sind bereits in Tcl.

Sie können folgen Sie einfach den Anweisungen, um Ihre Funktion von C-Aufrufe zu integrieren über die DPI SV, und dann zu stoppen, wenn die TCL Sachen ins Spiel kommen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top