Domanda

Mi è stato assegnato il compito di verificare alcuni codici RTL basati su verilog. Ora, codificare il banco di prova RTL usando verilog sembra essere molto difficile (per me). Quindi vorrei provare una delle seguenti. - Provare a fornire un'interfaccia PLI all'RTL e quindi invocare le funzioni "C" per i test - Utilizzo del sistema 'C per l'interfacciamento delle funzioni' C

PS: ho già un ampio codice C che è stato utilizzato per testare il modello comportamentale. Sono nuovo nel mondo della programmazione hardware. Qualsiasi suggerimento sarebbe molto apprezzato.

È stato utile?

Soluzione

Se hai già un codice C esteso che è stato utilizzato per testare il modello comportamentale, la cosa da fare è semplicemente aggiungere un'interfaccia PLI (o DPI) che ti permetterà di chiamare quel codice c da verilog.

SystemC è fondamentalmente C ++ con molte classi che ti permettono di modellare HW. Non vedo come trarrai beneficio dall'apprendimento di SystemC per l'attività che stai tentando poiché hai già un modello C disponibile sul quale puoi testare l'HW. L'apprendimento di SystemC è probabilmente eccessivo per quello che stai cercando di fare.

FYI. Se vuoi imparare qualcosa che oggi è molto utilizzato nel settore, ti suggerirei di imparare SystemVerilog. Al giorno d'oggi SystemVerilog, sostanzialmente verilog con un sacco di funzionalità di linguaggio software di alto livello integrate; insieme a "VMM", una "metodologia di verifica" (vale a dire un mucchio di librerie), sembra essere di gran moda nella terra della verifica hardware.

Altri suggerimenti

Alla domanda non è così facile rispondere senza conoscere il tuo DUV (dispositivo in fase di verifica) o il codice C che hai. Hai bisogno di mezzi per stimolare e controllare il tuo progetto, qui probabilmente dovrai tradurre da / a livello di transazione (strutture dati C) a / da livello pin. Le interfacce SystemVerilog o SystemC possono essere un approccio. Non ho ancora usato le interfacce DPI / PLI.

Per avere un " stato dell'arte " testbench dovresti considerare di utilizzare una delle metodologie di testbench disponibili, vale a dire VMM o OVM . Ti forniranno anche la documentazione su come iniziare.

Sembra che dovresti ottenere uno strumento come i simulatori di Mentor o Cadence che combinano il codice RTL e SystemC in un unico sistema. Non gratis, certo, ma sono la soluzione per ciò che esiste in pratica.

La soluzione strutturalmente corretta di cui hai bisogno è che la C o il SystemC chiamino l'RTL, non viceversa. Ciò implica l'integrazione di alcuni simulatori RTL con il programma C o il programma SystemC. È certamente fattibile, ma un'impresa piuttosto grande.

Inoltre, penso che usare SystemVerilog abbia molto senso.

Ho usato sia SystemC che System Verilog / VMM per la verifica, e la risposta è, dipende. Quando ero con una startup con un budget ridotto che cercava di far uscire il loro primo ASIC, SystemC era una scelta naturale perché funzionava con il nostro simulatore a basso budget e SystemVerilog no. Con SystemC, non è necessario utilizzare il PLI o il DPI. In realtà istanziate il vostro modello SystemC come componente nel vostro banco di prova, il che è interessante.

Tuttavia, SystemC è una libreria C ++ che NON ha una sintassi molto intuitiva. Dovresti avere un discreto background C ++ prima di provare ad imparare la libreria SystemC. I libri per questo che sono disponibili per lo più fanno schifo, ad eccezione di "SystemC from the Ground Up". di David Black.

Detto questo, da quello che ho visto, SystemC è naturalmente un linguaggio di modellazione di alto livello, non un linguaggio di verifica, e nessuno con budget per acquistare simulatori reali utilizza SystemC per la verifica. Da un punto di vista generale dello sviluppo della carriera, userei System Verilog se è disponibile per te. Inoltre, puoi sempre utilizzare il DPI per interfacciarti con il tuo modello C per il controllo dell'output, che utilizza ancora generatori, monitor e tabelloni segnapunti scritti in SV / VMM.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top