Κεφάλαιο 1 - Εισαγωγή
15
Ένα από τα πιο διαδεδομένα και συχνά χρησιμοποιημένα προγράμματα είναι το
ModelSim [1] από την εταιρία Mentor Graphics. Το ModelSim είναι ένα τοπικό πρόγραμμα
που επιτρέπει την προσομοίωση και ανάλυση αποτελεσμάτων για τις γλώσσες VHDL, Verilog
και SystemC [2]. Οι σύγχρονες εκδόσεις που προσφέρονται υποστηρίζουν μόνο Microsoft
Windows και ενώ δίνεται δοκιμαστική έκδοση με περιορισμό χρήσης στις 21 μέρες, η
ολοκληρωμένης έκδοσης απαιτεί την αγορά άδειας χρήσης. Παρόλα αυτά το ModelSim
προσφέρει σε έναν εξοικειωμένο χρήστη την δυνατότητα ανάλυσης του παραγόμενου
κυκλώματος σε βάθος, ενώ υπάρχει πλούτος διδακτικού υλικού για τους αρχάριους χρήστες.
Αξιοσημείωτο επίσης είναι το πρόγραμμα Vivado Design Suite [3] από την εταιρία Xilinx. Το
συγκεκριμένο πρόγραμμα βασίζεται στο ISE Simulator [4], επίσης από την Xilinx, και
σκοπεύει να το αντικαταστήσει. Το Vivado Design Suite δεν περιορίζεται στην προσομοίωση
αλλά περιλαμβάνει την ολοκληρωμένη διαδικασία από την συγγραφή ως στην σύνθεση
προγραμμάτων σε πλακέτα. Υποστηρίζει VHDL, Verilog και SystemC ενώ μπορεί να
λειτουργήσει σε Microsoft Windows αλλά και Linux με περιορισμό όμως σε συστήματα των
64 bit. Το Vivado Design Suite προσφέρεται σε πολλές διαφορετικές εκδόσεις με διαφορετικές
δυνατότητες που αντικατοπτρίζουν και το κόστος της κάθε έκδοσης αλλά και δοκιμαστική
έκδοση με όλες τις δυνατότητες η οποία υπόκειται σε περιορισμό των 30 ημερών.
Υποστηρίζεται ότι το Vivado Design Suite έχοντας ενσωματωμένο προσομοιωτή μπορεί να
προσφέρει προσομοίωση μέχρι και τρεις φορές γρηγορότερα από το ISE Simulator [5]. Αξίζει
να σημειωθεί ότι το ISE Simulator χρησιμοποιεί το ModelSim για προσομοίωση. Κλείνοντας
τις αναφορές σε τοπικά προγράμματα, θα αρκεστούμε σε μια επιφανειακή ανάλυση του Icarus
Verilog [6]. Το συγκεκριμένο πρόγραμμα αποτελείται από ένα εργαλείο προσομοίωσης και
σύνθεσης με περιορισμένες δυνατότητες. Υποστηρίζει μόνο την γλώσσα Verilog αλλά μπορεί
να χρησιμοποιηθεί σε Microsoft Windows, Linux, OpenSolaris, AIX, FreeBSD και Mac OS X.
Το Icarus Verilog στοχεύει κυρίως στην ίδια την προσομοίωση κώδικα και προτρέπει στην
χρήση εξωτερικών προγραμμάτων διαδικασίες όπως η προεπισκόπηση κυματομορφών με
GTKWave [7] η ακόμη και η ολοκληρωμένη σύνθεση προγραμμάτων με Yosys [8]. Γίνεται
πλέον φανερό ότι υπάρχει πλήθος τοπικών προγραμμάτων που αποσκοπούν στην
μεταγλώττιση και προσομοίωση HDL προγραμμάτων με μεγάλη ποικιλία δυνατοτήτων που
προσφέρονται .
Στο περιβάλλον του διαδικτύου υπάρχουν επίσης πολλά εργαλεία που αποσκοπούν σε
παρόμοιες λειτουργίες. Όπως είδαμε στην προηγούμενη παράγραφο, το Icarus Verilog
προσφέρει περιορισμένες δυνατότητες σε τοπικό περιβάλλον. Ταυτόχρονα όμως επιτρέπει
λόγο τις φύσης του ως προσομοιωτής σε τερματικό, την χρήση του στο εργαλείο iVerilog [9].
Το εργαλείο αυτό αξιοποιεί την χρήση του προσομοιωτή Icarus Verilog προσφέροντας την
δυνατότητα στον χρήστη να δοκιμάσει και να εκτελέσει τον κώδικά του με την προσιτότητα
τόσο στην τοποθεσία όσο και στις συσκευές που προσφέρει το διαδίκτυο. Παράλληλα όμως,
το iVerilog μοιράζεται και τους σημαντικότερους περιορισμούς του Icarus Verilog.
Συγκεκριμένα, παρατηρείται αρχικά ότι δεν υποστηρίζεται κάποιο είδος προβολής
κυματομορφών και ο μόνος τρόπος προβολής αποτελεσμάτων είναι η έξοδός τους προς το
τερματικό. Επίσης δεν υπάρχει υποστήριξη για την αποθήκευση προγραμμάτων ή την χρήση
διαφορετικών αρχείων. Ενώ φυσικά, υποστηρίζεται και πάλι μόνο η γλώσσα Verilog. Ένα πιο
ολοκληρωμένο εργαλείο είναι το EDA Playground [10]. Το εργαλείο αυτό υποστηρίζει αρκετές
διαφορετικές γλώσσες τόσο στην περιγραφή υλικού όσο και σε άλλους τομείς. Ταυτόχρονα
προσφέρει την επιλογή μεταξύ διαφόρων εργαλείων προσομοίωσης, προσθήκη βιβλιοθηκών,
επιλογές μεταγλώττισης αλλά και αποτελεσματικό εργαλείο προβολής κυματομορφών.