Προσομοίωση λογισμικού RENESAS ForgeFPGA

Προσομοίωση λογισμικού RENESAS ForgeFPGA

Σημαντικές Πληροφορίες

Η προσομοίωση είναι μια τεχνική εφαρμογής διαφορετικών ερεθισμάτων εισόδου στο σχέδιο σε διαφορετικούς χρόνους για να ελεγχθεί εάν ο κώδικας RTL συμπεριφέρεται με τον προβλεπόμενο τρόπο. Χρησιμοποιείται για την επαλήθευση της στιβαρότητας του σχεδιασμού. Η προσομοίωση επιτρέπει στον χρήστη να view το διάγραμμα χρονισμού των σχετικών σημάτων για να κατανοήσουμε πώς η περιγραφή του σχεδιασμού στο σχεδιασμό file συμπεριφέρεται.

Οι πάγκοι δοκιμών είναι κομμάτια κώδικα που χρησιμοποιούνται για προσομοίωση. Ένας απλός πάγκος δοκιμών θα δημιουργήσει τη μονάδα υπό δοκιμή (UUT) και θα οδηγήσει την είσοδο. Το λογισμικό Go Configure χρησιμοποιεί Icarus Verilog (iVerilog) και GTKWave για να παρατηρήσει τις κυματομορφές προσομοίωσης με το ερέθισμα που παρέχεται στον πάγκο δοκιμών.

Αυτό το έγγραφο περιγράφει τα βήματα που πρέπει να γίνουν κατά την εγκατάσταση του Icarus στο σύστημά σας και πώς να εκτελέσετε μια επιτυχημένη προσομοίωση.

Εγκατάσταση του Icarus Verilog

a. Εγκαταστήστε την πιο πρόσφατη έκδοση του Icarus Verilog (IVerilog) από https://bleyer.org/icarus/
b. Φροντίστε να προσθέσετε το IVerilog στο PATH και να το αφήσετε να εγκαταστήσει το GTKWave (Δείτε Εικόνα 1)
Εγκατάσταση του Icarus Verilog

c. Ανοίξτε το λογισμικό Go Configure και επιλέξτε το εξάρτημα: SLG47910(Rev BB) για να ανοίξετε το Forge Workshop (βλ. Εικόνα 2).
Εγκατάσταση του Icarus Verilog

d. Κάντε κλικ στον Επεξεργαστή FPGA στη μέση της γραμμής εργαλείων στο επάνω μέρος ή ο χρήστης μπορεί επίσης να κάνει διπλό κλικ στη δομή του πυρήνα FPGA στη μέση του παραθύρου.
Εγκατάσταση του Icarus Verilog

e. Ανοίγει ένα νέο παράθυρο που ονομάζεται Forge Workshop. Στη γραμμή εργαλείων μενού στο επάνω μέρος, κάντε κλικ στο Επιλογές → Ρυθμίσεις. Στο παράθυρο διαλόγου Ρυθμίσεις, μεταβείτε στα Εργαλεία στην καρτέλα Ρυθμίσεις χρήστη. Καταργήστε την επιλογή του "Χρήση πλαισίου περιβάλλοντος συστήματος" τόσο για το Icarus Verilog όσο και για το GTKWave. Προσθέστε τη διαδρομή προς το Iverilog και το GTKWave που είναι αποθηκευμένα στο σύστημά σας στον χώρο που δίνεται (βλ. Εικόνα 4).
Εγκατάσταση του Icarus Verilog

Είστε έτοιμοι να προσομοιώσετε έναν πάγκο δοκιμών και τα παραπάνω βήματα διασφαλίζουν ότι το GTKWave ξεκινά αυτόματα κατά την προσομοίωση μιας δοκιμαστικής βάσης στο λογισμικό Go Configure.

Πάγκος δοκιμών

Το πιο κρίσιμο βήμα για την επιτυχή εφαρμογή οποιουδήποτε συστήματος είναι η επαλήθευση του σχεδιασμού και της λειτουργικότητάς του. Η επαλήθευση ενός πολύπλοκου συστήματος μετά την εφαρμογή του υλικού δεν είναι σοφή επιλογή. Είναι αναποτελεσματικό από άποψη χρημάτων, χρόνου και πόρων. Ως εκ τούτου, στην περίπτωση του FPGA, χρησιμοποιείται ένας πάγκος δοκιμών για τον έλεγχο του πηγαίου κώδικα της Verilog.

Ας υποθέσουμε ότι έχουμε μια είσοδο 11 bit και θέλουμε να δοκιμάσουμε τη συσκευή για όλες τις πιθανές τιμές συνδυασμού εισόδου, π.χ. (211). Καθώς πρόκειται για έναν πολύ μεγάλο αριθμό συνδυασμών, είναι αδύνατο να τον δοκιμάσετε χειροκίνητα. Σε τέτοιες περιπτώσεις, οι πάγκοι δοκιμών είναι πολύ χρήσιμοι, καθώς μπορείτε να δοκιμάσετε το σχέδιο αυτόματα για όλες τις πιθανές τιμές και, ως εκ τούτου, να επιβεβαιώσετε την αξιοπιστία του σχεδιασμού δοκιμής. Τα Verilog Testbenches χρησιμοποιούνται για την προσομοίωση και την ανάλυση σχεδίων χωρίς την ανάγκη για οποιαδήποτε φυσική συσκευή υλικού.

Ένα σχέδιο υπό δοκιμή, που συντομογραφείται ως DUT, είναι μια συνθετική ενότητα της λειτουργικότητας που θέλουμε να δοκιμάσουμε. Με άλλα λόγια, είναι ο σχεδιασμός του κυκλώματος που θα θέλαμε να δοκιμάσουμε. Μπορούμε να περιγράψουμε το DUT χρησιμοποιώντας ένα από τα τρία στυλ μοντελοποίησης στη Verilog – Gate-level, Dataflow ή Behavioral.

Ένας πάγκος δοκιμών δεν είναι συνθετικός, επομένως χρησιμοποιείται μόνο για σκοπούς προσομοίωσης. Αυτό επιτρέπει στο χρήστη να χρησιμοποιεί μια πλήρη σειρά δομών Verilog, π.χ. λέξεις-κλειδιά όπως "for", "$display" και "$monitor" κ.λπ. για τη σύνταξη δοκιμαστικών πάγκων. Ένας απλός πάγκος δοκιμών θα δημιουργήσει τις εισόδους της μονάδας υπό δοκιμή (UUT) ή της συσκευής υπό δοκιμή (DUT) και της μονάδας.

Κατανοώντας έναν πάγκο δοκιμών

Κατανοώντας έναν πάγκο δοκιμών

Ορισμός χρονικού διαστήματος στο Testbench

Κατά την προσομοίωση, το λογισμικό πρέπει να γνωρίζει πώς έχει οριστεί η ώρα. Η μονάδα καθυστέρησης καθορίζεται χρησιμοποιώντας την οδηγία `timescale, η οποία καθορίζει τη μονάδα χρόνου και την ακρίβεια για τις μονάδες που την ακολουθούν. Το «χρονοδιάγραμμα βοηθά στον προσδιορισμό του τι σημαίνει #1 από την άποψη του χρόνου. Το # χρησιμοποιείται για τον καθορισμό της καθυστέρησης που θα εισαχθεί στο σύστημα σύμφωνα με τη μονάδα χρόνου που καθορίζεται στην κλίμακα χρόνου. Άρα, #1 σημαίνει 1 ns καθυστέρησης αν η_μονάδα χρόνου είναι σε ns.

Σύνταξη:
`χρονοδιάγραμμα / /

time_unit είναι ο χρόνος που αντιπροσωπεύει μια καθυστέρηση #1. Η βάση time_precision αντιπροσωπεύει πόσα δεκαδικά ψηφία ακριβείας πρέπει να χρησιμοποιηθούν σε σχέση με τις μονάδες χρόνου. (Βλέπε γραμμή 23 στο Σχήμα 5)

Μπορούμε να χρησιμοποιήσουμε τις κατασκευές χρονικής κλίμακας για να χρησιμοποιήσουμε διαφορετικές χρονικές μονάδες στο ίδιο σχέδιο. Ο χρήστης πρέπει να θυμάται ότι οι προδιαγραφές καθυστέρησης δεν μπορούν να συντεθούν και δεν μπορούν να μετατραπούν σε λογική υλικού. Οι συναρτήσεις καθυστέρησης προορίζονται αποκλειστικά για σκοπούς προσομοίωσης. $φορά και $σε πραγματικό χρόνο Οι λειτουργίες συστήματος επιστρέφουν την τρέχουσα ώρα και η προεπιλεγμένη μορφή αναφοράς μπορεί να αλλάξει με μια άλλη εργασία συστήματος $timeformat .

Example: 

`χρονοδιάγραμμα 10us/100ns
`χρονική κλίμακα 1 s/1ps
#10 επαναφορά = 1; // καθυστερεί το σήμα κατά 10 ns
#0.49 $display( "T = %0t at Time #0.49", $realtime) ;

Η καθυστέρηση που καθορίζεται είναι #0.49 που είναι μικρότερη από τη μισή μονάδα χρόνου. Ωστόσο, η χρονική ακρίβεια καθορίζεται να είναι 1 ps και ως εκ τούτου ο προσομοιωτής δεν μπορεί να είναι μικρότερος από 1 ns, γεγονός που τον κάνει να στρογγυλοποιεί τη δεδομένη δήλωση καθυστέρησης και να αποδίδει 0 ns. Επομένως, αυτή η δήλωση δεν παρέχει καμία καθυστέρηση.

Μητρώο προσομοίωσης: 

T = 1 στο Χρόνο #0.49

Δήλωση ενότητας

Η δήλωση μονάδας σε οποιοδήποτε πάγκο δοκιμών δεν μοιάζει με τον κύριο κώδικα της Verilog. Σε έναν πάγκο δοκιμών, η μονάδα δηλώνεται χωρίς καμία θύρα τερματικού μαζί της. (Βλέπε γραμμή 25 στο Σχήμα 5)

Σύνταξη: 

μονάδα μέτρησης ;

Η δήλωση της μονάδας ακολουθείται από τον καθορισμό των σημάτων εισόδου και εξόδου που ορίστηκαν νωρίτερα στην κύρια σχεδίαση file.
Χρησιμοποιούμε δύο τύπους σημάτων για την οδήγηση και την παρακολούθηση σημάτων κατά την προσομοίωση. Ο τύπος δεδομένων reg θα διατηρήσει την τιμή μέχρι να του εκχωρηθεί μια νέα τιμή. Σε αυτόν τον τύπο δεδομένων μπορεί να εκχωρηθεί μια τιμή μόνο στο πάντα ή στο αρχικό μπλοκ.
Ο τύπος δεδομένων καλωδίου μοιάζει με αυτόν μιας φυσικής σύνδεσης. Θα διατηρήσει την τιμή που καθορίζεται από μια θύρα, δήλωση εκχώρησης ή reg. Αυτός ο τύπος δεδομένων δεν μπορεί να χρησιμοποιηθεί στο αρχικό ή πάντα μπλοκ. Οποιαδήποτε δήλωση παραμέτρου και ακέραιου αριθμού γίνεται επίσης σε αυτή την ενότητα.

Example:
Καν. α,β; // η είσοδος στον κώδικα HDL ορίζεται ως reg στο testbench
Σύρμα y; Το // σήμα εξόδου στο HDL ορίζεται ως καλώδιο στον πάγκο δοκιμών

DUT Instantiation

Ο σκοπός ενός πάγκου δοκιμών είναι να επαληθεύσει εάν η μονάδα DUT μας λειτουργεί. Ως εκ τούτου, πρέπει να προσαρμόσουμε τη μονάδα σχεδιασμού σε μονάδα δοκιμής.

Σύνταξη: 

(. (σήμα 1), . signal1>(signal2));

Example:

ALU d0 (.a(a), // το σήμα "a" στο ALU θα πρέπει να συνδεθεί με το "a" στη μονάδα ALU_tb
.b(b), // το σήμα "b" στην ALU θα πρέπει να συνδεθεί με το "b" στη μονάδα ALU_tb
.c(c)) ;// το σήμα "c" στο ALU θα πρέπει να συνδεθεί στο "c" στη μονάδα ALU_tb

Έχουμε τοποθετήσει τη μονάδα DUT ALU στη μονάδα δοκιμής. Το όνομα του στιγμιότυπου (d0) είναι επιλογή του χρήστη. Τα σήματα με τελεία "." μπροστά τους υπάρχουν τα ονόματα για τα σήματα μέσα στη μονάδα ALU, ενώ το καλώδιο ή το reg με το οποίο συνδέονται στον πάγκο δοκιμών είναι δίπλα στο σήμα στην παρένθεση (). Συνιστάται η κωδικοποίηση κάθε σύνδεσης θύρας σε ξεχωριστή γραμμή, έτσι ώστε οποιοδήποτε μήνυμα σφάλματος μεταγλώττισης να δείχνει σωστά τον αριθμό γραμμής όπου παρουσιάστηκε το σφάλμα. Επειδή αυτές οι συνδέσεις γίνονται ονομαστικά, η σειρά με την οποία εμφανίζονται είναι άσχετη.

Η εγκατάσταση DUT μπορεί επίσης να γίνει για τις μονάδες όπου η μονάδα testbench έχει διαφορετικά ονόματα σημάτων. Η σωστή αντιστοίχιση των σημάτων είναι αυτό που είναι σημαντικό κατά την στιγμιαία δημιουργία.

Example: 

ALU d0 (.a(A), // το σήμα "a" στο ALU θα πρέπει να συνδεθεί στο "A" στη μονάδα ALU_tb
.clk(clock), // το σήμα "clk" στην ALU θα πρέπει να συνδεθεί στη μονάδα "clock" ALU_tb
.out(OUT)) ; // το σήμα "out" στο ALU θα πρέπει να συνδεθεί στο "OUT" στη μονάδα ALU_tb

Πάντα & αρχικό μπλοκ σε πάγκο δοκιμών

Υπάρχουν δύο διαδοχικά μπλοκ στο Verilog, αρχικό και πάντα. Σε αυτά τα μπλοκ εφαρμόζουμε το ερέθισμα.

Αρχικό μπλοκ

Το αρχικό μπλοκ που εκτελείται μόνο μία φορά και τερματίζεται όταν εκτελεστεί η τελευταία γραμμή του μπλοκ. Το ερέθισμα γράφεται στο αρχικό μπλοκ. (Βλέπε γραμμή 54-72 στην Εικόνα 5)

Σύνταξη:
..
αρχική αρχή
$dumpfile()
$dumpvars();
..(εισαγωγή ερεθίσματος)
τέλος

το αρχικό μπλοκ ξεκινά την εκτέλεσή του στην αρχή της προσομοίωσης τη χρονική στιγμή t = 0. Ξεκινώντας από την πρώτη γραμμή μεταξύ της αρχής και του τέλους, κάθε γραμμή εκτελείται από πάνω προς τα κάτω μέχρι να επιτευχθεί καθυστέρηση. Όταν επιτευχθεί η καθυστέρηση, η εκτέλεση αυτού του μπλοκ περιμένει μέχρι να περάσει ο χρόνος καθυστέρησης (μονάδες 10-χρόνων) και στη συνέχεια συνεχίζει την εκτέλεση ξανά.
Ο χρήστης μπορεί να ορίσει ερεθίσματα χρησιμοποιώντας βρόχους (for, while, if-else) καθώς και μέσα σε αυτό το αρχικό μπλοκ αντί να εισάγει όλους τους συνδυασμούς χειροκίνητα.
Αρχικό μπλοκ

 

Example:
Αρχική αρχή
A = 0; b = 0; // έναρξη εκτέλεσης
#10 a = 0; b = 1; // η εκτέλεση είναι σε χρόνο t = 10 μονάδες
#10 a = 1; b = 0; // η εκτέλεση είναι σε χρόνο t = 20 μονάδες
τέλος

Σκουπιδότοπος Files

Ένα άλλο πράγμα που πρέπει να έχετε κατά νου είναι η δήλωση των $σκουπιδότοποςfiles και $dumpvars μέσα στο αρχικό μπλοκ (βλ. γραμμή 55-56 στο Σχήμα 5). Το $σκουπιδότοποςfile χρησιμοποιείται για την απόρριψη των αλλαγών στις τιμές των διχτυών και των μητρώων στο α file που ονομάζεται ως επιχείρημά του.

Για π.χample:

$σκουπιδότοποςfile(“alu_tb.vcd”);

θα απορρίψει τις αλλαγές στο α file με το όνομα alu_tb.vcd. Οι αλλαγές καταγράφονται στο α file ονομάζεται VCD file που σημαίνει ένδειξη αλλαγής αξίας. Ένα VCD (value change dump) αποθηκεύει όλες τις πληροφορίες σχετικά με τις αλλαγές αξίας. Δεν μπορούμε να έχουμε περισσότερα από ένα $dumpfile δηλώσεις στην προσομοίωση Verilog.

Το $dumpvars χρησιμοποιείται για να καθορίσει ποιες μεταβλητές θα απορριφθούν (στο file αναφέρεται από το $dumpfile). Ο απλούστερος τρόπος να το χρησιμοποιήσετε είναι χωρίς κανένα επιχείρημα. Η γενική σύνταξη του $dumpvars είναι

$dumpvars ( <, >);

Βασικά μπορούμε να καθορίσουμε ποιες ενότητες και ποιες μεταβλητές σε ενότητες θα απορριφθούν. Ο απλούστερος τρόπος για να το χρησιμοποιήσετε είναι να ορίσετε το επίπεδο στο 0 και το όνομα της μονάδας ως την κορυφαία μονάδα (συνήθως η κορυφαία μονάδα δοκιμής πάγκου).

$dumpvars(0, alu_tb);

Όταν το επίπεδο έχει οριστεί στο 0 και έχει καθοριστεί μόνο το όνομα της μονάδας, απορρίπτει ΟΛΕΣ τις μεταβλητές αυτής της λειτουργικής μονάδας και όλες τις μεταβλητές σε ΟΛΕΣ τις λειτουργικές μονάδες κατώτερου επιπέδου που δημιουργούνται από αυτήν την κορυφαία λειτουργική μονάδα. Εάν κάποια μονάδα δεν έχει δημιουργηθεί από αυτήν την κορυφαία ενότητα, τότε η μεταβλητή της δεν θα καλύπτεται. Κάτι ακόμα, η δήλωση των $σκουπιδότοποςfile πρέπει να προηγείται του $dumpvars ή οποιασδήποτε άλλης εργασίας συστήματος που καθορίζει την ένδειξη dump. Αυτά τα χωματερή fileΤο s πρέπει να δηλωθεί πριν από τις εισροές του ερεθίσματος αλλιώς, καμία τιμή δεν θα αποθηκευτεί σε αυτές τις αποδείξεις files.

Πάντα αποκλεισμός

Σε αντίθεση με τις αρχικές δηλώσεις, ένα μπλοκ πάντα εκτελείται επανειλημμένα, αν και η εκτέλεση ξεκινά τη στιγμή t = 0. Για π.χ.ampΈτσι, το σήμα ρολογιού είναι απαραίτητο για τη λειτουργία διαδοχικών κυκλωμάτων όπως τα Flip-flops. Πρέπει να παρέχεται συνεχώς. Ως εκ τούτου, μπορούμε να γράψουμε τον κώδικα για τη λειτουργία του ρολογιού σε έναν πάγκο δοκιμών ως (βλ. γραμμή 52 στο Σχήμα 5):

πάντοτε
#10 clk = ~clk;
endmodule

Η παραπάνω πρόταση εκτελείται μετά από 10 ns ξεκινώντας από t = 0. Η τιμή του clk θα αντιστραφεί μετά από 10 ns από την προηγούμενη τιμή. Έτσι, δημιουργείται ένα σήμα ρολογιού πλάτους παλμού 20 ns. Επομένως, αυτή η δήλωση παράγει ένα σήμα συχνότητας 50 MHz. Είναι σημαντικό να σημειωθεί ότι, η προετοιμασία του σήματος γίνεται πριν από το μπλοκ πάντα. Εάν δεν κάνουμε το μέρος της αρχικοποίησης, το σήμα clk θα είναι x από t – 0 και μετά από 10 ns, θα αναστραφεί σε άλλο x.

Πάγκος δοκιμών αυτοελέγχου

Ένας πάγκος δοκιμών αυτοελέγχου περιλαμβάνει μια δήλωση για τον έλεγχο της τρέχουσας κατάστασης.

  • $επίδειξη Οι εργασίες συστήματος χρησιμοποιούνται κυρίως για την εμφάνιση μηνυμάτων εντοπισμού σφαλμάτων για την παρακολούθηση της ροής της προσομοίωσης

αρχική αρχή
A = 0 ; b = 0 ; c = 0; #10; // εφαρμογή εισαγωγής, αναμονή
if( y ! == 1) αρχίζουν
$display( "000 απέτυχαν") ; //έλεγχος
c = 1; #10 ; //εφαρμογή εισαγωγής, αναμονή
τέλος
αλλιώς αν ( y ! == 0) αρχίσουν
$display("001 απέτυχε") // έλεγχος
b = 1; c = 0; #10 ; τέλος
αλλιώς αν(y!==0)
$display (" 010 απέτυχε"); //έλεγχος
τέλος
endmodule

$επίδειξη χρησιμοποιείται για την εμφάνιση τιμών μεταβλητών, συμβολοσειρών ή εκφράσεων. Από τα παραπάνω εξample, όποτε ικανοποιείται οποιοσδήποτε από τους βρόχους if-else, τότε το αρχείο καταγραφής του προσομοιωτή θα εμφανίζει το αντίστοιχο $επίδειξη δήλωση. Υπάρχει μια νέα γραμμή από προεπιλογή στο τέλος των συμβολοσειρών.

$επίδειξη ("χρόνος = %t , A = %b, B = %b, C = % b", $φορά, Α, Β, Γ);

Οι χαρακτήρες που αναφέρονται στα εισαγωγικά θα εκτυπωθούν ως έχουν. Το γράμμα μαζί με το % υποδηλώνει τη μορφή συμβολοσειράς. Χρησιμοποιούμε %b για να αναπαραστήσουμε δυαδικά δεδομένα. Μπορούμε να χρησιμοποιήσουμε %d, %h, %o για την αναπαράσταση δεκαδικού, δεκαεξαδικού και οκταδικού, αντίστοιχα. Το %g χρησιμοποιείται για την έκφραση πραγματικών αριθμών. Αυτές θα αντικατασταθούν με τις τιμές εκτός της προσφοράς με τη σειρά που αναφέρεται. Για π.χample, η παραπάνω δήλωση θα εμφανιστεί στο αρχείο καταγραφής προσομοίωσης ως: χρόνος = 20, A = 0, B =1, C = 0

Τραπέζι 1. Μορφές πίνακα Verilog

Επιχείρημα Περιγραφή
%h, %H Εμφάνιση σε δεκαεξαδική μορφή
%d, %D Εμφάνιση σε δεκαδική μορφή
%b, %B Εμφάνιση σε δυαδική μορφή
%m, %M Εμφάνιση ιεραρχικού ονόματος
%s, %S Εμφάνιση ως συμβολοσειρά
%t, %T Εμφάνιση σε μορφή ώρας
%f, %F Εμφάνιση «πραγματικού» σε δεκαδική μορφή
%e, %E Εμφάνιση «πραγματικού» σε εκθετική μορφή

$επίδειξη εκτυπώνει κυρίως τα δεδομένα ή τη μεταβλητή όπως είναι εκείνη τη στιγμή εκείνης της εποχής όπως το printf στο C. Πρέπει να αναφέρουμε το $επίδειξη για όποιο κείμενο πρέπει view στο αρχείο καταγραφής προσομοίωσης.

  • $φορά

$φορά είναι μια εργασία συστήματος που θα επιστρέψει την τρέχουσα ώρα της προσομοίωσης.

  • $ελεγκτής εκπομπών

$ελεγκτής εκπομπών θα παρακολουθεί τα δεδομένα ή τη μεταβλητή για την οποία έχει γραφτεί και όποτε αλλάζει η μεταβλητή, θα εκτυπώνει
την αλλαγμένη τιμή. Επιτυγχάνει ένα παρόμοιο αποτέλεσμα καλώντας το $display μετά από κάθε φορά που λαμβάνετε κάποιο από τα ορίσματά του
ενημερώθηκε. $ελεγκτής εκπομπών είναι σαν μια εργασία που γεννιέται για να τρέξει στο φόντο του κύριου νήματος που παρακολουθεί και
εμφανίζει τις αλλαγές τιμών των μεταβλητών του ορίσματος. $ελεγκτής εκπομπών έχει την ίδια σύνταξη με το $επίδειξη.

$ελεγκτής εκπομπών(" χρόνος = %t, A = %b, B = %b, C = % b", $φορά, Α, Β, Γ);
Πάγκος δοκιμών αυτοελέγχου

Από το Σχήμα 7 μπορείτε να παρατηρήσετε ότι έχουν προστεθεί νέες γραμμές κωδικών για την αυτοαξιολόγηση του πάγκου δοκιμών. Η τοποθέτηση του $επίδειξη και $ελεγκτής εκπομπών Οι δηλώσεις σε διαφορετικές ενότητες του πάγκου δοκιμών θα δώσουν διαφορετικά αποτελέσματα (βλ. Εικόνα 8). $φορά που αναφέρεται σε αυτές τις δηλώσεις εκτυπώνει την ώρα για την οποία εκτυπώνεται η τιμή. Ταυτόχρονα μονάδα ας πούμε 170000, μπορούμε να δούμε πώς υπάρχει διαφορά στην τιμή για το Α και το Β λόγω του $επίδειξη και $ελεγκτής εκπομπών δηλώσεις.
Πάγκος δοκιμών αυτοελέγχου

Λογισμικό GTKWave

Το GTKWave είναι ένα πλήρως εξοπλισμένο κύμα GTK+ viewer για Unix, Win32 και Mac OSX που διαβάζει LXT, LXT2, VZT, FST και GHW files καθώς και το τυπικό VCD/EVCD files και επιτρέπει τους viewing. Επίσημο webο ιστότοπος βρίσκεται στο http://gtkwave.sourceforge.net/ . Το GTKWave είναι το προτεινόμενο viewer από το εργαλείο προσομοίωσης Icarus Verilog.

Μόλις ο χρήστης δημιουργήσει με επιτυχία έναν πάγκο δοκιμών για να δοκιμάσει τη λειτουργικότητα του σχεδίου, ο χρήστης μπορεί πλέον να χρησιμοποιήσει το λογισμικό GTKWave για να view τις κυματομορφές.

Για να εκκινήσετε το λογισμικό GTKWave στο view στις κυματομορφές, ο χρήστης πρέπει να κάνει κλικ στο κουμπί Προσομοίωση Testbench στο επάνω μέρος της γραμμής εργαλείων ή από το κύριο μενού Εργαλεία→ Simulation→ Simulate Testbench. Εάν δεν υπάρχουν συντακτικά σφάλματα, ανάλογα με τη σχεδίαση, το GTKWave θα πρέπει να ξεκινήσει αυτόματα ή τα αποτελέσματα των ερεθισμάτων στον πάγκο δοκιμών θα εμφανιστούν στην ενότητα Logger του παραθύρου.

Το λογισμικό GTKWave ανοίγει την ένδειξη μορφής .vcdfile αυτομάτως. Το παράθυρο GTKWave δεν εμφανίζει την κυματομορφή όταν ανοίγει. Αυτό δίνει στον χρήστη την ευκαιρία να επιλέξει ποια σήματα θέλει view και παρατηρήστε. Για να επιλέξετε το σήμα, ο χρήστης πρέπει να εμφανίσει, ο χρήστης πρέπει να κάνει κλικ στο όνομα της μονάδας/παρουσίασης στην αριστερή πλευρά του παραθύρου κάτω από την καρτέλα SST. Κάνοντας κλικ στο + κάθε παρουσίασης, μπορείτε να δείτε τα σήματα που σχετίζονται με αυτήν την εμφάνιση στην κάτω ενότητα. Στη συνέχεια, μπορείτε να σύρετε και να αποθέσετε το επιθυμητό σήμα ή να κάνετε διπλό κλικ για να εμφανιστεί στο παράθυρο Σήματα. Μπορείτε επίσης να επιλέξετε όλα (CTRL + A) και να τα εισαγάγετε στο παράθυρο σημάτων (βλ. Εικόνα 9).
Λογισμικό GTKWave

Τα σήματα προστίθενται τώρα στο παράθυρο σήματος, αλλά δεν έχει ακόμη προσομοιωθεί. Αφού προσθέσετε τα επιθυμητά σήματα στο παράθυρο σήματος, κάντε κλικ στοΣύμβολο για να προσαρμόσετε τα σήματα στο τρέχον πλάτος του παραθύρου και στη συνέχεια να φορτώσετε ξανά τα σήματα από την επαναφόρτωσηΣύμβολο σύμβολο που υπάρχει στη γραμμή εργαλείων. Τώρα μπορείτε να δείτε τα σήματα με τις αντίστοιχες τιμές τους.

Τιμές σήματος

Από προεπιλογή, οι τιμές των σημάτων είναι σε δεκαεξαδική μορφή και όλα τα κύματα έχουν πράσινο χρώμα (αν εκτελούνται σωστά).

Ο χρήστης μπορεί να αλλάξει τις ιδιότητες αυτών των σημάτων κάνοντας δεξί κλικ στο σήμα και επιλέγοντας Μορφή δεδομένων ή Μορφή χρώματος. Ο χρήστης μπορεί επίσης να εισάγει ένα κενό σήμα για να κάνει ενότητες μεταξύ ομάδων σημάτων. Όταν έχετε το επιθυμητό οπτικό αποτέλεσμα, μπορείτε να αποθηκεύσετε τις διαμορφώσεις σας πηγαίνοντας File → Γράψτε Αποθήκευση File.

Γραμμή εργαλείων GTKWave

Η γραμμή εργαλείων (βλ. Εικόνα 10) επιτρέπει στο χρήστη να εκτελεί βασικές λειτουργίες για το σήμα. Ας συζητήσουμε κάθε επιλογή στη γραμμή εργαλείων από αριστερά προς τα δεξιά.
Γραμμή εργαλείων GTKWave

  1. Επιλογές μενού: Κάτω από αυτήν την επιλογή μπορούμε view όλες οι διάφορες δυνατότητες του λογισμικού που μπορούν να χρησιμοποιηθούν για να παίξετε με το λογισμικό. Οι λεπτομέρειες σε αυτήν την επιλογή μενού καλύπτονται στην Ενότητα 8 αυτού του οδηγού χρήστη.
  2. Κόψτε τα ίχνη: Χρησιμοποιείται για τη διαγραφή/κόψιμο του σήματος επιλογής από το παράθυρο σήματος
  3. Αντιγραφή ιχνών: Χρησιμοποιείται για την αντιγραφή του επιλεγμένου σήματος από το παράθυρο σήματος
  4. Επικόλληση Ίχνη: Το αντιγραμμένο/κομμένο ίχνος μπορεί να επικολληθεί σε διαφορετική θέση στο παράθυρο σήματος
  5. Zoom Fit: Χρησιμοποιείται για την προσαρμογή των σημάτων ανάλογα με το μέγεθος του παραθύρου που επιλέγει να εμφανίσει ο χρήστης
  6. Μεγέθυνση: Χρησιμοποιείται για μεγέθυνση στο παράθυρο σήματος
  7. Σμίκρυνση: Χρησιμοποιείται για σμίκρυνση του παραθύρου σήματος
  8. Ζουμ Αναίρεση: χρησιμοποιείται για την αναίρεση της μεγέθυνσης/σμίκρυνσης στο παράθυρο σήματος
  9. Μεγέθυνση για έναρξη: αυτό θα μεγεθύνει το παράθυρο του σήματος, εμφανίζοντας την ώρα έναρξης των σημάτων.
  10. Ζουμ μέχρι το τέλος: αυτό θα μεγεθύνει το παράθυρο σήματος που εμφανίζει την ώρα λήξης των σημάτων
  11. Βρείτε την προηγούμενη άκρη: Μετατοπίζει τον δείκτη στην αριστερή πλευρά, υποδεικνύοντας την προηγούμενη άκρη
  12. Βρείτε την επόμενη άκρη: Αυτό μετατοπίζει τον δείκτη προς τα δεξιά, υποδεικνύοντας την επόμενη άκρη
  13. Κύλιση κάτω/επάνω δεσμού: χρησιμοποιώντας αυτό μπορούμε να ορίσουμε το χρονικό πλαίσιο στο οποίο ο χρήστης θέλει να εμφανίζεται. Για π.χampLe, μπορούμε να ορίσουμε το χρονικό πλαίσιο σε 0 sec έως 500 ns, θα εμφανίσει τα σήματα μόνο σε αυτή τη διάρκεια.
  14. Γεμίζω πάλι: Η επαναφόρτωση πιέζεται κάθε φορά που υπάρχει αλλαγή στο εμφανιζόμενο σήμα. Θα επαναφορτώσει και θα εμφανίσει το σήμα σύμφωνα με τις νέες παραμέτρους. Για π.χample, αφού αλλάξουμε το χρονικό πλαίσιο του σήματος, πρέπει να φορτώσουμε ξανά το σήμα για να εμφανιστεί το σήμα στο νέο καθορισμένο χρονικό πλαίσιο.

Επιλογές μενού

Από την επάνω αριστερή γωνία του λογισμικού GTKWave, ο χρήστης μπορεί να έχει πρόσβαση στις επιλογές μενού κάνοντας κλικ στις τρεις κάθετες γραμμές (βλ. Εικόνα 11). Ο χρήστης μπορεί να βρει τις ακόλουθες επιλογές κάτω από τις επιλογές μενού:
Επιλογές μενού

File

Ο File Το υπομενού περιέχει διάφορα στοιχεία που σχετίζονται με την πρόσβαση files, εισαγωγή-εξαγωγή VCD files, εκτύπωση και ανάγνωση/γραφή files και έξοδος.

Εκδίδω

Το υπομενού Επεξεργασία χρησιμοποιείται για την εκτέλεση διαφόρων βοηθητικών λειτουργιών, όπως η αλλαγή της αναπαράστασης δεδομένων των τιμών στο υποπαράθυρο κυμάτων. Χρησιμοποιώντας τις επιλογές στο υπομενού Επεξεργασία, ο χρήστης μπορεί να αλλάξει τη μορφή δεδομένων των σημάτων, να τα αναδιατάξει, να τα μετατοπίσει, να τα περικόψει, να τα επισημάνει, να ομαδοποιήσει σήματα, να σχολιάσει τα σήματα, να αλλάξει το χρώμα των σημάτων κ.λπ.

Αναζήτηση

Το υπομενού Αναζήτηση χρησιμοποιείται για την εκτέλεση αναζητήσεων σε ονόματα και τιμές δικτύου. Βοηθά στην εκτέλεση λειτουργιών σε διαφορετικά επίπεδα ιεραρχίας των σημάτων και των παρουσιών στο VCD file.

Φορά

Το υπομενού χρόνου περιέχει ένα υπερσύνολο των λειτουργιών που εκτελούνται από τα κουμπιά Πλοήγηση και Πίνακας Κατάστασης.
Επιτρέπει απλές, σχετιζόμενες με το χρόνο, λειτουργίες όπως ζουμ, μετακίνηση σε συγκεκριμένο χρονικό σημείο, μετατόπιση του σήματος σε μια συγκεκριμένη κατεύθυνση κ.λπ.

Σημάδι

Το υπομενού δείκτη χρησιμοποιείται για την εκτέλεση διαφόρων χειρισμών στον δείκτη, καθώς και για τον έλεγχο της κύλισης εκτός οθόνης.
Επιτρέπει τη λειτουργικότητα της προσθήκης πολλών δεικτών στο παράθυρο σήματος. Επιτρέπονται το πολύ 26 δείκτες ονομάτων και οι χρόνοι για όλους πρέπει να είναι διαφορετικοί.

a. Για να προσθέσετε δείκτες στο παράθυρο σήματος
Κάντε αριστερό κλικ στο σημείο που θέλετε να τοποθετηθεί ο δείκτης και πατήστε ALT + N. Αυτό θα τοποθετήσει έναν επώνυμο δείκτη (A,B,C, κ.λπ.) στο επιθυμητό σημείο. Ο χρήστης μπορεί να συνεχίσει να το κάνει αυτό για 26 διαφορετικές χρονικές τοποθεσίες.
Για να συγκρίνετε την τιμή του χρόνου σε όλους τους δείκτες θέσεων, Μενού → Δείκτες → Εμφάνιση δεδομένων αλλαγής δείκτη.
Αυτό θα ανοίξει ένα παράθυρο με την τιμή χρόνου σε κάθε δείκτη. Ο χρήστης μπορεί να σημειώσει με μη αυτόματο τρόπο την τιμή του χρόνου σε κάθε τοποθετημένο δείκτη και να τους αφαιρέσει για να υπολογίσει τη διαφορά χρόνου μεταξύ 2 δεικτών.
b. Για να αφαιρέσετε τον δείκτη στο παράθυρο σήματος

Ο χρήστης μπορεί να μεταβεί στο Μενού → Δείκτες → Συλλέξτε επώνυμο δείκτη. Αυτό θα αφαιρέσει τον επώνυμο δείκτη που βρίσκεται στο παράθυρο σήματος. Ο χρήστης μπορεί να αφαιρέσει όλους τους ονομασμένους δείκτες μεταβαίνοντας στο Μενού → Δείκτες → Συλλέξτε Όλων Επώνυμα Σημειωτή (Εικόνα 12).
Επιλογές μενού

Στο Σχήμα 13, μπορούμε να δούμε πώς έχουν αλλάξει τα χρώματα του σήματος. Μπορείτε να παρατηρήσετε ένα κενό σήμα που προστίθεται στο παράθυρο σήματος επίσης με ένα σχόλιο – Κενό σήμα.
Σημειώστε επίσης την παρουσία 6 Επώνυμων δεικτών (A – E) και τον υπολογισμό της τιμής χρόνου μεταξύ αυτών των δεικτών σε ps.
Επιλογές μενού

View

Ο View Το υπομενού χρησιμοποιείται για τον έλεγχο διαφόρων χαρακτηριστικών που σχετίζονται με τη γραφική απόδοση των στοιχείων κατάστασης καθώς και με τις τιμές στο υποπαράθυρο σήματος. Από αυτό το μενού, μπορείτε να μετατρέψετε το παράθυρο σήματος σε Ασπρόμαυρο ή και σε έγχρωμο. Ο View Το υπομενού σάς δίνει επίσης τη δυνατότητα να αλλάξετε την ώρα Διάσταση που κυμαίνεται από δευτερόλεπτα (δευτερόλεπτα) σε ψηφοδευτερόλεπτα (fs). Ο χρήστης μπορεί να βρει αυτήν την επιλογή View → Διάσταση κλίμακας σε χρόνο → fs.

Βοήθεια

Το υπομενού βοήθειας περιέχει επιλογές για την ενεργοποίηση της ηλεκτρονικής βοήθειας καθώς και για την εμφάνιση πληροφοριών έκδοσης προγράμματος.

Σύναψη

Αυτό το έγγραφο δημιουργήθηκε για να βοηθήσει τον χρήστη στην επιτυχή προσομοίωση του σχεδιασμού του και στην επαλήθευση της λειτουργικότητας διορθώνοντας το σχέδιο του απαραίτητου πάγκου δοκιμών και χρησιμοποιώντας το Icarus Verilog μαζί με το GTKWave για την εμφάνιση των κυματομορφών και την παρατήρηση των αποτελεσμάτων.

Ιστορικό αναθεώρησης

Αναθεώρηση Ημερομηνία Περιγραφή
1.00 20 Μαΐου 2024 Αρχική έκδοση.

R19US0011EU0100 Αναθ.1.0
20 Μαΐου 2024
© 2024 Renesas Electronics
Λογότυπο

Έγγραφα / Πόροι

Προσομοίωση λογισμικού RENESAS ForgeFPGA [pdf] Οδηγός χρήστη
REN_r19us0011eu0100, ForgeFPGA Software Simulation, ForgeFPGA Software, ForgeFPGA, ForgeFPGA Simulation, Software Simulation, Simulation, Software

Αναφορές

Αφήστε ένα σχόλιο

Η διεύθυνση email σας δεν θα δημοσιευτεί. Τα υποχρεωτικά πεδία επισημαίνονται *