IcarusVerilog - University of Thessaly

17
Icarus Verilog ECE119 - Ψηφιακή Σχεδίαση 2020-2021

Transcript of IcarusVerilog - University of Thessaly

Page 1: IcarusVerilog - University of Thessaly

Icarus Verilog

ECE119 - Ψηφιακή Σχεδίαση 2020-2021

Page 2: IcarusVerilog - University of Thessaly

Icarus Verilog

§ Εργαλείο ανοικτού κώδικα για την λογική προσομοίωση (simulation) και τη σύνθεση (synthesis) κυκλωμάτων.

§ Λειτουργεί και ως μεταγλωττιστής (compiler) γιακώδικα περιγραφής υλικού (HDL) γραμμένο σε Verilog.

§ Αρχικά αναπτύχθηκε για το λειτουργικό σύστημα Linux, αλλά υπάρχει διαθέσιμος και για άλλα λειτουργικά συστήματα.

§ Ιστοσελίδα: http://iverilog.icarus.com

Τι είναι;

ECE119 - Ψηφιακή Σχεδίαση 2020-2021

Page 3: IcarusVerilog - University of Thessaly

Εγκατάσταση σε MS-Windows

§ Λήψη λογισμικού από https://bleyer.org/icarus/

• https://bleyer.org/icarus/iverilog-v11-20201123-x64_setup.exe (18.2MB)

ECE119 - Ψηφιακή Σχεδίαση 2020-2021

Page 4: IcarusVerilog - University of Thessaly

Εγκατάσταση σε MS-Windows

ECE119 - Ψηφιακή Σχεδίαση 2020-2021

1 2

3 4

Page 5: IcarusVerilog - University of Thessaly

Εγκατάσταση σε MS-Windows

ECE119 - Ψηφιακή Σχεδίαση 2020-2021

5 6

7 8

Page 6: IcarusVerilog - University of Thessaly

Μετά την εγκατάσταση

§ Ο Icarus είναι command-line tool

§ Τον χρησιμοποιούμε από το command window (στα Windows) ή το τερματικό στο Linux.

§ Εντολές στο command window

• dir – εμφανίζει τα περιεχόμενα ενός καταλόγου (αντίστοιχη της ls στο Linux)

• cd – αλλαγή καταλόγου• copy – αντιγραφή αρχείου (αντίστοιχη της ls στο Linux)

ECE119 - Ψηφιακή Σχεδίαση 2020-2021

Page 7: IcarusVerilog - University of Thessaly

Παράδειγμα χρήσης

§ Δημιουργείστε ένα φάκελο με όνομα myVerilogστο C:\

§ Ανοίξτε ένα command window (Γραμμή Εντολών)

• Για να ανοίξετε ένα command window πληκτρολογήστε cmd στην γραμμή αναζήτησης

§ Γράψτε την εντολή iverilog

ECE119 - Ψηφιακή Σχεδίαση 2020-2021

Page 8: IcarusVerilog - University of Thessaly

Παράδειγμα Verilog

module main;initial

begin$display("Hello, World");$finish ;

endendmodule

>iverilog -o hello hello.v

ECE119 - Ψηφιακή Σχεδίαση 2020-2021

Μεταγλώττιση (compile) κώδικα Verilog

Page 9: IcarusVerilog - University of Thessaly

Παράδειγμα Verilog

§ Η εκτέλεση του μεταγλωττισμένου κώδικα Verilog γίνεται με την εντολή vvp (run time engine)

>vvp hello

Εκτέλεση (run) κώδικα

ECE119 - Ψηφιακή Σχεδίαση 2020-2021

Page 10: IcarusVerilog - University of Thessaly

Παράδειγμα

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

Page 11: IcarusVerilog - University of Thessaly

Το περιβάλλον εκτέλεσης - vvp

§ Παράγει και τα αρχεία που είναι απαραίτητα για να δούμε με την μορφή κυματομορφών(waveforms) τις τιμές που λαμβάνει κάθε καλώδιο κατά την διάρκεια τις προσομοίωσης.

• $dumpfile

• $dumpvars

§ Οι κυματομορφές αποθηκεύονται σε αρχεία VCD (Value Change Dump) που είναι ASCII αρχεία καταγραφής (dumpfiles).

ECE119 - Ψηφιακή Σχεδίαση 2020-2021

Page 12: IcarusVerilog - University of Thessaly

$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

Page 13: IcarusVerilog - University of Thessaly

Αρχείο 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

Page 14: IcarusVerilog - University of Thessaly

GTKWAVE

> gtkwave half_adder.vcd

Λογισμικό για την απεικόνιση κυματομορφών

ECE119 - Ψηφιακή Σχεδίαση 2020-2021

Page 15: IcarusVerilog - University of Thessaly

GTKWAVEΛογισμικό για την απεικόνιση κυματομορφών

ECE119 - Ψηφιακή Σχεδίαση 2020-2021

1. Ανοίγουμε την ιεραρχία.

2. Επιλέγουμε σήματα.

3. Πατάμε Insert.

Page 16: IcarusVerilog - University of Thessaly

GTKWAVEΓια να δούμε το σημείο της προσομοίωσης που μας ενδιαφέρει

χρησιμοποιούμε την λειτουργία Zoom

ECE119 - Ψηφιακή Σχεδίαση 2020-2021

Page 17: IcarusVerilog - University of Thessaly

GTKWAVE

ECE119 - Ψηφιακή Σχεδίαση 2020-2021