6

Mam wersję testową opartą na Verilog, połączoną ze źródłem' C 'za pomocą DPI. Teraz używając DPI zamierzam napisać całe moje oprogramowanie. Aby to zrobić, muszę 3 rzeczyEksportowanie zadań do 'C przy użyciu DPI

  • rejestr odczytany
  • Rejestr Zapis
  • obsługi przerwań Jak rozumiem, rejestr odczytu i zapisu są zadania, które trzeba wyeksportować z RTL laboratoryjnej. I Obsługa przerwań (zaimplementowałem przez zaimportowanie funkcji z 'C).

Sprawdziłem większość dokumentacji kadencji i nie znalazłem przydatnych wskazówek. Zarejestrowałem się również w społeczności użytkowników kadencji, ale wydaje się, że nie mogę zadać pytania, dopóki nie zatwierdzą mojej rejestracji.

Na wypadek, gdyby ktoś był tego świadomy, byłby wdzięczny za pomoc.

+1

Co się dzieje z apostrofem przed C? Czy jest to język odrębny od C? – unwind

Odpowiedz

3

Właściwie to wymyśliłem coś takiego.

//--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(); 

Działa to dla mnie przy użyciu ncverilog.

2

Fajnie ... rzeczywiście napisałem artykuł na ten temat. link

Papier faktycznie eksportuje rejestr czyta i zapisuje dane w DPI, a następnie dodaje do niego interpreter TCL, aby można było używać TCL do kontrolowania swojej karty SIM. To było coś, co labourzy kochają, ponieważ wszystkie ich narzędzia są już w Tcl.

Możesz po prostu postępować zgodnie z instrukcjami, aby zintegrować swoje wywołania funkcji z C do SV przez DPI, a następnie zatrzymać się, gdy elementy TCL wejdą do gry.

+0

Podany link jest nieprawidłowy. –

+1

Huh ... wygląda na to, że IC Journal już nie istnieje. Oto link do przeglądu tego, jak to działa, ale na dość wysokim poziomie: https://www.eejournal.com/article/20080826_vmm/ Jeśli uda mi się znaleźć oryginalny artykuł opublikowany w dowolnym miejscu, wrócę i zostaw tutaj link. – SDGator