2016-05-22 11 views
0

Ich weiß, dass es möglich ist, die Werte von Signalen und Variablen über das Verilog Programming Interface (VPI) zu ändern. Es ist auch möglich, ein benanntes Ereignis auszulösen, indem Sie eine vpi_put_value(...) darauf tun.Aufgabe oder Funktion über VPI aufrufen

Ist es irgendwie möglich, eine Funktion aufzurufen oder eine Aufgabe zu starten?

Antwort

0

Mit dem VPI können Sie keine Aufgaben oder Funktionen von C aufrufen, die DPI jedoch. Technisch erlaubt das DPI nur das Aufrufen von SystemVerilog-Routinen aus C-Routinen, die von SystemVerilog aufgerufen wurden. Die DPI verfügt über einen Import-/Exportmechanismus, der die Prozessidentitäten aller von Ihrem SystemVerilog-Code erstellten Threads beibehalten muss.

+0

Das ist nicht, was ich suche. Das Durchlaufen der DPI bedeutet, dass ich die Funktion exportieren muss. Was ich tun wollte, ist, ein Handle zu einem Klassenobjekt zu bekommen und das VPI zu benutzen, um seine Funktionen (d. H. Reflexion) aufzurufen. –

+0

Sie können keine Klassengriffe über die Sprachgrenze hinweg übergeben. Sie müssen eine Wrapperfunktion erstellen, die Sie exportieren können, und diese Funktion kann die Klassenmethode aufrufen. –