Verilog
Verilog to język opisu sprzętu, który służy do projektowania i symulacji układów cyfrowych, szczególnie w kontekście ASIC i FPGA.
Historia
Verilog został opracowany w 1984 roku przez Phila Moorby’ego w firmie Gateway Design Automation. W 1985 roku pojawiła się pierwsza wersja handlowa, a w 1986 roku wprowadzono symulator Verilog-XL. W 1988 roku firma Synopsys wprowadziła pierwsze narzędzie do syntezy sprzętu wykorzystujące Verilog.
W 1989 roku Gateway Design Automation została przejęta przez Cadence, która w 1990 roku uczyniła Verilog otwartym standardem. Utworzono organizację Open Verilog International (OVI), która w 1995 roku opracowała pierwszy oficjalny standard – IEEE Std 1364-1995. W 2000 roku OVI połączyło się z VHDL International, tworząc Accellera. Standard został zrewidowany w 2001 roku (IEEE Std 1364-2001).
W 2002 roku Accellera rozpoczęła znaczące ulepszenia Veriloga, co doprowadziło do powstania nowego projektu – SystemVerilog, z zachowaniem dużej zgodności z oryginalnym Verilogiem. W 2005 roku zatwierdzono nową wersję standardu Veriloga (IEEE Std 1364-2005) oraz pierwszy standard SystemVeriloga (IEEE Std 1800-2005).
Opis
Wersja Veriloga z 1995 roku charakteryzowała się niejednorodnością, ale oferowała doskonałe możliwości opisu na poziomie bramek oraz dobrą obsługę poziomów pośrednich (RTL). Zmiany z 2001 roku uczyniły język bardziej jednorodnym, poprawiając składnię i możliwości opisu wyższych poziomów.
Podstawową jednostką opisu w Verilogu jest moduł (module). Moduły mogą być łatwo używane w hierarchii projektu poprzez podanie ich nazwy, etykiety oraz listy parametrów i połączeń. Funkcjonalność modułów opisuje się za pomocą współbieżnych procesów always i initial, które obsługują instrukcje znane z tradycyjnych języków programowania, takie jak przypisania, wywołania funkcji czy pętle.
Przykład
Poniżej przedstawiono prosty opis układu 7400 w Verilogu:
module ttl7400(Out, A, B); output [3:0] Out; input [3:0] A; input [3:0] B; nand #10 (Out[0], A[0], B[0]); nand #10 (Out[1], A[1], B[1]); nand #10 (Out[2], A[2], B[2]); nand #10 (Out[3], A[3], B[3]); endmodule
Verilog jest kluczowym narzędziem w projektowaniu układów elektronicznych, umożliwiającym efektywne modelowanie i symulację. Jego rozwój odzwierciedla ewolucję technologii w tej dziedzinie.