IcarusVerilog - University of Thessaly
Transcript of IcarusVerilog - University of Thessaly
Icarus Verilog
ECE119 - Ψηφιακή Σχεδίαση 2020-2021
Icarus Verilog
§ Εργαλείο ανοικτού κώδικα για την λογική προσομοίωση (simulation) και τη σύνθεση (synthesis) κυκλωμάτων.
§ Λειτουργεί και ως μεταγλωττιστής (compiler) γιακώδικα περιγραφής υλικού (HDL) γραμμένο σε Verilog.
§ Αρχικά αναπτύχθηκε για το λειτουργικό σύστημα Linux, αλλά υπάρχει διαθέσιμος και για άλλα λειτουργικά συστήματα.
§ Ιστοσελίδα: http://iverilog.icarus.com
Τι είναι;
ECE119 - Ψηφιακή Σχεδίαση 2020-2021
Εγκατάσταση σε MS-Windows
§ Λήψη λογισμικού από https://bleyer.org/icarus/
• https://bleyer.org/icarus/iverilog-v11-20201123-x64_setup.exe (18.2MB)
ECE119 - Ψηφιακή Σχεδίαση 2020-2021
Εγκατάσταση σε MS-Windows
ECE119 - Ψηφιακή Σχεδίαση 2020-2021
1 2
3 4
Εγκατάσταση σε MS-Windows
ECE119 - Ψηφιακή Σχεδίαση 2020-2021
5 6
7 8
Μετά την εγκατάσταση
§ Ο Icarus είναι command-line tool
§ Τον χρησιμοποιούμε από το command window (στα Windows) ή το τερματικό στο Linux.
§ Εντολές στο command window
• dir – εμφανίζει τα περιεχόμενα ενός καταλόγου (αντίστοιχη της ls στο Linux)
• cd – αλλαγή καταλόγου• copy – αντιγραφή αρχείου (αντίστοιχη της ls στο Linux)
ECE119 - Ψηφιακή Σχεδίαση 2020-2021
Παράδειγμα χρήσης
§ Δημιουργείστε ένα φάκελο με όνομα myVerilogστο C:\
§ Ανοίξτε ένα command window (Γραμμή Εντολών)
• Για να ανοίξετε ένα command window πληκτρολογήστε cmd στην γραμμή αναζήτησης
§ Γράψτε την εντολή iverilog
ECE119 - Ψηφιακή Σχεδίαση 2020-2021
Παράδειγμα Verilog
module main;initial
begin$display("Hello, World");$finish ;
endendmodule
>iverilog -o hello hello.v
ECE119 - Ψηφιακή Σχεδίαση 2020-2021
Μεταγλώττιση (compile) κώδικα Verilog
Παράδειγμα Verilog
§ Η εκτέλεση του μεταγλωττισμένου κώδικα Verilog γίνεται με την εντολή vvp (run time engine)
>vvp hello
Εκτέλεση (run) κώδικα
ECE119 - Ψηφιακή Σχεδίαση 2020-2021
Παράδειγμα
module half_adder (output S, C, input x, y); xor (S, x, y); and (C, x, y);
endmodule
`timescale 1ns/10ps
module t_half_adder;wire t_S, t_C; reg t_x, t_y;half_adder HA (t_S,t_C,t_x,t_y);initialbegin
t_x = 1'b0; t_y = 1'b0;#100 t_x = 1'b0; t_y = 1'b1;#100 t_x = 1'b1; t_y = 1'b0;#100 t_x = 1'b1; t_y = 1'b1;
endinitialbegin$monitor("time = ", $time, " X = %b Y = %b S=%b C=%b",t_x,t_y,t_S,t_C);#400 $finish; end
endmodule
half-adder
ECE119 - Ψηφιακή Σχεδίαση 2020-2021
Το περιβάλλον εκτέλεσης - vvp
§ Παράγει και τα αρχεία που είναι απαραίτητα για να δούμε με την μορφή κυματομορφών(waveforms) τις τιμές που λαμβάνει κάθε καλώδιο κατά την διάρκεια τις προσομοίωσης.
• $dumpfile
• $dumpvars
§ Οι κυματομορφές αποθηκεύονται σε αρχεία VCD (Value Change Dump) που είναι ASCII αρχεία καταγραφής (dumpfiles).
ECE119 - Ψηφιακή Σχεδίαση 2020-2021
$dumpfile και $dumpvars
module half_adder (output S, C, input x, y); xor (S, x, y); and (C, x, y);
endmodule
`timescale 1ns/10ps
module t_half_adder;wire t_S, t_C; reg t_x, t_y;half_adder HA (t_S,t_C,t_x,t_y);initialbegin$dumpfile("half_adder.vcd");$dumpvars(0,t_half_adder);
t_x = 1'b0; t_y = 1'b0;#100 t_x = 1'b0; t_y = 1'b1;#100 t_x = 1'b1; t_y = 1'b0;#100 t_x = 1'b1; t_y = 1'b1;
endinitialbegin$monitor("time = ", $time, " X = %b Y = %b S=%b C=%b",t_x,t_y,t_S,t_C);#400 $finish; end
endmodule
half-adder
ECE119 - Ψηφιακή Σχεδίαση 2020-2021
Αρχείο vcd (value change dump)
$dateTue Dec 01
$end$version
Icarus Verilog$end$timescale
10ps$end$scope module t_half_adder $end$var wire 1 ! t_S $end$var wire 1 " t_C $end$var reg 1 # t_x $end$var reg 1 $ t_y $end$scope module HA $end$var wire 1 " C $end$var wire 1 ! S $end$var wire 1 # x $end$var wire 1 $ y $end$upscope $end$upscope $end$enddefinitions $end#0$dumpvars0$0#0"0!$end#100001!1$#200000$1##300000!1
ECE119 - Ψηφιακή Σχεδίαση 2020-2021
GTKWAVE
> gtkwave half_adder.vcd
Λογισμικό για την απεικόνιση κυματομορφών
ECE119 - Ψηφιακή Σχεδίαση 2020-2021
GTKWAVEΛογισμικό για την απεικόνιση κυματομορφών
ECE119 - Ψηφιακή Σχεδίαση 2020-2021
1. Ανοίγουμε την ιεραρχία.
2. Επιλέγουμε σήματα.
3. Πατάμε Insert.
GTKWAVEΓια να δούμε το σημείο της προσομοίωσης που μας ενδιαφέρει
χρησιμοποιούμε την λειτουργία Zoom
ECE119 - Ψηφιακή Σχεδίαση 2020-2021
GTKWAVE
ECE119 - Ψηφιακή Σχεδίαση 2020-2021