Άδεια Χρήσης. Χρηματοδότηση

Σχετικά έγγραφα
«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Ακολουθιακός Κώδικας

Οδηγίες εγκατάστασης και χρήσης του Quartus

Επιβεβαίωση ορθής λειτουργίας απλών ψηφιακών κυκλωμάτων

Σχεδίαση Ψηφιακών Συστημάτων

Εισαγωγή στη σχεδιαστική ροή της Xilinx

VHDL Εισαγωγικές έννοιες

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Μηχανές Πεπερασμένων Καταστάσεων

Σχεδίαση Ψηφιακών Συστημάτων

Κυκλωμάτων» Χειμερινό εξάμηνο

Κυριάκης - Μπιτζάρος Ευστάθιος Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 15: Καταχωρητές (Registers)

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Σχεδίαση Ψηφιακών Συστημάτων. Ενότητα: ΚΑΤΑΧΩΡΗΤΕΣ - ΑΠΑΡΙΘΜΗΤΕΣ

ΗΜΥ 210: Σχεδιασμός Ψηφιακών Συστημάτων. Καταχωρητές 1

Σχεδίαση Ψηφιακών Συστημάτων

ΗΜΥ 213 Εργαστήριο Οργάνωσης Η/Υ και Μικροεπεξεργαστών Εαρινό εξάμηνο Διδάσκων: Γιώργος Ζάγγουλος

ΠΑΡΑΡΤΗΜΑ Β. Verification

Περίληψη. ΗΜΥ-210: Λογικός Σχεδιασµός Εαρινό Εξάµηνο Παράδειγµα: Καταχωρητής 2-bit. Καταχωρητής 4-bit. Μνήµη Καταχωρητών

26-Nov-09. ΗΜΥ 210: Λογικός Σχεδιασμός, Χειμερινό Εξάμηνο Καταχωρητές 1. Διδάσκουσα: Μαρία Κ. Μιχαήλ

ΑΣΚΗΣΗ 1η ΤΟ ΠΕΡΙΒΑΛΛΟΝ ΣΧΕΔΙΑΣΗΣ QUARTUS II ΤΗΣ ALTERA

ΑΣΚΗΣΗ 2 η N-MOS ΚΑΙ P-MOS TRANSISTOR ΩΣ ΔΙΑΚΟΠΤΗΣ

Library, package και subprograms

Εφαρμογές Ψηφιακών Ηλεκτρονικών

Προσοµοίωση Συστηµάτων µε VHDL. (Peter Ashenden, The Students Guide to VHDL)

ΑΣΚΗΣΗ 2: Σχεδίαση και προσομοίωση κυκλωμάτων καταχωρητών και μετρητών

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ψηφιακή Σχεδίαση

Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων VLSI II

Μοντελοποίηση Λογικών Κυκλωμάτων

Εργαστήριο Αρχιτεκτονικής Υπολογιστών Ι. Εισαγωγή στη VHDL

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 Συµπληρωµατική ΔΙΑΛΕΞΗ 14: Περιγραφή Ακολουθιακών Κυκλωµάτων στη VHDL

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Συναρτήσεις, Διαδικασίες και Δομές Ελέγχου Λειτουργίας Κυκλωμάτων (testbenches)

ΕΙΣΑΓΩΓΙΚΟ ΕΓΧΕΙΡΙ ΙΟ ΓΙΑ ΣΧΕ ΙΑΣΜΟ ΜΕ ΧΡΗΣΗ ΤΗΣ ΓΛΩΣΣΑΣ VHDL

Εισαγωγή στη γλώσσα περιγραφής υλικού VHDL. Γενικά χαρακτηριστικά, σύνταξη και τύποι. Ψηφιακή Σχεδίαση µε CAD ΙΙ - ιάλεξη 1 -

Ακολουθιακές εντολές. (Peter Ashenden, The Students Guide to VHDL)

Εισαγωγή στη VHDL Υλοποίηση στο Quartus

1 Περίληψη Η εργασία έγινε στα πλαίσια του μαθήματος των Ψηφιακών Ηλεκτρονικών Συστημάτων με σκοπό αρχικά την εκμάθηση της γλώσσας VHDL (Very High Spe

Ενσωματωμένα Συστήματα

Structural VHDL. Structural VHDL

VHDL για Σχεδιασµό Ακολουθιακών Κυκλωµάτων

ΗΜΥ211 Εργαστήριο Ψηφιακών Συστημάτων

Ελίνα Μακρή

ΗΜΥ 210: Σχεδιασμός Ψηφιακών Συστημάτων. VHDL για Ακολουθιακά Κυκλώματα 1

ΗΜΥ211 Εργαστήριο Ψηφιακών Συστημάτων

Μοντελοποίηση Επιπέδου Πύλης. (Peter Ashenden, The Students Guide to VHDL)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Lab 2 Manual - Introduction to Xilinx

Περιγραφή Κυκλωμάτων με χρήση της VHDL. Δομική περιγραφή και περιγραφή Μηχανών Πεπερασμένων Καταστάσεων

12 o Εργαστήριο Σ.Α.Ε

ΑΣΚΗΣΗ 8 η -9 η ΣΧΕΔΙΑΣΗ ΑΡΙΘΜΗΤΙΚΗΣ ΛΟΓΙΚΗΣ ΜΟΝΑΔΑΣ ΤΕΣΣΑΡΩΝ ΔΥΑΔΙΚΩΝ ΨΗΦΙΩΝ

ΑΣΚΗΣΗ 4 η ΕΙΣΑΓΩΓΗ ΣΤΗ ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ ΜΕ ΧΡΗΣΗ Η/Υ (QUARTUS II ALTERA)

ΑΣΚΗΣΗ 9η-10η ΑΡΙΘΜΗΤΙΚΗ-ΛΟΓΙΚΗ ΜΟΝΑΔΑ ΕΝΟΣ ΨΗΦΙΟΥ (1-BIT ALU)

Ψηφιακή Λογική Σχεδίαση

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

Ψηφιακή Επεξεργασία Σήματος

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

Εισαγωγή στη Verilog με το ISE

Εισαγωγή Η VHDL υποστηρίζει τους εξής τρείς βασικούς και διαφορετικούς τρόπους περιγραφής

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Συντρέχων Κώδικας


Εισαγωγή στη γλώσσα περιγραφής υλικού VHDL. Βασικές εντολές και η περιγραφή συνδυαστικών κυκλωµάτων. Ψηφιακή Σχεδίαση µε CAD ΙΙ - ιάλεξη 2 -

ΗΥ-225. Verilog HDL. Τα βασικά...

Εργαστηριακή Άσκηση 4: Ιεραρχική σχεδίαση και προσχεδιασμένοι πυρήνες

Αρχιτεκτονικές Δικτύων & Πρωτόκολλα Ι

Πανεπιστήµιο Θεσσαλίας

Ενσωματωμένα Συστήματα

Εισαγωγή στην πληροφορική

ηµιουργία Αρχείου Πρότζεκτ (.qpf)

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα

Μικροηλεκτρονική - VLSI

Πρόλογος...13 I ΣΧΕ ΙΑΣΜΟΣ ΣΕ ΕΠΙΠΕ Ο ΚΥΚΛΩΜΑΤΟΣ Εισαγωγή... 19

Ενσωματωμένα Συστήματα

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

6 η Θεµατική Ενότητα : Σχεδίαση Συστηµάτων σε Επίπεδο Καταχωρητή

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

Εισαγωγή στο περιβάλλον Code::Blocks

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Πακέτα και Συστατικά Στοιχεία (Υποκυκλώματα)

Σχεδίαση CMOS Ψηφιακών Ολοκληρωμένων Κυκλωμάτων

Multi Cycle Datapath. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 1

ΤΕΧΝΟΛΟΓΙΕΣ ΥΛΟΠΟΙΗΣΗΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

Θέματα χρονισμού σε φλιπ-φλοπ και κυκλώματα VLSI

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Προχωρημένα Θέματα Σχεδιασμού με VHDL

ΗΜΥ 210: Λογικός Σχεδιασµός, Εαρινό Εξάµηνο Ένα συνδυαστικό κύκλωµα µπορεί να περιγραφεί από: Φεβ-05. n-είσοδοι

Περιγραφή ψηφιακών συστημάτων με τη γλώσσα VHDL και ανάπτυξη σε προγραμματιζόμενες ολοκληρωμένες

Αρχιτεκτονική Σχεδίαση Ασαφούς Ελεγκτή σε VHDL και Υλοποίηση σε FPGA ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

Μελέτη και σχεδίαση µιας υποτυπώδους κεντρικής µονάδας επεξεργασίας στα 32 µπιτ.

ΑΣΚΗΣΗ 10 ΣΧΕΔΙΑΣΗ ΑΚΟΛΟΥΘΙΑΚΩΝ ΚΥΚΛΩΜΑΤΩΝ

Αρχιτεκτονικές Δικτύων & Πρωτόκολλα Ι

Εισαγωγή στις Τηλεπικοινωνίες / Εργαστήριο

Σχεδιασμός Αποκωδικοποιητή και υλοποίηση του στο Logisim και στο Quartus. Εισαγωγή στο Logisim

Περιγραφή Κυκλωμάτων με χρήση της VHDL. Καταχωρητές και χρονισμός με ρολόι

Οδηγίες για την εγκατάσταση του πακέτου Cygwin

K24 Ψηφιακά Ηλεκτρονικά 9: Flip-Flops

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα

Ψηφιακή Λογική Σχεδίαση

Πανεπιστήμιο Πατρών. Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών. Εργαστήριο Σχεδίασης Ολοκληρωμένων Κυκλωμάτων

Ενςωματωμένα Συςτήματα Υλοποίηςη του SDES ςε Hardware

Κεντρική Μονάδα Επεξεργασίας

Transcript:

Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναφέρεται ρητώς. Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα» του ΕΜΠ έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.

1. ΕΙΣΑΓΩΓΗ 1. ΤΟ ΠΕΡΙΒΑΛΛΟΝ ΠΡΟΣΟΜΟΙΩΣΗΣ ModelSim Ο σχεδιασμός ψηφιακών συστημάτων βασίζεται σε μεγάλο βαθμό στη λειτουργία της προσμομοίωσης, δηλαδή, τον λειτουργικό και χρονικό έλεγχο αφαιρετικών περιγραφών των σχεδιαζόμενων συστημάτων, με σκοπό την εξεύρεση λαθών όσο το δυνατόν νωρίτερα. Η προσομοίωση απαιτεί τον κατάλληλο υπολογιστικό περιβάλλον. Τα πλέον διαδεδομένα περιβάλλοντα προσομοίωσης στη βιομηχανία σήμερα είναι τα ModelSim (http://www.mentor.com/products/fv/modelsim/), VCS (http://www.synopsys.com/tools/verification/functionalverification/pages/vcs.aspx), Incisive Enterprise Simulator (http://www.cadence.com/products/sd/enterprise_simulator/pages/default.aspx) και Active- HDL (http://www.aldec.com/en/products/fpga_simulation/active-hdl). Από αυτά, το περιβάλλον ModelSim (αρχικά αναπτύχθηκε από την εταιρεία Model Technologies που στη συνέχεια πωλήθηκε στην εταιρεία Mentor Graphics), αποτελεί εδώ και πολλά χρόνια μια σταθερή βιομηχανικού επιπέδου πλατφόρμα που επιπλέον, μετά από ειδικές συμφωνίες με εταιρείες κατασκευής μονάδων FPGA (Xilinx, Altera), έχει ενσωματωθεί στα δικά τους εργαλεία και προσφέρεται δωρεάν σε σπουδαστές. Τη στιγμή που γράφονται αυτές οι σημειώσεις, η εταιρεία κατασκευής μονάδων FPGA Altera (http://www.altera.com) προσφέρει δωρεάν το περιβάλλον προσομοίωσης ModelSim, το οποίο ονομάζει ModelSim-Altera Starter Software, στον υπερσύνδεσμο https://www.altera.com/download/software/modelsim-starter. Το λογισμικό αυτό απαιτεί μόνο μια απλή διαδικασία πιστοποίησης (δημιουργία κωδικού χρήστη), και καλύπτει πλήρως τις ανάγκες του μαθήματος. Οι εικόνες που περιλαμβάνονται στις παρούσες σημειώσεις είναι από την έκδοση ModelSim-Altera Starter Software 10.0c (χωρίς τις αναβαθμίσεις υποστήριξης 1 και 2) και δεν διαφέρουν από οποιαδήποτε πρόσφατη έκδοση. Η λειτουργία του περιβάλλοντος προσομοίωσης ModelSim θα παρουσιαστεί στις επόμενες υποενότητες. 2. ΡΟΕΣ ΠΡΟΣΟΜΟΙΩΣΗΣ Ο προσομοιωτής ModelSim υποστηρίζει τρεις ροές προσομοίωσης, με διαφορετικά χαρακτηριστικά η κάθε μία, που εικονίζονται στα σχήματα 1.1, 1.2 και 1.3, τη βασική ροή, τη ροή με δημιουργία έργου και τη ροή με πολλαπλές βιβλιοθήκες πόρων. Η βασική ροή προσομοίωσης (σχήμα 1.1) αποτελείται απο τα παρακάτω βήματα. Δημιουργία βιβλιοθήκης εργασίας: Στο περιβάλλον ModelSim, όλες οι μονάδες υλικού μεταγλωττίζονται και τοποθετούνται σε μια βιβλιοθήκη. Η βασική και απαραίτητη βιβλιοθήκη ονομάζεται κατά σύμβαση work (βιβλιοθήκη εργασίας), και εκεί τοποθετούνται όλες οι μονάδες που μεταγλωττίζονται, εκτός αν για κάποιες μονάδες επιλεγεί άλλον όνομα, για καλύτερη οργάνωση του κώδικα. Μεταγλώττιση κώδικα: Μετά τη δημιουργία βιβλιοθήκης, οι μονάδες υλικού πρέπει να μεταγλωττιστούν σε ειδική εσωτερική μορφή, κατάλληλη για προσομοίωση. Η μορφή αυτή

είναι συμβατή με όλες τις πλατφόρμες εκτέλεσης του προσομοιωτή ModelSim (Windows, Linux) και συνεπώς δεν είναι απαραίτητη η επανα-μεταγλώττιση κατά τη μεταφορά σχεδίων υλικού. Αρχικοποίηση και διεξαγωγή προσομοίωσης: Αφού μεταγλωττιστεί ο κώδικας και τοποθετηθούν οι μονάδες υλικού στη βιβλιοθήκη εργασίας, η διαδικασία της προσομοίωσης μπορεί εκτελεστεί ως εξής. Όλες οι μονάδες που αναφέρονται στον κώδικα αντιστοιχίζονται με εσωτερικές μορφές που έχουν προκύψει από τη μεταγλώττιση και ο χρόνος προσομοίωσης αρχικοποιείται στο 0. Με κατάλληλες εντολές του χρήστη ο χρόνος αυτός αυξάνεται και παράγονται αποτελέσματα. Έλεγχος αποτελεσμάτων και αποσφαλμάτωση: Όταν η προσομοίωση εκτελεστεί για όσο χρόνο κρίνει ο σχεδιαστής, τα αποτελέσματα που παράχθηκαν μπορούν να ελεγχθούν είτε εποπτικά με κυματομορφές εισόδων και εξόδων είτε με σχετικά διαγνωστικά μηνύματα. Σε περίπτωση που παρατηρηθούν λάθη, ο προσομοιωτής ModelSim προσφέρει ισχυρούς μηχανισμούς εντοπισμού τους. Σχήμα 1.1. Βασική ροή προσομοίωσης.

Η ροή προσομοίωσης με δημιουργία έργου (σχήμα 1.2) βοηθά το σχεδιαστή να αυτοματοποιήσει τις διαδικασίες σχεδιασμού και ελέγχου. Η δημιουργία έργου δεν είναι πάντως απαραίτητη στο περιβάλλον ModelSim. Οι βασικές διαφορές της ροής αυτής με τη βασική ροή είναι: Δεν απαιτείται η δημιουργία βιβλιοθήκης εργασίας μια και αυτή δημιουργείται αυτόματα με τη δημιουργία έργου. Κάθε φορά που ξεκινάει o προσομοιωτής ModelSim ανακαλεί το τελευταίο έργο που ήταν ανοικτό, εκτός αν ο σχεδιαστής το κλείσει με σχετική εντολή. Σχήμα 1.2. Ροή προσομοίωσης με δημιουργία έργου.

Η ροή προσομοίωσης με πολλαπλές βιβλιοθήκες πόρων βασίζεται στην ιδιότητα του ModelSim να χειρίζεται δύο ειδών βιβλιοθήκες: 1) την τοπική βιβλιοθήκη εργασίας, στην οποία τοποθετεί τις μονάδες υλικού που μεταγλωττίζονται και 2) βιβλιοθήκες πόρων. Τα περιεχόμενα της βιβλιοθήκης εργασίας είναι δυναμικά, δηλαδή αλλάζουν καθώς μεταγλωττίζονται αρχεία κώδικα. Τα περιεχόμενα των βιβλιοθηκών πόρων είναι στατικά, δηλαδή έχουν αποθηκευτεί σε εσωτερική μορφή στο παρελθόν, είτε από άλλες ομάδες σχεδιασμού είτε από τον ίδιο το σχεδιαστή. Συνήθως χρησιμοποιούνται για τη δημιουργία βιβλιοθηκών δομικών μονάδων (π.χ. ψηφιακές πύλες), που θα μπορούν να τοποθετηθούν σε πιο πολύπλοκα σχέδια. Η διαφορά αυτής της ροής είναι οτι οι μονάδες υλικού που αναφέρονται στον κώδικα, μπορεί να μην βρίσκονται στην βιβλιοθήκη εργασίας και να προκύψουν από μεταγλώττιση, αλλά να πρέπει να αντιστοιχιθούν με μονάδες από μια βιβλιοθήκη πόρων. Η ροή προσομοίωσης με πολλαπλές βιβλιοθήκες πόρων μπορεί να συνδυαστεί με τη ροή προσομοίωσης με δημιουργία έργου, με σκοπό να αυτοματοποηθεί η αντιστοίχιση πόρων με μονάδες υλικού του κώδικα. Σχήμα 1.3. Ροή προσομοίωσης με πολλαπλές βιβλιοθήκες πόρων. 3. ΒΑΣΙΚΗ ΡΟΗ ΠΡΟΣΟΜΟΙΩΣΗΣ Η αρχική εκτέλεση του προσομοιωτή ModelSim (καλώντας vsim σε περιβάλλον Linux ή πατώντας το αντίστοιχο εικονίδιο σε περιβάλλον Windows) έχει ως αποτέλεσμα την εμφάνιση της κεντρικής οθόνης του σχήματος 1.4, που περιλαμβάνει μενού και σειρές εργαλείων, παράθυρο βιβλιοθηκών (οι

περισσότερες είναι τεχνολογικές βιβλιοθήκες με στοιχεία χρονισμού μονάδων FPGA της εταιρείας Altera) και παράθυρο εντολών. Η οθόνη αυτή αλλάξει σε μεγάλο βαθμό κατά την πορεία της προσομοίωσης (εμφανίζονται ανάλογα με τις επιλογές του χρήστη άλλα παράθυρα, που παρουσιάζουν αποτελέσματα με διαφορετικό τρόπο, όπως μεταβλητές, σήματα, αντικείμενα, κυματομορφές, κ.α., και ελέγχονται από το μενού View). Οι αλλαγές αυτές δίνουν ευελιξία και εύρος δυνατοτήτων στο εργαλείο, μπορεί όμως να μπερδέψουν τον αρχάριο χρήστη. Για το λόγο αυτό, παρακάτω θα παρουσιαστούν εποπτικά τα κύρια βήματα της βασικής ροής προσομοίωσης. Σχήμα 1.4. Κεντρική αρχική οθόνη προσομοιωτή ModelSim. Πριν από την έναρξη της προσομοίωσης καλό είναι να αντιγραφούν όλα τα αρχεία κώδικα σε ένα νέο υποκατάλογο. Με την εντολή File Change Directory, η προσομοίωση ξεκινάει με αναφορά τον υποκατάλογο αυτό. Στη συνέχεια, με την εντολή File New Library, εμφανίζεται το παράθυρο του σχήματος 1.5 και δημιουργείται η βιβλιοθήκη εργασίας work ως φυσική οντότητα (υποκατάλογος) αλλά και λογική δέσμευση με τη διαδικασία προσομοίωσης των αρχείων κώδικα που έχουν αντιγραφεί, σύμφωνα και με τη διαδικασία του σχήματος 1.1. Γράφοντας τη λέξη work στα πεδία του σχήματος 1.5 και πατώντας OK, ο προσομοιωτής αλλάζει τη λίστα βιβλιοθηκών στην κεντρική οθόνη προσθέτωντας τη νέα βιβλιοθήκη work (σχήμα 1.6) και στο παράθυρο εντολών εμφανίζεται η εκτέλεση των: vlib work vmap work work Η συστηματική παρατήρηση του παράθυρου εντολών βοηθάει στην εκμάθηση αυτών που αντιστοιχούν στις επιλογές των μενού, που μπορεί να βοηθήσει στην αυτοματοποίηση της διαδικασίας προσομοίωσης (με χρήση αρχείου εντολών προσομοίωσης).

Σχήμα 1.5. Δημιουργία βιβλιοθήκης εργασίας. Σχήμα 1.6. Νέα (κενή) βιβλιοθήκης εργασίας. Για τη συνέχεια της παρουσίασης, δίνεται το παρακάτω αρχείο κώδικα που περιγράφει ένα σύγχρονο μετρητή παλμών πρός τα πάνω (από 0 έως 2 17 1), το οποίο έχει αντιγραφεί στον υποκατάλογο κώδικα. --* * * * * * * * * * * VHDL Source Code * * * * * * * * * * --* Title : Test_Counter --* Filename & Ext : test_counter.vhdl --* Author : David Bishop <dbishop@vhdl.org> X-XXXXX --* Created : 1999/03/12 --* Last modified : $Date: 1999-03-12 16:20:26-05 $ --* WORK Library : ASICNAME --* Description : Variable width counter and a register --* Known Bugs : --* RCS Summary : $Id: test_counter.vhdl,v 1.1 1999-03-12 16:20:26-05 bishop Exp $

--* : --* Mod History : $Log: test_counter.vhdl,v $ --* Mod History : Revision 1.1 1999-03-12 16:20:26-05 bishop --* Mod History : Initial revision --* Mod History : --* : --* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity test_counter is generic ( width : integer := 17 ); port ( clk : in std_ulogic; reset : in std_ulogic; enable : in std_ulogic; count : out std_logic_vector ( width-1 downto 0) ); end test_counter; -- RTL description. Adds 1 on every clock pulse when enable is asserted. architecture rtl of test_counter is constant terminal_count : integer := 2**width - 1; subtype counter_range is integer range 0 to terminal_count; signal count_int : counter_range; begin -- rtl count <= std_logic_vector (to_unsigned (count_int, width)); counter : process ( clk, reset ) begin if reset = '0' then count_int <= 0; elsif rising_edge ( clk ) then if enable = '1' then if count_int = terminal_count then count_int <= 0; else count_int <= count_int + 1; end if; end if; end if; end process counter; end rtl;

Με την εντολή Compile Compile ανοίγει το παράθυρο του σχήματος 1.7, από το οποίο επιλέγονται αρχεία κώδικα για μεταγλώττιση (στη συγκεκριμένη περίπτωση, το αρχείο counter.vhd). Με το πλήκτρο Compile (κάτω δεξιά) γίνεται μεταγλώττιση σε ειδική εσωτερική μορφή που τοποθετείται αν δεν προκύψουν σφάλματα στη βιβλιοθήκη εργασίας (σχήμα 1.8, οντότητα test_counter και αρχιτεκτονική rtl, που εμφανίζονται πατώντας αριστερά το +) ενώ με το πλήκτρο Done τερματίζεται η διαδικασία μεταγλώττισης. Σχήμα 1.7. Μεταγλώττιση αρχείων κώδικα. Σχήμα 1.8. Τοποθέτηση μεταγλωττισμένων αρχείων στη βιβλιοθήκη εργασίας.

Το επόμενο βήμα για την προσομοίωση είναι η αρχικοποίηση, που γίνεται είτε πατώντας δύο φορές την οντότητα test_counter στην κεντρική οθόνη βιβλιοθηκών, είτε εκτελώντας την εντολή Simulate Start Simulation και επιλέγοντας πάλι την ίδια οντότητα, όπως φαίνεται στο παράθυρο του σχήματος 1.9. Επειδή η οντότητα test_counter έχει μία μόνο αρχιτεκτονική (rtl), η επιλογή της πρώτης ισοδυναμεί με επιλογή και της δεύτερης (άλλωστε, στη VHDL προσομοιώνονται ζεύγη οντοτήτων-αρχιτεκτονικών, με το λειτουργικό κομμάτι προσομοίωσης να βρίσκεται στην αρχιτεκτονική). Σχήμα 1.9. Αρχικοποίηση προσομοίωσης. Με την αρχικοποίηση της προσομοίωσης εμφανίζονται μια σειρά από νέα παράθυρα μέσα στην κεντρική οθόνη (αν κάποιο από αυτά δεν εμφανιστεί, μπορεί ο χρήστης να το εμφανίσει από το μενου View). Τα παράθυρα αυτά, μπορούν να απεξαρτηθούν από την κεντρική οθόνη και να κινηθούν ελέυθερα επιλέγοντας Dock/Undock από το μενού του κάθε παραθύρου (πάνω αριστερά). Τα παράθυρα αυτά είναι: 1. Το παράθυρο δομής (σχήμα 1.10), που εικονίζει τις βασικές δομικές μονάδες από τις οποίες αποτελείται ο κώδικας που προσομοιώνεται (διεργασίες, συντρέχουσες εντολές, κτλ). 2. Το παράθυρο αντικειμένων (σχήμα 1.11), που εικονίζει τα βασικά αντικείμενα αποθήκευσης και χειρισμού δεδομένων (θύρες Ε/Ε, σήματα, μεταβλητές, σταθερές) που αντιστοιχούν στη δομική μονάδα που είναι επιλεγμένη στ οπαράθυρο δομής.

3. Το παράθυρο διεργασιών (σχήμα 1.12), που εικονίζει όλες τις ενεργές διεργασίες και συντρέχουσες εντολές σε κάθε φάση της προσομοίωσης. 4. Το παράθυρο κυματομορφών (σχήμα 1.13), που εικονίζει κυματομορφές επιλεγμένων σημάτων και θυρών Ε/Ε σε κάθε φάση της προσομοίωσης. Σχήμα 1.10. Παράθυρο δομής. Σχήμα 1.11. Παράθυρο αντικειμένων. Σχήμα 1.12. Παράθυρο διεργασιών.

Σχήμα 1.13. Παράθυρο κυματομορφών. Μετά την αρχικοποίηση μπορεί να εκτελεστεί η κύρια διαδικασία της προσομοίωσης. Η παρατήρηση των αποτελεσμάτων γίνεται με εποπτικό τρόπο στο παράθυρο κυματομορφών, το οποίο είναι αρχικά κενό (σχήμα 1.13). Η προσθήκη σημάτων και θυρών Ε/Ε στο παράθυρο κυματομορφών μπορεί να γίνει με διαφορετικούς τρόπους. Αυτό είναι ένα χαρακτηριστικό του προσομοιωτή ModelSim, οτι δηλαδή πολλές λειτουργίες γίνονται με εναλλακτικούς και όχι μοναδικό τρόπο, με σκοπό την αύξηση της ευελιξίας και συνεπώς και της παραγωγικότητας του χρήστη. Πιο συγκεκριμένα, η προσθήκη σημάτων στο παράθυρο κυματομορφών μπορεί να γίνει είτε πατώντας δεξί κουμπί στην οντότητα test_counter στο παράθυρο δομής, με το οποίο εμφανίζονται τα μενού του σχήματος 1.14 και μπορούμε να επιλέξουμε Add To Wave All items in region, είτε πατώντας δεξί κουμπί σε οποιοδήποτε σημείο του παράθυρου αντικειμένων, με το οποίο εμφανίζονται τα μενού του σχήματος 1.15 και μπορούμε να επιλέξουμε Add To Wave Signals in Region, είτε επιλέγοντας τα σήματα και τις θύρε Ε/Ε από το παράθυρο αντικειμένων και σύροντάς τα στο παράθυρο κυματομορφών. Σε κάθε επιλογή, εμφανίζονται οι αντίστοιχες εντολές στο παράθυρο εντολών, που μπορούν να χρησιμοποιηθούν για την αυτοματοποίηση της διαδικασίας. Σχήμα 1.14. Προσθήκη σημάτων στο παράθυρο κυματομορφών από το παράθυρο δομής.

Σχήμα 1.15. Προσθήκη σημάτων στο παράθυρο κυματομορφών από το παράθυρο αντικειμένων. Το επόμενο βήμα για σωστή προσομοίωση είναι η αρχικοποίηση των αναγαίων σημάτων και θυρών εισόδου (οι θύρες εξόδου δεν αρχικοποιούνται αλλά παίρνουν τιμές κατά τη διάρκεια της προσομοίωσης). Στο συγκεκριμένο παράδειγμα του μετρητή αναγκαίος είναι ο ορισμός ενός σήματος ρολογιού για την είσοδο clk και η αρχικοποίηση της εισόδου επίτρεψης enable στην τιμή 1. Κυκλωματικά ορθός αλλά όχι αναγκαίος είναι και ο ορισμός ενός παλμού επαναφοράς για την είσοδο reset, καθώς σε ένα πραγματικό κύκλωμα η αρχική κατάσταση είναι απροσδιόριστη ενώ στον προσομοιωτή τα σήματα και οι θύρες εισόδου αρχικά λαμβάνουν την μικρότερη τιμή του τύπου δεδομένων που ανήκουν. Οι αρχικοποιήσεις μπορούν να γίνουν σε οποιαδήποτε χρονική στιγμή της προσομοίωσης και επιρεάζουν τα αποτελέσματα από εκεί και πέρα. Ο ορισμός σήματος ρολογιού γίνεται πατώντας δεξί κουμπί στο επιθυμητό σήμα στο παράθυρο κυματομορφών (είσοδος clk στο σχήμα 1.16) και επιλέγοντας Clock... Όλα τα σήματα και οι θύρες Ε/Ε στο παράθυρο κυματομορφών εμφανίζονται ιεραρχικά (π.χ. /test_counter/clk), ώστε σε πολύπλοκα σχέδια με πολλά ιεραρχικά επίπεδα δομικών μονάδων να παρουσιάζονται με ακρίβεια οι οντότητες κάθε μονάδας. Οι παράμετροι του ρολογιού παρουσιάζονται στο σχήμα 1.17, όπου οι αναγραφόμενοι χρόνοι είναι ps. Με παρόμοιο τρόπο (δεξί κουμπί, επιλογή Force στο σχήμα 1.18), αρχικοποιήται και η είσοδος enable στην τιμή 1, όπως φαίνεται στο παράθυρο παραμέτρων του σχήματος 1.19.

Σχήμα 1.16. Εισαγωγή ρολογιού. Σχήμα 1.17. Παράμετροι ρολογιού.

Σχήμα 1.18. Εισαγωγή σταθεράς. Σχήμα 1.19. Παράμετροι σταθεράς. Το τελευταίο βήμα της διαδικασίας προσομοίωσης είναι η εκτέλεση για ορισμένο χρόνο, όπως προκύπτει από τα αντίστοιχα εργαλεία προσομοίωσης του σχήματος 1.20. Συγκεκριμένα, από αριστερά προς τα δεξιά, το πρώτο εργαλείο του σχήματος 1.20 (Restart) αρχικοποιεί ξανά την προσομοίωση, το δεύτερο (Run Length - πεδίο με αριθμητική τιμή 100 ps) ορίζει το βήμα προσομοίωσης, το τρίτο (Run) και το τέταρτο (ContinueRun) εκτελούν ένα βήμα προσομοίωσης (στο συγκεκριμένο σχήμα 100 ps) και στη συνέχεια ενημερώνουν το παράθυρο κυματομορφών, το πέμπτο εκτελεί συνεχή προσομοίωση (Run All) και το έκτο (Break) και το έβδομο (Stop) τη διακόπτουν (οι μικροδιαφορές εργαλείων με παραπλήσια λειτουργία περιγράφονται στο εγχειρίδιο οδηγιών του προσομοιωτή ModelSim). Στη συνεχή προσομοίωση το παράθυρο κυματομορφών ενημερώνεται μόνο όταν γίνει διακοπή.

Σχήμα 1.20. Εργαλεία χρόνου προσομοίωσης. Η πιο απλή διαδικασία προσομοίωσης (για απλά και μικρά σχέδια, όπως το παράδειγμα της οντόητας test_counter), γίνεται πατώντας διαδοχικά το εργαλείο Run, με αποτέλεσμα να εμφανίζονται σταδιακά οι κυματομορφές όπως εικονίζονται στο σχήμα 1.21, και να γίνεται εύκολη η παρατήρηση της βασικής συμπεριφοράς του κυκλώματος. Σχήμα 1.21. Κυματομορφές μετρητή.

2. ΤΟ ΕΡΓΑΛΕΙΟ ΣΥΝΘΕΣΗΣ ΚΑΙ ΥΛΟΠΟΙΗΣΗΣ PlanAhead 1. ΕΙΣΑΓΩΓΗ Η δεύτερη κύρια λειτουργία κατά το σχεδιασμό ψηφιακών συστημάτων είναι η σύνθεση. Η σύνθεση μετασχηματίζει με μοναδικό τρόπο μια αφαιρετική γλωσσική περιγραφή σε κυκλωματική περιγραφή, αρχικά ανεξάρτητα από την τεχνολογία υλοποίησης (σύνθεση επιπέδου μεταφορών καταχωρητών RTL), και στη συνέχεια βασισμένη στην τεχνολογία υλοποιησης (τεχνολογική σύνθεση). Η πρώτη, χρησιμοποιεί ως δομικές μονάδες συνηθισμένα ψηφιακά κυκλώματα, συνδυαστικά και ακολουθιακά (πύλες, πολυπλέκτες, κωδικοποιητές, καταχωρητές, μετρητές, κ.α.). Η δεύτερη χρησιμοποιεί ψηφιακά κυκλώματα που υπάρχουν στην τεχνολογική βιβλιοθήκη που παρέχεται από τον τελικό κατασκευαστή, όπως γεννήτριες συναρτήσεων LUT και flip-flop για τεχνολογίες FPGA ή τυπικά κελιά για τεχνολογίες ASIC. Τα πλέον διαδεδομένα περιβάλλοντα σύνθεσης στη βιομηχανία σήμερα είναι τα Design Compiler (http://www.synopsys.com/tools/implementation/rtlsynthesis/dcultra/pages/default.aspx ), Synplify (http://www.synopsys.com/tools/implementation/fpgaimplementation/fpgasynthesis/pa ges/synplifypremier.aspx), Encounter RTL Compiler (http://www.cadence.com/products/ld/rtl_compiler/pages/default.aspx), Precision RTL (http://www.mentor.com/products/fpga/synthesis/precision_rtl/), ISE Design Suite (http://www.xilinx.com/products/design-tools/ise-design-suite/index.htm), Vivado Design Suite (http://www.xilinx.com/products/design-tools/vivado/index.htm) και Quartus II (http://www.altera.com/products/software/quartus-ii/subscription-edition/qts-se-index.html). Από αυτά, το περιβάλλον ISE Design Suite περιλαμβάνει μια σειρά εργαλείων για υλοποίηση σε τεχνολογία Xilinx FPGA αλλά και το εργαλείο PlanAhead, που με εποπτικό τρόπο παρουσιάζει τα αποτελέσματα τόσο της τεχνολογικής όσο και της μη τεχνολογικής σύνθεσης, και μπορεί να αποτελέσει χρήσιμη βοήθεια στην εκμάθηση των γλωσσών περιγραφής υλικού. Τη στιγμή που γράφονται αυτές οι σημειώσεις, η εταιρεία κατασκευής μονάδων FPGA Xilinx (http://www.xilinx.com) προσφέρει δωρεάν το περιβάλλον ISE Design Suite μαζί με το εργαλείο PlanAhead, σε χρονικά περιορισμένη δοκιμαστική έκδοση, στον υπερσύνδεσμο http://www.xilinx.com/support/download/index.htm. Το λογισμικό αυτό απαιτεί μια απλή διαδικασία πιστοποίησης (δημιουργία κωδικού χρήστη) και τη δημιουργία αρχείου άδειας λειτουργίας, και καλύπτει πλήρως τις ανάγκες του μαθήματος. Οι εικόνες που περιλαμβάνονται στις παρούσες σημειώσεις είναι από την έκδοση 12.3 του εργαλείου PlanAhead (λόγω προβλημάτων συμβατότητας με το λειτουργικό σύστημα Windows XP) και δεν διαφέρουν από οποιαδήποτε πρόσφατη έκδοση. Η λειτουργία του εργαλείου σύνθεσης και υλοποίησης PlanAhead θα παρουσιαστεί στις επόμενες υποενότητες. 2. ΣΥΝΘΕΣΗ ΜΕ ΤΟ ΕΡΓΑΛΕΙΟ PLANAHEAD Το εργαλείο PlanAhead υποστηρίζει τη δημιουργία διαφορετικού τύπου έργων, ανάλογα με τα διαθέσιμα αρχεία κώδικα. Η αρχική εκτέλεσή του (καλώντας planahead σε περιβάλλον Linux ή πατώντας το αντίστοιχο εικονίδιο σε περιβάλλον Windows), έχει ως αποτέλεσμα την εμφάνιση της

αρχικής οθόνης του σχήματος 2.1, από την οποία ξεκινάει η διαδικασία δημιουργίας νέου έργου με την εντολή Create New Project. Σχήμα 2.1. Αρχική οθόνη εργαλείου PlanAhead. Το αποτέλεσμα της εντολής είναι η εμφάνιση του εισαγωγικού παραθύρου του σχήματος 2.2, και στη συνέχεια του παραθύρου του σχήματος 2.3, στο οποίο καθορίζονται το όνομα και η θέση (υποκατάλογος) του νέου έργου. Ο υποκατάλογος αυτός δεν είναι απαραίτητο να περιέχει αρχεία κώδικα, αυτά αντιγράφονται αυτόματα από το εργαλείο στην κατάλληλη θέση. Στη συνέχεια εμφανίζεται το παράθυρο του σχήματος 2.4, όπου ορίζεται ο τρόπος δημιουργίας, σύνδεσης ή μεταφοράς των αρχείων κώδικα από άλλες θέσεις ή έργα άλλων εργαλείων. Η πρώτη επιλογή, Specify RTL Sources, χρησιμοποιείται για την αντιγραφή υπαρχόντων αρχείων από άλλο υποκατάλογο. Αυτό φαίνεται και στο σχήμα 2.5, όπου επιλέγεται το αρχείο counter.vhd (το περιεχόμενό του είναι το ίδιο με αυτό του προηγουμένου κεφαλαίου), μεταγλώττιση στη βιβλιοθήκη εργασίας work και αντιγραφή από την αρχική του θέση στον υποκατάλογο του νέου έργου (Copy Sources into Project). Στη συνέχεια εμφανίζεται το παράθυρο προαιρετικής εισαγωγής αρχείου περιορισμών (σχήμα 2.6), που έχει να κάνει με την τελική υλοποίηση και αρχικά μπορεί να μείνει κενό. Ακολουθεί το παράθυρο επιλογής μονάδας υλοποίησης (σχήμα 2.7), όπου επιλέγεται η μονάδα FPGA στην οποία θα γίνει υλοποίηση. Επιλέγοντας στοιχεία όπως οικογένεια μονάδων (Family) ή συσκευασία (Package), η λίστα μονάδων περιορίζεται σημαντικά και μπορούμε ευκολότερα να εντοπίσουμε αυτή που μας ενδιαφέρει. Τέλος, εμφανίζεται το παράθυρο περίληψης επιλογών (σχήμα 2.8), μετά το οποίο και πατώντας Finish δημιουργείται το νέο έργο και εμφανίζεται η αρχική οθόνη του, όπως εικονίζεται στο σχήμα 2.9.

Σχήμα 2.2. Εισαγωγικό παράθυρο δημιουργίας νέου έργου. Σχήμα 2.3. Καθορισμός ονόματος και θέσης νέου έργου..

Σχήμα 2.4. Τρόπος δημιουργίας αρχείων κώδικα. Σχήμα 2.5. Εισαγωγή υπάρχοντος αρχείου κώδικα.

Σχήμα 2.6. Προαιρετική εισαγωγή αρχείου περιορισμών. Σχήμα 2.7. Επιλογή μονάδας υλοποίησης τεχνολογίας Xilinx FPGA.

Σχήμα 2.8. Τελικό παράθυρο περίληψης. Σχήμα 2.9. Αρχική οθόνη νέου έργου.

Η αρχική οθόνη του νέου έργου είναι πολύ πλούσια σε εργαλεία και πληροφορίες. Συνοπτικά, στο κέντρο εμφανίζεται το παράθυρο κώδικα (σχήμα 2.10), το οποίο περιέχει όλα τα αρχεία κώδικα και περιορισμών του έργου. Πατώντας δεξί κουμπί πάνω σε αυτά, εμφανίζεται ένα μενού πλούσιο σε εντολές. Για παράδειγμα, η εντολή Find in Files μπορεί να μας βοηθήσει να βρούμε φράσεις (π.χ. ονόματα σημάτων ή θυρών Ε/Ε) κοινές σε όλα τα αρχεία του έργου (πολύ χρήσιμο για μεγάλα σχέδια). Αριστερά, όπως εικονίζεται στο σχήμα 2.11 είναι το παράθυρο διαχείρισης έργου, από το οποίο δίνονται εντολές για τα βήματα που επιθυμεί να κάνει ο σχεδιαστής και χωρίζεται σε τρία πεδία που αντιιστοιχούν σε αντίστοιχες φάσης σχεδιασμού: RTL Design (μη τεχνολογική σύνθεση), Netlist Design (τεχνολογική σύνθεση) και Implemented Design (υλοποίηση). Κάθε πεδίο ακολουθείται από ένα παράθυρο εργαλείων (Synthesize, Implement και Program and Debug), από το οποίο γίνεται μετάβαση από το ένα πεδίο στο άλλο και χειρισμός των δεδομένων κάθε πεδίου. Τέλος, δεξιά στην αρχική οθόνη νέου έργου, βρίσκεται το παράθυρο πολλαπών πληροφοριών, στο οποίο παρουσιάζονται αποτελέσματα. Σχήμα 2.10. Παράθυρο κώδικα νέου έργου.

Σχήμα 2.11. Παράθυρο διαχείρισης έργου. Η διαδικασία της σύνθεσης ξεκινάει πατώντας Synthesize κάτω από το πεδίο RTL Design. Με το παράθυρο του σχήματος 2.12 ζητείται να οριστεί ή κεντρική οντότητα του σχεδίου ενώ με το τέλος της σύνθεσης ζητείται η επόμενη κίνηση με τις επιλογές του παραθύρου του σχήματος 2.13. Η επιλογή Open Netlist Design απλά εμφανίζει τα αποτελέσματα της σύνθεσης. Εναλλακτικά, η σύνθεση μπορεί να γίνει και πατώντας το κάτω βέλος στα δεξιά του Synthesize και επιλέγοντας την εντολή Synthesis Settings, από την οποία έχουμε πρόσβαση σε πολλές παραμέτρους σύνθεσης, όπως φαίνεται στο παράθυρο του σχήματος 2.14. Σχήμα 2.12. Ορισμός κεντρικής οντότητας.

Σχήμα 2.13. Επιλογή ενέργειας μετά το τέλος της σύνθεσης. Σχήμα 2.14. Παράμετροι σύνθεσης. Με το τέλος της σύνθεσης, η αρχική οθόνη του έργου είναι όπως αυτή του σχήματος 2.15, όπου δεξιά παρουσιάζεται η μονάδα FPGA και οι δεσμεύσεις στοιχείων που έχουν γίνει. Το μη τεχνολογικό σχηματικό, μια πρώτη δηλαδή προσέγγισης της αντιστοίχισης γλωσσικών μονάδων σε κοινές κυκλωματικές μονάδες, εμφανίζεται πατώντας αρχικά το κάτω βέλος στα δεξιά του RTL Design και επιλέγοντας την εντολή Open RTL Design. Πατώντας OK στο παράθυρο του σχήματος 2.16, το κεντρικό παράθυρο κώδικα του έργου εμφανίζει μια λίστα με δομικές μονάδες του μή τεχνολογικού σχηματικού (σχήμα 2.17). Πατώντας την πρώτη από πάνω (test_counter), ενεργοποιείται το μεσαίο κουμπί πάνω από τη λίστα, το οποίο όταν πατηθεί εμφανίζει το μη τεχνολογικό σχηματικό του σχήματος 2.18. Από το σχηματικό αυτό και με το πλούσιο μενού που εμφανίζεται πατώντας δεξί κουμπί σε κάποια μονάδα, ο σχεδιαστής αποκτά καλή γνώση σχετικά με τη διαδικασία μετασχηματισμού γλωσσικών περιγραφών σε κυκλώματα. Παράλληλα, στο παράθυρο πολλαπλών πληροφοριών, παρουσιάζονται συνοπτικά τα αποτελέσματα της σύνθεσης (σχήμα 2.19).

Σχήμα 2.15. Αρχική οθόνη έργου με τεχνολογικό σχέδιο. Σχήμα 2.16. Παρουσίαση μη τεχνολογικού σχεδίου.

Σχήμα 2.17. Δομικές μονάδες μη τεχνολογικού σχηματικού. Σχήμα 2.18. Μη τεχνολογικό σχηματικό διάγραμμα.

Σχήμα 2.19. Πληροφορίες σύνθεσης. Από το παράθυρο πολλαπλών πληροφοριών παρέχεται πρόσβαση και στα αρχεία αναφορών, όπως το παρακάτω, από τα οποία προκύπτουν λεπτομερή αποτελέσματα της σύνθεσης. Release 12.3 - xst M.70d (nt) Copyright (c) 1995-2010 Xilinx, Inc. All rights reserved. --> Reading design: test_counter.prj TABLE OF CONTENTS 1) Synthesis Options Summary

2) HDL Compilation 3) Design Hierarchy Analysis 4) HDL Analysis 5) HDL Synthesis 5.1) HDL Synthesis Report 6) Advanced HDL Synthesis 6.1) Advanced HDL Synthesis Report 7) Low Level Synthesis 8) Partition Report 9) Final Report 9.1) Device utilization summary 9.2) Partition Resource Summary 9.3) TIMING REPORT ======= * Synthesis Options Summary * ======= ---- Source Parameters Input File Name : "test_counter.prj" ---- Target Parameters Target Device Output File Name : xc3s500efg320-4 : "test_counter.ngc" ---- Source Options Top Module Name : test_counter

---- General Options Optimization Goal : speed Optimization Effort : 1 Netlist Hierarchy : rebuilt ======= ======= * HDL Compilation * ======= Compiling vhdl file "C:/Users/geconom/planahead/project_1/project_1.srcs/sources_1 /imports/counter.vhd" in Library work. Entity <test_counter> compiled. Entity <test_counter> (Architecture <rtl>) compiled. ======= * Design Hierarchy Analysis * ======= Analyzing hierarchy for entity <test_counter> in library <work> (architecture <rtl>) with generics. width = 17

======= * HDL Analysis * ======= Analyzing generic Entity <test_counter> in library <work> (Architecture <rtl>). width = 17 Entity <test_counter> analyzed. Unit <test_counter> generated. ======= * HDL Synthesis * ======= Performing bidirectional port resolution... Synthesizing Unit <test_counter>. Related source file is "C:/Users/geconom/planahead/project_1/project_1.srcs/sources_1 /imports/counter.vhd". Found 17-bit up counter for signal <count_int>. Summary: inferred 1 Counter(s). Unit <test_counter> synthesized. =======

HDL Synthesis Report Macro Statistics # Counters : 1 17-bit up counter : 1 ======= ======= * Advanced HDL Synthesis * ======= ======= Advanced HDL Synthesis Report Macro Statistics # Counters : 1 17-bit up counter : 1 ======= ======= * Low Level Synthesis *

======= Optimizing unit <test_counter>... Mapping all equations... Building and optimizing final netlist... Final Macro Processing... ======= Final Register Report Macro Statistics # Registers : 17 Flip-Flops : 17 ======= ======= * Partition Report * ======= Partition Implementation Status -------------------------------

No Partitions were found in this design. ------------------------------- ======= * Final Report * ======= Final Results Top Level Output File Name Output Format Optimization Goal Keep Hierarchy : test_counter.ngc : ngc : speed : no Design Statistics # IOs : 20 Cell Usage : # BELS : 80 # GND : 1 # INV : 2 # LUT1 : 17 # LUT2 : 17 # LUT4 : 4 # MUXCY : 21 # VCC : 1 # XORCY : 17 # FlipFlops/Latches : 17

# FDCE : 17 # Clock Buffers : 1 # BUFGP : 1 # IO Buffers : 19 # IBUF : 2 # OBUF : 17 ======= Device utilization summary: --------------------------- Selected Device : 3s500efg320-4 Number of Slices: 22 out of 4656 0% Number of Slice Flip Flops: 17 out of 9312 0% Number of 4 input LUTs: 40 out of 9312 0% Number of IOs: 20 Number of bonded IOBs: 20 out of 232 8% Number of GCLKs: 1 out of 24 4% --------------------------- Partition Resource Summary: --------------------------- No Partitions were found in this design.

--------------------------- ======= TIMING REPORT NOTE: THESE TIMING NUMBERS ARE ONLY A SYNTHESIS ESTIMATE. FOR ACCURATE TIMING INFORMATION PLEASE REFER TO THE TRACE REPORT GENERATED AFTER PLACE-and-ROUTE. Clock Information: ------------------ -----------------------------------+------------------------+- ------+ Clock Signal Clock buffer(ff name) Load -----------------------------------+------------------------+- ------+ clk BUFGP 17 -----------------------------------+------------------------+- ------+ Asynchronous Control Signals Information: ---------------------------------------- -----------------------------------+------------------------+- ------+ Control Signal Buffer(FF name) Load

-----------------------------------+------------------------+- ------+ reset_inv(reset_inv1_inv_0:o) NONE(count_int_0) 17 -----------------------------------+------------------------+- ------+ Timing Summary: --------------- Speed Grade: -4 Minimum period: 5.606ns (Maximum Frequency: 178.380MHz) Minimum input arrival time before clock: 2.824ns Maximum output required time after clock: 4.394ns Maximum combinational path delay: No path found Timing Detail: -------------- All values displayed in nanoseconds (ns) ======= Timing constraint: Default period analysis for Clock 'clk' Clock period: 5.606ns (frequency: 178.380MHz) Total number of paths / destination ports: 442 / 17 -------------------------------------------------------------- ----------- Delay: 5.606ns (Levels of Logic = 18) Source: Destination: Source Clock: count_int_1 (FF) count_int_16 (FF) clk rising

Destination Clock: clk rising Data Path: count_int_1 to count_int_16 Gate Net Cell:in->out fanout Delay Delay Logical Name (Net Name) ---------------------------------------- ------------ FDCE:C->Q 3 0.591 0.706 count_int_1 (count_int_1) LUT1:I0->O 1 0.704 0.000 Mcount_count_int_cy<1>_rt (Mcount_count_int_cy<1>_rt) MUXCY:S->O 1 0.464 0.000 Mcount_count_int_cy<1> (Mcount_count_int_cy<1>) MUXCY:CI->O 1 0.059 0.000 Mcount_count_int_cy<2> (Mcount_count_int_cy<2>) MUXCY:CI->O 1 0.059 0.000 Mcount_count_int_cy<3> (Mcount_count_int_cy<3>) MUXCY:CI->O 1 0.059 0.000 Mcount_count_int_cy<4> (Mcount_count_int_cy<4>) MUXCY:CI->O 1 0.059 0.000 Mcount_count_int_cy<5> (Mcount_count_int_cy<5>) MUXCY:CI->O 1 0.059 0.000 Mcount_count_int_cy<6> (Mcount_count_int_cy<6>) MUXCY:CI->O 1 0.059 0.000 Mcount_count_int_cy<7> (Mcount_count_int_cy<7>) MUXCY:CI->O 1 0.059 0.000 Mcount_count_int_cy<8> (Mcount_count_int_cy<8>) MUXCY:CI->O 1 0.059 0.000 Mcount_count_int_cy<9> (Mcount_count_int_cy<9>) MUXCY:CI->O 1 0.059 0.000 Mcount_count_int_cy<10> (Mcount_count_int_cy<10>) MUXCY:CI->O 1 0.059 0.000 Mcount_count_int_cy<11> (Mcount_count_int_cy<11>) MUXCY:CI->O 1 0.059 0.000 Mcount_count_int_cy<12> (Mcount_count_int_cy<12>)

MUXCY:CI->O 1 0.059 0.000 Mcount_count_int_cy<13> (Mcount_count_int_cy<13>) MUXCY:CI->O 1 0.059 0.000 Mcount_count_int_cy<14> (Mcount_count_int_cy<14>) MUXCY:CI->O 0 0.059 0.000 Mcount_count_int_cy<15> (Mcount_count_int_cy<15>) XORCY:CI->O 1 0.804 0.499 Mcount_count_int_xor<16> (Result<16>) LUT2:I1->O 1 0.704 0.000 Mcount_count_int_eqn_161 (Mcount_count_int_eqn_16) FDCE:D 0.308 count_int_16 ---------------------------------------- Total route) route) 5.606ns (4.401ns logic, 1.205ns (78.5% logic, 21.5% ======= Timing constraint: Default OFFSET IN BEFORE for Clock 'clk' Total number of paths / destination ports: 17 / 17 -------------------------------------------------------------- ----------- Offset: 2.824ns (Levels of Logic = 1) Source: Destination: enable (PAD) count_int_0 (FF) Destination Clock: clk rising Data Path: enable to count_int_0 Gate Net Cell:in->out fanout Delay Delay Logical Name (Net Name) ---------------------------------------- ------------

IBUF:I->O 17 1.218 1.051 enable_ibuf (enable_ibuf) FDCE:CE 0.555 count_int_0 ---------------------------------------- Total route) route) 2.824ns (1.773ns logic, 1.051ns (62.8% logic, 37.2% ======= Timing constraint: Default OFFSET OUT AFTER for Clock 'clk' Total number of paths / destination ports: 17 / 17 -------------------------------------------------------------- ----------- Offset: 4.394ns (Levels of Logic = 1) Source: Destination: Source Clock: count_int_16 (FF) count<16> (PAD) clk rising Data Path: count_int_16 to count<16> Gate Net Cell:in->out fanout Delay Delay Logical Name (Net Name) ---------------------------------------- ------------ FDCE:C->Q 3 0.591 0.531 count_int_16 (count_int_16) OBUF:I->O 3.272 count_16_obuf (count<16>) ---------------------------------------- Total route) 4.394ns (3.863ns logic, 0.531ns

route) (87.9% logic, 12.1% ======= Total REAL time to Xst completion: 33.00 secs Total CPU time to Xst completion: 33.97 secs --> Total memory usage is 130692 kilobytes Number of errors : 0 ( 0 filtered) Number of warnings : 0 ( 0 filtered) Number of infos : 0 ( 0 filtered)