λήψη του πακέτου SystemC . SystemC μπορεί να κατεβάσει ελεύθερα από το Internet . Πριν από τη λήψη , θα σας ζητηθεί να εγγραφείτε με την κοινότητα SystemC . Μόλις η διαδικασία ολοκληρωθεί η εγγραφή , το πακέτο μπορεί να βρεθεί μετά την είσοδο στην ιστοσελίδα με το συγκεκριμένο όνομα χρήστη και τον κωδικό πρόσβασης . 2
Βγάλτε το συμπιεσμένο πακέτο . Το συμπιεσμένο πακέτο θα έχει μια επέκταση αρχείου που ονομάζεται " tgz " . Ας υποθέσουμε ότι το όνομα του πακέτου είναι " gunzip πίσσα - xvf Χρησιμοποιήστε τον ακόλουθο κώδικα ως παράδειγμα το μοντέλο συστήματα hardware . Το παράδειγμα είναι ότι από ένα σχεδιασμό ενός συστήματος με δύο διαδικασίες . Η πρώτη μέθοδος γεμίζει ένα- βαθύ ρυθμιστικό όποτε είναι άδειο. Η δεύτερη διαδικασία καθαρίζει και εμφανίζει την τιμή του ρυθμιστικού διαλύματος . Οι δύο μέθοδοι λειτουργούν σε διαφορετικές συχνότητες ρολογιού . Ο κώδικας εξηγείται παρακάτω : Συμπεριλάβετε τα απαραίτητα αρχεία header # include " systemc.h " # include # . περιλαμβάνουν Class " mybuf " είναι δύο ρολόγια εισόδου , CLK1 και CLK2 . Δύο μέθοδοι δηλαδή , τοποθέτηση και αφαίρεση ορίζεται , όπου " εισάγετε " γίνεται επίκληση στο θετικό άκρο της CLK1 , και «αφαίρεση» γίνεται επίκληση στο θετικό άκρο της " CLK2 " τάξη mybuf : . Δημόσια sc_module { δημόσια : sc_in_clk CLK1 ? sc_in_clk CLK2 ? std :: deque SC_HAS_PROCESS ( mybuf ) ? mybuf (όνομα sc_module_name ) : sc_module (όνομα ) { προετοιμασία ( ) ? SC_METHOD ( ένθετο ) ? ευαίσθητα < SC_METHOD (αφαίρεση) ? ευαίσθητα < κενό εισάγετε ( ) ? void remove ( ) ? άκυρη αρχικοποιούν ( ) ? } ? Οι παρακάτω γραμμές κώδικα εφαρμογή της εισαγωγής και αφαίρεσης μεθόδους , μαζί με μια μέθοδο προετοιμασίας void mybuf :: προετοιμασία ( ) { values.clear ( ) ? } άκυρη mybuf . : : αφαίρεση ( ) { αν ( values.size ( ) > 0 ) { std :: cout < values.pop_front ( ) ? } } άκυρη mybuf :: εισάγετε ( ) { αν ( values.size ( ) == 0 ) { int r = rand () % 100 ? values.push_back ( r ) ? } } Το ακόλουθο τμήμα κώδικα υλοποιεί μια δοκιμαστική πάγκο για παράδειγμα . Η CLK1 ρολόγια και CLK2 οδηγούνται από αυτή τη δοκιμή πάγκο τάξη mybuf_tb : δημόσια sc_module { κοινό: . Sc_out sc_out SC_HAS_PROCESS ( mybuf_tb ) ? mybuf_tb (όνομα sc_module_name ) : sc_module (όνομα ) { SC_THREAD ( clock1 ) ? SC_THREAD ( clock2 ) ? } άκυρη clock1 ( ) ? άκυρη clock2 ( ) ? } ? void mybuf_tb :: clock1 ( ) { ενώ η (πραγματική ) { CLK1 = 0 ? περιμένει ( 10 , SC_NS ) ? CLK1 = 1 ? περιμένει ( 10 , SC_NS ) ? } } άκυρη mybuf_tb :: clock2 ( ) { ενώ η (πραγματική ) { CLK2 = 0 ? περιμένει ( 20 , SC_NS ) ? CLK2 = 1 ? περιμένει ( 20 , SC_NS ) ? } } Το ακόλουθο τμήμα κώδικα εμφανίζει την ενότητα του σχεδιασμού και δοκιμών πάγκο της . Στη συνέχεια, δεσμεύει τα ρολόγια , έτσι ώστε η δοκιμή πάγκο παρέχει τις τιμές του ρολογιού στην ενότητα του σχεδιασμού . Int sc_main ( int argc , char * argv [ ] ) { sc_signal sc_signal mybuf newbuf ( " mybuffer ")? newbuf.clk1 ( CLK1 ) ? newbuf . CLK2 ( CLK2 ) ? mybuf_tb 1 ? }
εικόνων 3 <. . p > Αλλαγή στον κατάλογο αποσυμπίεσης με τη χρήση του " cd
Η 4
Η
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα