Scarica il pacchetto SystemC . SystemC può essere scaricato gratuitamente da Internet . Prima di scaricare , vi verrà richiesto di registrarsi con la comunità SystemC . Una volta che il processo di registrazione è completo, il pacchetto può essere scaricato dopo l'accesso al sito con il nome utente e la password specificati .
2
Estrarre il pacchetto compresso . Il pacchetto compresso avrà una estensione file " tgz " . Si supponga che il nome del pacchetto è " gunzip tar - xvf Usa il seguente codice come esempio di sistemi hardware del modello. L'esempio è quello di un disegno di un sistema con due processi . Il primo processo riempie un buffer da un profondo ogni volta che è vuota . Il secondo processo libera e visualizza il valore del buffer . I due processi funzionano a differenti frequenze di clock . Il codice è spiegato di seguito : . Includere i file di intestazione necessari # include " systemc.h " # include # includere Class " mybuf " è ha due orologi di ingresso , clk1 e clk2 . Due metodi cioè , inserire e rimuovere sono definiti , in cui "inserire" viene richiamato al fronte positivo di CLK1 , e "Rimuovi ", viene richiamato al fronte positivo del " clk2 " mybuf : . Sc_module pubblico { pubblico : sc_in_clk CLK1 ; sc_in_clk clk2 ; std :: valori SC_HAS_PROCESS ( mybuf ) ; mybuf ( sc_module_name nome) : sc_module (nome) { initialize (); SC_METHOD ( inserto) ; sensibile < < clk1.pos (); SC_METHOD ( rimuovi) ; sensibile << clk2.pos (); } vuoto inserisci ( ) ; vuoto remove () ; vuoto initialize (); } ; le seguenti righe di codice implementano l' inserimento e la rimozione metodi , insieme a un metodo di inizializzazione vuoto mybuf :: initialize () { values.clear (); } vuoto mybuf . : : remove () { se ( values.size ( ) > 0 ) { std :: cout << sc_time_stamp ( ) << " " << values.front ( ) << endl; values.pop_front (); } } vuoto mybuf :: insert ( ) { se ( values.size ( ) == 0 ) { int r = rand ( ) % 100 ; values.push_back ( r) ; } } il seguente segmento di codice implementa un banco di prova per l'esempio . Gli orologi clk1 e clk2 sono guidati da questo banco di prova mybuf_tb : sc_module pubblica { pubblico : . Sc_out sc_out SC_HAS_PROCESS ( mybuf_tb ) ; mybuf_tb ( sc_module_name nome) : sc_module (nome) { SC_THREAD ( clock1 ) ; < br SC_THREAD > ( clock2 ) ; } vuoto clock1 (); vuoto clock2 (); } ; vuoto mybuf_tb :: clock1 ( ) { while (true ) { CLK1 = 0; attesa ( 10 , SC_NS ) ; CLK1 = 1; attesa ( 10 , SC_NS ) ; } } vuoto mybuf_tb :: clock2 ( ) { while (true ) { clk2 = 0; attesa ( 20 , SC_NS ) ; clk2 = 1; attesa ( 20 , SC_NS ) ; } } Il seguente frammento di codice crea un'istanza del modulo di progettazione e il suo banco di prova . Poi si lega gli orologi in modo che il banco di prova fornisce i valori di clock per il modulo di disegno . Int sc_main ( int argc , char * argv [ ] ) { sc_signal sc_signal mybuf newbuf ( " buff " ) ; newbuf.clk1 ( CLK1 ) ; newbuf . clk2 ( clk2 ) ; mybuf_tb 1 ; }
3 < . . p > Passare alla directory scompattato con il comando "cd
4
classe
classe
Informazioni correlate
Programmazione © www.354353.com