Katedra Elektroniki Akademia Górniczo-Hutnicza w Krakowie Projektowanie układów VLSI-ASIC techniką od ogółu do szczegółu (top-down) przy użyciu pakietu CADENCE opis układu w Verilog, kompilacja i symulacja KE AGH str. 1
Narzędzie NC-Launch NC-Launch jest zintegrowanym środowiskiem dla symulacji projektów napisanych w językach VHDL, Verilog HDL i mieszanych. Posiada graficzny interfejs użytkownika, który pozwala na: zarządzanie kilkoma folderami projektowymi, zarządzanie plikami źródłowymi, kompilowanie, rozwijanie i symulowanie projektów w Verilog, VHDL lub mieszanych. NC-Launch może pracować w dwóch trybach: single step proste środowisko jedynie dla projektów w Verilogu - kompiluj wszystko i symuluj, multistep bardziej ogólne podejście do projektów w VHDL, Verilog, VHDL&Verilog, bazuje na 3 krokowym podejściu: kompilacja modułów, elaboracja rozwinięcie (dopracowanie szczegółów) i symulacja projektu. Konfiguracja środowiska NC-Launch Pliki konfiguracyjne: cds.lib definiuje biblioteki i łączy nazwy bibliotek logicznych z fizycznymi ścieżkami. UWAGA: Nie uruchamiaj NC-Launch w tym samym folderze co inne narzędzia pakietu Cadence! Różne narzędzia przechowują inne dane w plikach konfiguracyjnych, np. CDS.LIB hdl.var definiuje bibliotekę roboczą, może zawierać definicje innych zmiennych dla konfiguracji NC-Launch. Przebieg projektowania w NC-Launch 1. Uruchomienie programu NC-Launch skryptem umc_180_nc. 2. Ustawienie bieżącego katalogu projektowego poprzez: utworzenie i konfigurację nowego katalogu, lub przełączenie do jednego z wcześniej używanych katalogów. 3. Napisanie lub edycja plików źródłowych. 4. Kompilacja plików źródłowych. 5. Wyszczególnienie modułu nadrzędnego (elaboracja) 6. Uruchomienie symulacji. KE AGH str. 2
1. Uruchomienie programu NC-Launch Struktura katalogów będzie taka, że dany projekt będzie w jednym katalogu, w którym będą podkatalogi dla różnych narzędzi do symulacji, elaboracji, syntezy i mapowania do krzemu (nc, rc i se). Na początek tworzymy nowy katalog dla NL-Launch i w nim wywołujemy skrypt uruchamiający program: # mkdir nc # cd nc # umc_180_nc Uruchomi się program NC-Launch. Pierwsze okno pozwala na wybór trybu pracy, w którym należy wybrać MultiStep: Otworzy się puste okno programu NC-Launch, w którym trzeba skonfigurować środowisko pracy programu NC-Launch: KE AGH str. 3
2. Ustawienie bieżącego katalogu projektowego W głównym oknie programu można dodawać nowe katalogi dla projektów lub wybrać już istniejące, dodawać nowe i edytować istniejące pliki oraz kompilować projekty napisane w Verilog'u i VHDL'u. Można także wykonać elaborację projektu i uruchomić symulację nowe okno (inne narzędzie). Ponieważ na początku założono, że będziemy pracować w już utworzonym katalogu, to należy go wybrać z File Set Design Directory: Otworzy się okno wyboru katalogu projektu: KE AGH str. 4
Zostawiamy katalog projektu, tak jak jest. Trzeba powołać plik konfiguracyjny naciskamy Create cds.lib File: Naciskamy Save i otworzy się okno konfiguracji pliku cds.lib, w którym wybieramy opcję trzecią: Jeżeli używasz VHDL z typem std_logic zaznacz Include default libraries Jeżeli używasz czystego VHDL zaznacz Include IEEE pure libraries Jeżeli używasz jedynie Verilog zaznacz Don t include any libraries Końcowe ustawienia będą jak w oknie poniżej, które trzeba zatwierdzić przyciskiem OK. KE AGH str. 5
Po tym zaktualizuje się główne okno programu NC-Launch i będzie wyglądało jak na rysunku poniżej. Trzeba teraz ustawić opcje dla programu NL-Launch. Z menu Edit Preferences wywołujemy okno, w którym ustawiamy domyślny edytor (np.: gedit): KE AGH str. 6
Opis okna NC-Launch i przycisków jest przedstawiony na rysunku poniżej. Kompilator Verilog Eloborator Symulator Odświeżenie okna plików Uruchomienie edytora tekstu lub edycja pliku Analizator kodu Wizualizator przebiegów File Browser wyświetla pliki w bieżącym katalogu projektu Design Area wyświetla bieżącą zawartość pliku cds.lib Filtr plików Podpowiedź funkcji wskazanego przycisku Console Area pozwala na ręczne wpisywanie komend 3. Pisanie lub edycja plików źródłowych Wybierz z menu File Edit New File aby utworzyć nowy plik do opisu układu w języku Verilog lub VHDL. W następnym okienku (Edit a New File) wpisz nazwę oraz rozszerzenie:.v dla Verilog lub.vhdl dla VHDL). Zatwierdź przyciskiem Save. Otworzy się okno edytora tekstu. Można również skopiować gotowe pliki do katalogu projektu. KE AGH str. 7
Przykładowy kod źródłowy w Verilog dla dekodera 1 z 4 oraz plik testowy Plik dekoder1z4.v //----------------------------------------------------- // Design Name : verilog decoder 1 of 4 with Enable //----------------------------------------------------- module decoder1z4 ( binary_in, // 2 bit binary input decoder_out, // 4-bit out enable); // Enable for the decoder input [1:0] binary_in; input enable; output [3:0] decoder_out; reg [3:0] decoder_out; always @ (enable or binary_in) begin decoder_out = 0; if (enable) begin case (binary_in) 2'h0 : decoder_out = 4'h1; 2'h1 : decoder_out = 4'h2; 2'h2 : decoder_out = 4'h4; 2'h3 : decoder_out = 4'h8; endcase end end endmodule Plik dekoder_tb.v //----------------------------------------------------- // Design Name : verilog decoder 1 of 4 test bench //----------------------------------------------------- module decoder_tb; reg enable; reg [1:0] binary_in; wire [3:0] decoder_out; decoder1z4 dec_one (.enable (enable),.binary_in (binary_in),.decoder_out (decoder_out) ); initial begin enable = 1; binary_in = 0; #1 binary_in = 1; #1 binary_in = 2; #1 binary_in = 3; #1 enable = 0; binary_in = 0; #1 binary_in = 1; #1 binary_in = 2; #1 binary_in = 3; end initial #10 $finish; endmodule KE AGH str. 8
W oknie File Browser pojawią się dwa pliki: 4. Kompilacja plików źródłowych Korzystając z menu głównego można ustawić opcje kompilatora: Tools Verilog Compiler... oraz opcje zaawansowane, wywoływane z otwartego okna. Po ustawieniu ewentualnych opcji kompilacji zaznacz moduły, które chcesz skompilować, a wtedy przycisk do kompilacji Verilog będzie aktywny naciśnij go, aby wykonać kompilację. KE AGH str. 9
W prawym oknie (Design Area) pojawią się nowe elementy (rozwiń zawartość worklib). 5. Wyszczególnienie modułu nadrzędnego (elaboracja) Po skompilaowaniu wszystkich modułów można przystąpić do elaboracji. Zgodnie z rysunkiem poniżej, wybierz moduł nadrzędny (1), i naciśnij przycisk elaboracji (2). W efekcie w prawym oknie pojawią się nowe elementy (3) pliki Snapshoots, które będą potrzebne później do symulacji. 2. Elaboracja 1. Zaznacz moduł nadrzędny 3. Nowe pliki po elaboracji KE AGH str. 10
6. Uruchomienie symulacji Zaznacz plik snapshoot modułu nadrzędnego i uruchom symulację odpowiednim przyciskiem 2. Włącz symulację 1. Zaznacz plik W efekcie wywołany zostanie program Simulation Analysis Environment SimVision i otworzą się odpowiednie okna (Design Browser i Consola). W lewym oknie Design Browser'a można wybierać moduły projektowe, a następnie w prawym sygnały. tb KE AGH str. 11
Wybierz jednostkę testową (1) i sygnały (2), które chcesz oglądać, a następnie naciśnij przycisk (3) wysyłający wybrane przebiegi do wizualizatora przebiegów. 3. Wywołanie wizualizatora przebiegów 2. Sygnały, które będą oglądane Otworzy się okno pozwalające na przeglądanie przebiegów, w którym należy nacisnąć przycisk startu symulacji (lub z menu Simulation Run). Przebiegi pojawią się w prawej części okna. Korzystając z plusów w lewej części okna można rozwinąć sygnały wielobitowe. 1. Start symulacji 2. Rozwijanie sygnałów KE AGH str. 12
Liczne przyciski i pola w paskach narzędzi pozwalają na łatwe i wygodne nawigowanie po przebiegach, np.: wybór jednostki czasu w symulacji lub ustawienie granic symulacji albo wstawianie pauz (z menu: Simulation Set Breakpoint... ) i inne. Po raz zrobionej symulacji przebiegi można oglądać wywołując Sim Vision bezpośrednio z okna NC-Launch za pomocą przycisku po uprzednim zaznaczeniu pliku wave.shm w lewym panelu (File Browser). KE AGH str. 13