ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

Σχετικά έγγραφα
ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωµάτων

Εργαστήριο Ψηφιακών Κυκλωμάτων. Χειμερινό Εξάμηνο

HY130 Ψηφιακή Σχεδίαση

VERILOG. Γενικά περί γλώσσας

ΠΛΕ- 027 Μικροεπεξεργαστές 4ο μάθημα: γλώσσα περιγραφής υλικού Verilog

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Γλώσσα περιγραφής υλικού: Verilog

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

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

HY430 Εργαστήριο Ψηφιακών Κυκλωμάτων. Πολυπλέκτες Καμπύλη Παρέτο. Κωδικοποιητές/Από-κωδικοποιητές D FF

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωµάτων

HY430 Εργαςτήριο Ψηφιακών Κυκλωμάτων.

Εργαστήριο Ψηφιακών Κυκλωμάτων

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωµάτων

Μετρητής Ριπής ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ. Αναφορά 9 ης. εργαστηριακής άσκησης: ΑΦΡΟΔΙΤΗ ΤΟΥΦΑ Α.Μ.:

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωµάτων

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

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

ΗΥ225 Οργάνωση Υπολογιστών. Εισαγωγή στη Verilog

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

Αρχιτεκτονική Υπολογιστών

Εργαστήριο Ψηφιακών Κυκλωμάτων

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

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

8 η Θεµατική Ενότητα : Εισαγωγή στις Γλώσσες Περιγραφής Υλικού: Μοντέλα Συνδυαστικών Κυκλωµάτων

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

ΗΥ220: Εργαστήριο σχεδίασης ψηφιακών κυκλωμάτων Χριστόφορος Κάχρης

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Εισαγωγή στον Προγραμματισμό

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

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

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

ΚΑΣΣΙΑΝΟΣ ΜΕΛΑΝΙΤΗΣ. Αποκωδικοποιητής ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ. Αναφορά 8 ης εργαστηριακής άσκησης: Α.Μ.:

7 η Θεµατική Ενότητα : Εισαγωγή στις Γλώσσες Περιγραφής Υλικού

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου

Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

ΗΥ-150. Προγραμματισμός

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and

Κεφάλαιο 7: Υπορουτίνες

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

Απόδειξη Ισοδυναμίας Συναρτήσεων

Χρονισμός και Απόδοση Υπολογιστικών Συστημάτων

ΗΥ-150. Προγραμματισμός

Επεξεργαστής Υλοποίηση ενός κύκλου μηχανής

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

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

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

Παράδειγμα αντιστοίχισης κυκλώματος σε FPGA

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

Library, package και subprograms

Εισαγωγή στη Verilog

Προγραμματισμό για ΗΜΥ

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

HY220 Pipelines and FSMs Χειμεριν Χειμερι ό Εξ άμη Εξ ν άμη ο

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

Εισαγωγή στον Προγραμματισμό

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

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

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

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

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

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

Μοντέλα. χαρακτηριστικά χωρίς να συνοδεύεται από λεπτοµέρειες.

Pascal. 15 Νοεμβρίου 2011

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Δομημένος Προγραμματισμός (ΤΛ1006)

ΗΥ220: Εργαστήριο Ψηφιακών Κυκλωµάτων Τµήµα Επιστήµης Υπολογιστών Πανεπιστήµιο Κρήτης Χειµερινό Εξάµηνο

ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

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

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

Ενδεικτική περιγραφή μαθήματος

Transcript:

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων Χειμερινό Εξάμηνο 2017-2018 Verilog: Μια πιο κοντινή ματιά ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 1

Δομή της γλώσσας Μοιάζει αρκετά με τη C Preprocessor Keywords Τελεστές = ==,!= <, >, <=, >= &&? : & and or ~ not ^ xor `timescale 1ns / 1ns `define dh 2 (e.g q <= #`dh d) `undef dh `ifdef dh / `ifndef dh... `else... `endif `include def.h Γλώσσα «event driven» ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 2

Events in Verilog (1/3) Δουλεύει μόνο όταν κάτι αλλάξει Όλο το simulation δουλεύει γύρω από μια ουρά από γεγονότα (event queue) Περιέχει events και ετικέτες με το χρόνο στον οποίο θα εκτελεστούν Καμμιά εγγύηση για τη σειρά εκτέλεσης γεγονότων που πρέπει να γίνουν στον ίδιο χρόνο!!! always clk = #(`period / 2) ~clk; always @(posedge clk) a = b + 1; always @(posedge clk) b = c + 1;! ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 3

Events in Verilog (2/3) Βασική ροή προσομοίωσης Εκτέλεση των events για τον τρέχοντα χρόνο Οι εκτέλεση events αλλάζει την κατάσταση του συστήματος και μπορεί να προκαλέσει προγραμματισμό events για το μέλλον Όταν τελειώσουν τα events του τρέχοντος χρόνου προχωράμε στα αμέσως επόμενα χρονικά! t 0 + period t 0 ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 4

Events in Verilog (3/3) 2 τύποι events Evaluation: υπολογίζουν τις συναρτήσεις των εισόδων της έκφρασης (RHS) Update: αλλάζουν τις εξόδους (LHS) Λαμβάνουν υπόψιν delays non-blocking assignments Evaluation: διαβάζει τις τιμές b και c, υπολογίζει, αποθηκεύει εσωτερικά και προγραμματίζει Update: Γράφει το νέο a και ένα update event προγραμματίζει evaluation events για κώδικα που εξαρτάται από το a. a <= b + c ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 5

Blocking vs Non-blocking assignments and Events Blocking = Evaluation/read (RHS) και assignment/write (LHS) (update event) στον ίδιο χρόνο Εκτέλεση σειριακή Non-blocking <= Evaluation και assignment σε 2 βήματα o Evaluation στο δεξί μέλος (RHS) άμεσα o Assignment (update) στο αριστερό μέλος (LHS) όταν τελειώσουν όλα τα evaluations του τρέχοντος χρόνου always @(posedge clk) a = b; always @(posedge clk) b = a; ý Swap? always @(posedge clk) a <= b; always @(posedge clk) b <= a; þ ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 6

Delays and Events Regular / Inter-Assignment delays #5 a = b + c; // a=b+c at time 5 #4 d = a; // d=a new at time 9 Intra-Assignment delays Evaluation του RHS πρίν την καθυστέρηση With blocking assignments: a = #5 b + c; // a=b+c at time 5 d = a; // d=a new at time 5 With non-blocking assignments: a <= #5 b + c; // a=b+c at time 5 d <= a; // d=a old at time 0 ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 7

Events Example Κάθε έκφραση συνδέεται με έναν αρχικό χρόνο Initial και always: εσωτερικά σειριακά - εκτός από nonblocking assignments 0 10 20 30 40 50 initial begin a = 0; b = 0; c = 0; clk = 0; end always begin clk = #10 1; clk = #10 0; end wire #4 [3:0] comb = a + b; 0 10, 20, 30, 40, 50 always @(posedge clk) a <= b + 1; always @(posedge clk) b <= c + 1; always @(posedge clk) c <= #5 a + 1; 4, 14, 34 10, 30 10, 30 15, 35 ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 8

Sensitivity lists Λογικές εκφράσεις με or posedge και negedge Ρολόγια, reset Παράλειψη παραγόντων RHS και αυτών που γίνονται read δίνουν λάθη στην προσομοίωση always @(posedge clk or negedge rst_)... always @(opcode or b or c) if (opcode == 32 h52a0234e) a = b ^ (~c); always @(posedge a or posedge b)...! Προσοχή στο hardware που θέλουμε να περιγράψουμε ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 9

Τιμές σημάτων Four-valued logic 0 ή 1 Ζ Έξοδος τρικατάστατου οδηγητή Καλώδιο χωρίς ανάθεση X Αρχική τιμή των regs Έξοδος πύλης με είσοδο/ους Ζ Ταυτόχρονη ανάθεση 0 και 1 από δύο ή περισσότερες πηγές (multi-source logic) [πηγή = always block] Προσοχή στην αρχικοποίηση (regs) initial... always @(posedge clk) if (reset)... else... 0 1 X Z 0 0 0 0 0 1 0 1 X X X 0 X X X Z 0 X X X ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 10

Concatenation «Hardwired» πράξεις απαραίτητες σε μια HDL a b 3 5 8 c wire [2:0] a; wire [4:0] b; wire [7:0] c = {a, b}; wire [7:0] unsigned; wire [15:0] sign_extend = { (unsigned[7]? 8 hff : 8 h0), unsigned }; ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 11

For While τα γνωστά Μόνο μέσα σε blocks! Δεν υπάρχει break ουτε continue!!! Δεν υπάρχει i++, ++i κτλ! Κυρίως για testbenches!!! integer i; // the famous i variable :) initial begin for ( i=0; i<10; i=i+1 )begin $display ( i= %d,i); end end integer j; //reg [3:0] j is OK! initial begin j=0; while(j < 10)begin $display ( j= %b,j); j=j+1; end end ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 12

Παραμετρικά modules (1/2) Μπορούμε να έχουμε παραμέτρους σε ένα module Default μέγεθος πολύ βολικό! module RegLd #( parameter N = 8, parameter dh = 2) ( input ); input input [N-1:0] D, output reg [N-1:0] Q clk, load, always @(posedge clk) if (load) Q = #dh D; endmodule ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 13

Παραμετρικά modules (2/2) wire clk, ld; wire [3:0] d2; wire [3:0] q2; RegLd reg2(clk, ld, d2, q2); defparam reg2.n = 4; defparam reg2.dh = 4; RegLd #(.N (4),.dh (2) ) reg2 (.clk (clk).load (ld),.d (d2),.q (q2) ); ή ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 14

Τρικατάστατοι οδηγητές Εκμετάλλευση της κατάστασης Ζ Χρήση του τύπου inout module tristate(en, clk, data); input en, clk; inout [7:0] data; wire [7:0] data = (en)? data_out : 8 bz; always @(posedge clk) begin if (!en) case (data)... endmodule wire [7:0] bus; tristate tr0(en0, clk, bus); tristate tr1(en1, clk, bus); tristate tr2(en2, clk, bus); ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 15

Μνήμες Αναδρομικά: array of array Can be synthesized Αρχικοποίηση από αρχείο: $readmemh(filename, array) $readmemb(filename, array) wire [ 9:0] addr; wire [15:0] word_in; reg [15:0] word_out; reg [15:0] memory [1023:0]; always @(posedge clk) begin if (we) memory[addr] = word_in; else word_out = memory[addr]; end initial begin $readmemh( memory.dat, memory); end memory.dat: 0F00 00F1 0F02 ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 16

Συναρτήσεις Functions (1/3) Δήλωση (declaration): function [ range_or_type ] fname; input_declarations statements endfunction Επιστρεφόμενη τιμή (return value): Ανάθεση στο σώμα του function fname = expression; Κλήση (function call): fname ( expression, ) ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 17

Συναρτήσεις - Functions (2/3) Χαρακτηριστικά συναρτήσεων: Επιστρέφει 1 τιμή (default: 1 bit) Μπορεί να έχει πολλαπλά ορίσματα εισόδου (πρέπει να έχει τουλάχιστον ένα) Μπορούν να καλούν άλλες functions αλλά όχι tasks. Δεν υποστηρίζουν αναδρομή (non-recursive) Εκτελούνται σε μηδέν χρόνο προσομοίωσης o Δεν επιτρέπονται χρονικές λειτουργίες (π.χ. delays, events) Χρησιμοποιούνται για συνδυαστική λογική και είναι synthesizable προσοχή στον κώδικα για να γίνει σωστά σύνθεση ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 18

Συναρτήσεις - Functions (3/3) Function examples: function calc_parity; input [31:0] val; begin calc_parity = ^val; end endfunction function [15:0] average; input [15:0] a, b, c, d; begin average = (a + b + c + d) >> 2; end endfunction; ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 19

Verilog Tasks (1/2) Τυπικές procedures Πολλαπλά ορίσματα input, output και inout Δεν υπάρχει συγκεκριμένη τιμή επιστροφής (χρησιμοποιεί τα ορίσματα output) Δεν υποστηρίζουν αναδρομή (non-recursive) Μπορούν να καλούν άλλες tasks και functions Μπορούν να περιέχουν delays, events και χρονικές λειτουργίες Προσοχή στη σύνθεση ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 20

Verilog Tasks (2/2) Task example: task ReverseByte; input [7:0] a; output [7:0] ra; integer j; begin for (j = 7; j >=0; j=j-1) begin ra[j] = a[7-j]; end end endtask ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 21

Functions and Tasks Ορίζονται μέσα σε modules και είναι τοπικές Δεν μπορούν να έχουν always και initial blocks αλλά μπορούν να καλούνται μέσα από αυτά Μπορούν να έχουν ότι εκφράσεις μπαίνουν σε blocks ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 22

Functions vs Tasks Functions Μπορούν να καλούν άλλες functions αλλά όχι tasks Εκτελούνται σε μηδενικό χρόνο προσομοίωσης Δεν μπορούν περιέχουν χρονικές λειτουργίες (delay, events κτλ) Έχουν τουλάχιστον 1 είσοδο και μπορούν να έχουν πολλές Επιστρέφουν μια τιμή, δεν έχουν εξόδους Tasks Μπορούν να καλούν άλλες tasks και functions Μπορούν να διαρκούν μη μηδενικό χρόνο προσομοίωσης Μπορούν να περιέχουν χρονικές λειτουργίες (delay, events κτλ) Μπορούν να έχουν μηδέν ή περισσότερα ορίσματα εισόδων, εξόδων και inout Δεν επιστρέφουν τιμή αλλά βγάζουν έξοδο από τα ορίσματα εξόδου output και inout ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 23

System Tasks and Functions Tasks and functions για έλεγχο της προσομοίωσης Ξεκινούν με "$" (e.g., $monitor) Standard της γλώσσας Παράδειγμα system task: $display $display("format-string", expr1,, exprn); format-string - regular ASCII mixed with formatting characters %d - decimal, %b - binary, %h - hex, %t - time, etc. other arguments: any expression, including wires and regs $display("error at time %t: value is %h, expected %h", $time, actual_value, expected_value); ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 24

Χρήσιμες System Tasks $time τρέχον χρόνος προσομοίωσης $monitor τυπώνει όταν αλλάζει τιμή ένα όρισμα ( 1 μόνο κάθε φορά νέες κλήσεις ακυρώνουν τις προηγούμενες ) $monitor("cs=%b, ns=%b", cs, ns) Έλεγχος προσομοίωσης $stop - διακοπή simulation $finish - τερματισμός simulation Υπάρχουν και συναρτήσεις για file I/O $fopen, $fclose, $fwrite etc ΗΥ220 - Βασίλης Παπαευσταθίου & Γιώργος Καλοκαιρινός 25