VHDL Σύνθεση για Actel με SDF Backannotation
Σε αυτό το tutorial θα δούμε πώς να χρησιμοποιούμε τον εργαλείο Exemplar Leonardo για να συνθέτουμε τις VHDL σχεδιάσεις σε Actel FPGA. Θα χρησιμοποιήσουμε το εργαλείο Designer από την Actel για να εκτελέσουμε place and route για την σχεδίαση. Αφού το κάνουμε αυτό, μπορούμε να εξάγουμε πληροφορίες post-layout timing και backannotate αυτό σε VHDL source για post-layout εξομοίωση. Υποθέτουμε ότι είναι γνωστό το πώς γράφεται VHDL κώδικας και ότι έχουμε ήδη κάποιο κώδικα για να συνθέσουμε.
Πρώτα σιγουρευόμαστε ότι τα εργαλεία της Mentor είναι στο δικό μας path.
Τώρα αλλάζουμε directory και πάμε στο directory όπου βρίσκεται ο VHDL κώδικας. Πληκτρολογούμε leonardo& για να ξεκινήσει το Leonardo. Η οθόνη λειτουργίας του Leonardo θα μοιάζει όπως φαίνεται στην εικόνα 1:
( εικόνα 1 )
Αρκετά από την σύνθεση για Actel flow είναι ήδη γραμμένα για να είναι σίγουρο ότι έχουμε θέσει τις σωστές επιλογές και ότι θα δημιουργήσουμε τα σωστά αρχεία για το Designer. Το πρώτο βήμα που πρέπει να κάνουμε είναι να διαβάσουμε τα πηγαία αρχεία (source files). Αυτό το κάνουμε με την εντολή I/O -> Read… από το μενού.
( εικόνα 2)
Πρέπει να χρησιμοποιήσουμε το κουμπί list που είναι δεξιά του κουμπιού folder. Αυτό μας αφήνει να διαλέξουμε μία λίστα από αρχεία στο project. Αυτά γίνονται compile από την αρχή της αυτής της λίστας προς το τέλος. Έτσι αν αναφερθούμε σε ένα συγκεκριμένο μοντέλο σε ένα άλλο VHDL αρχείο, πρέπει πρώτα να κάνουμε compile το αναφερόμενο μοντέλο. Μπορούμε να οργανώσουμε πάλι την λίστα με το κουμπί Move στο dialog box.
Σιγουρευόμαστε ότι έχουμε επιλέξει VHDL στην γραμμή Format για να μπούμε σε διαμόρφωση VHDL. Με αυτόν τον τρόπο δεν έχει σημασία τι προεκτάσεις αρχείων χρησιμοποιήσαμε ή δεν χρησιμοποιήσαμε για τα ονόματα των αρχείων μας. Τώρα πατάμε το κουμπί Read για να διαβάσουμε (read), compile και συνθέσουμε την σχεδίασή.
Μπορεί να πάρουμε διάφορες προειδοποιήσεις σε αυτό το σημείο. Τις διαβάζουμε προσεχτικά και διορθώνουμε τυχόν προβλήματα που μπορεί να έχουμε. Όμως μία προειδοποίηση μπορεί να μην είναι σοβαρή. Για παράδειγμα κάτι σαν αυτό :
“syn_arit.vhd”, line 419: Warning, variable z is never assigned a value
δεν είναι πρόβλημα. Αν πάρουμε προειδοποιήσεις σχετικά με latches ή για προβλήματα cycle/loop, πρέπει να οπωσδήποτε να διορθωθούν.
Τώρα πρέπει να τρέξουμε το script που φροντίζει για τα υπόλοιπα της σύνθεσης για εμάς:
Απλά πληκτρολογούμε : type synth.
Όπου το αρχείο synth αντιγράφεται από το $CLASS/ee462/synth .Το αρχείο πρέπει να βρίσκεται στο directory από το οποίο ξεκινήσαμε το Leonardo.
Όταν ολοκληρωθεί, βγαίνουμε από το Leonardo. Το αρχείο toy.edf δημιουργήθηκε και είναι η είσοδος στο Designer. Επίσης υπάρχει το αρχείο toy.area_report το οποίο είναι μία ολοκληρωμένη αναφορά χώρου (area report) για ολόκληρη την σχεδίαση.
Τώρα είμαστε έτοιμοι να τρέξουμε place and route με το Designer. Πρέπει να αντιγράψουμε το αρχείο $CLASS/ee462/toy.dsf στο directory της σχεδίασής μας.
Τρέχουμε το εργαλείο run and place, Designer, με την παρακάτω εντολή: designer script:toy.dsf
Αυτό τρέχει το εργαλείο σε batch mode. Αυτό που γίνεται είναι ότι το δικτύωμα (netlist) που δημιουργήσαμε, toy.edf, διαβάζεται όπως και τα δεδομένα (data) για εξάρτημα Actel (Actel device) το οποίο στοχεύουμε (targetting) (1020B). Η σχεδίαση μεταφράζεται (compiled) και το place and route εκτελείται. Αυτό παίρνει μερικά λεπτά. Όταν ολοκληρωθεί το δομικό δικτύωμα (structural netlist) (VHDL) δημιουργείται, toy.structural.vhdl , όπως επίσης δημιουργείται και ένα αρχείο καθυστέρησης (delay file), toy.sdf. Αυτά χρησιμοποιούνται στην post-layout εξομοίωση. Τέλος, ένα αρχείο fuse, toy.afm θα παραχθεί. Αυτό είναι το αρχείο που χρησιμοποιείται για να προγραμματίσει το εξάρτημα (part) αφού ολοκληρωθεί η εξομοίωση.
Αφού έχουμε όλα τα δεδομένα από το place and route, είναι ώρα να αρχίσουμε την post layout εξομοίωση. Αυτό το βήμα πρέπει να το εκτελέσουμε μία μόνο φορά. Αν το έχουμε κάνει ήδη συνεχίζουμε. Φτιάχνουμε μία map entry για την βιβλιοθήκη act3 η οποία χρησιμοποιείται στο να μοντελοποιήσουμε εξαρτήματα της Actel :
qhmap act1 $CLASS/Vital/act1
Τώρα μεταφράζουμε (compile) τις οντότητες (entities) για το δομικό δικτύωμα:
qvhcom toy.structural.vhdl –just e
Τώρα μεταφράζουμε τις αρχιτεκτονικές (architectures) για το δομικό δικτύωμα:
qvhcom toy.structural.vhdl –just a
Τώρα μεταφράζουμε το δοκιμαστικό (testbench), αν δεν το έχουμε ήδη κάνει.
Τρέχουμε την εξομοίωση ενώ προσκολλάμε το SDF αρχείο.
Παράδειγμα: qhsim –sdfmax /dut = toy.sdf testbench_architecture
Εδώ αντικαθιστάμε το όνομα που έχουμε δώσει στο εξάρτημά μας στο testbench με το dut. Το ίδιο κάνουμε με το όνομα της αρχιτεκτονικής στο testbench με το testbench_architecture. (πχ qhsim –sdfmax /CPU=toy.sdf test).
Χρήση του Designer για Ανάλυση Χρόνου
Αφού έχουμε κάνει place and route στην Actel σχεδίαση, μπορούμε να χρησιμοποιήσουμε το εργαλείο Designer για να κάνουμε κάποια στοιχειώδη ανάλυση χρόνου, για να δούμε πόσο γρήγορα θα τρέξει το κύκλωμά μας. Εδώ είναι τα βήματα για να το κάνουμε αυτό :
Αφού φορτωθεί η database, χρησιμοποιούμε το κουμπί DT Analyze για να εμφανίσουμε το Filters dialog box:
(εικόνα 1)
Μπορούμε να ορίσουμε από τι sources (πηγές) και σε ποιες destinations (κατευθύνσεις) το εργαλείο πρέπει να χρησιμοποιήσει στην ανάλυση. Το εργαλείο θα βρει τότε best/worst/typical paths από τις πηγές στις κατευθύνσεις και θα μας τα εμφανίσει βασισμένα στις επιλογές μας. Μπορούμε να δούμε τα μεγαλύτερα μονοπάτια (longest paths) (καλό για υπολογισμούς ταχύτητας ρολογιού) και τα μικρότερα μονοπάτια (shortest paths) (καλό για κρατάει προβλήματα χρόνου μακριά από το τσιπ).
Μπορούμε να επιλέξουμε (customize) και άλλα στην ανάλυση με το κουμπί preferences:
( εικόνα 2)
Εδώ μπορούμε να καθορίσουμε το πλήθος των δρόμων (paths) που θα αναφερθούν καθώς και άλλες επιλογές.
Στην συνέχεια βλέπουμε ένα παράδειγμα της εξόδου για δέκα δρόμους (paths), worst case, register to register :
(εικόνα 3)
Μπορούμε να δούμε από αυτό μία worst case delay 223.9 ns από το IR στο CCREG. Αν θέλουμε περισσότερες λεπτομέρειες, μπορούμε να επιλέξουμε την διαδρομή (path) και να χρησιμοποιήσουμε τις επιλογές Expand -> Chart ή Expand Options. Το γραφικό μπορεί να γίνει zoom in ή zoom out , να δούμε τους τύπους μακροεντολών Actel (Actel macro types) καθώς και κείμενα με λεπτομέρειες που αφορούν το φόρτωμα (loading), την καθυστέρηση (delay) κλπ.
( εικόνα 4 )