Robocikowo>ROBOCIKOWO
Narzędzia deweloperskie

Verilog

AktywnyOpublikowano: 20 września 2026Aktualizacja: 20 września 2026Opublikowany
Język opisu sprzętu (HDL) o składni zbliżonej do C, używany do modelowania, symulacji i syntezy układów cyfrowych na poziomie RTL. Standard IEEE 1364, później scalony z SystemVerilog (IEEE 1800).
Kluczowa innowacja
Język opisu sprzętu ze składnią zbliżoną do C, który pozwolił opisywać, symulować i (po dodaniu syntezy) automatycznie realizować układy cyfrowe na poziomie RTL — czyniąc projektowanie sprzętu procesem tekstowym i skalowalnym.
Kategoria
Narzędzia deweloperskie
Poziom abstrakcji
Building block
Poziom operacji
ToolingElement architektury
Zastosowania
Opis i synteza procesorów, kontrolerów i SoCProjektowanie akceleratorów AI oraz układów dla FPGA/ASICWeryfikacja funkcjonalna przez symulację (testbenche)Modelowanie i prototypowanie logiki cyfrowejNauczanie projektowania cyfrowego i architektury komputerów

Jak działa

Projektant pisze moduły Verilog opisujące strukturę i zachowanie układu. Logikę kombinacyjną wyraża się przez assign lub bloki always @(*), a sekwencyjną przez always @(posedge clk) z przypisaniami nieblokującymi (<=). Kod jest zdarzeniowo współbieżny — wiele bloków always działa równolegle. Symulator (np. zdarzeniowy Icarus/ModelSim lub cyklowy Verilator) wykonuje testbench podający pobudzenia i sprawdzający odpowiedzi. Do produkcji sprzętu narzędzie syntezy (np. Yosys, Design Compiler) tłumaczy syntezowalny podzbiór Verilog na listę bramek (netlist), mapowaną potem na komórki ASIC lub zasoby FPGA. Kluczowe reguły: używać nieblokujących przypisań w logice sekwencyjnej, blokujących w kombinacyjnej, pisać kompletne przypisania (unikać niezamierzonych zatrzasków) i trzymać się syntezowalnego podzbioru języka.

Rozwiązany problem

Rosnąca złożoność układów scalonych uczyniła projektowanie schematyczne i na poziomie bramek niepraktycznym. Verilog dostarczył tekstowy, hierarchiczny, symulowalny i syntezowalny sposób opisu sprzętu na wysokim poziomie (RTL), umożliwiając weryfikację przed produkcją oraz automatyzację przejścia od opisu do gotowego układu.

Komponenty

ModuleHierarchiczna organizacja projektu

Podstawowa jednostka opisu w Verilog: blok z portami wejścia/wyjścia, łączony hierarchicznie w większe układy.

Procedural blocks (always/initial)Opis zachowania w czasie

Bloki always (logika kombinacyjna/sekwencyjna) i initial (inicjalizacja/testbench) wyzwalane zdarzeniami, np. zboczem zegara.

Nets and variables (wire/reg)Reprezentacja połączeń i stanu

Typy sygnałów: wire (sterowany ciągle, łączy elementy) i reg (przechowuje wartość między przypisaniami proceduralnymi).

Assignments (blocking/non-blocking)Semantyka aktualizacji sygnałów

Przypisania blokujące (=) modelują natychmiastowe (kombinacyjne) obliczenia, a nieblokujące (<=) równoczesną aktualizację rejestrów na zbocze zegara.

Implementacja

Pułapki implementacyjne
Blokujące vs nieblokujące przypisaniaWysoka

Użycie = zamiast <= w logice sekwencyjnej (lub odwrotnie) powoduje rozbieżność symulacja–synteza i wyścigi.

Rozwiązanie:Trzymać się reguły: <= dla sekwencyjnej, = dla kombinacyjnej.
Konstrukcje niesyntezowalneŚrednia

Opóźnienia (#), pętle bez granic czy niektóre konstrukcje testbenchowe działają w symulacji, ale nie dają się zsyntezować.

Rozwiązanie:Rozdzielać kod syntezowalny od testbenchu; trzymać się syntezowalnego podzbioru.
Niepełne listy wrażliwości / zatrzaskiŚrednia

Niepełna lista wrażliwości lub brak else prowadzą do rozbieżności symulacji i wnioskowania niezamierzonych zatrzasków.

Rozwiązanie:Używać always @(*), pełnych przypisań i wartości domyślnych.

Ewolucja

Oryginalny paper · 1984 · Gateway Design Automation (1983–1984) · Prabhu Goel
Verilog HDL — Gateway Design Automation
Prabhu Goel, Phil Moorby, Chi-Lai Huang
1984
Powstanie Verilog (Gateway Design Automation)
Punkt przełomowy

Prabhu Goel, Phil Moorby i Chi-Lai Huang tworzą Verilog jako język opisu i symulacji sprzętu; nazwa łączy „verification" i „logic".

1990
Przejęcie przez Cadence

Cadence Design Systems przejmuje Gateway, a wkrótce Verilog zostaje udostępniony publicznie (Open Verilog International), co przyspiesza jego adopcję.

1995
Standaryzacja IEEE 1364-1995
Punkt przełomowy

Verilog staje się otwartym standardem IEEE, obok późniejszych rewizji 2001 (arytmetyka ze znakiem) i 2005.

2009
Scalenie z SystemVerilog (IEEE 1800)

IEEE 1364-2005 zostaje scalony ze standardem SystemVerilog (IEEE 1800-2009), dodającym zaawansowaną weryfikację i konstrukcje obiektowe.

Hiperparametry (konfigurowalne osie)

Language standard (1364/1800)Wysoka

Wersja standardu (Verilog-95/2001/2005 lub SystemVerilog 1800) determinuje dostępne konstrukcje językowe i weryfikacyjne.

Synthesizable subsetKrytyczna

Ograniczenie do konstrukcji syntezowalnych (vs. czysto symulacyjnych) decyduje, czy kod da się zrealizować w sprzęcie.

Paradygmat wykonania

Równoległość

Poziom równoległości
W pełni równoległy

Verilog opisuje sprzęt współbieżny: wszystkie bloki always i przypisania ciągłe działają równolegle, odzwierciedlając fizyczną jednoczesność układu.

Zakres
Inferencja

Wymagania sprzętowe

Podstawowe

Verilog to jeden z dwóch głównych języków opisu układów mapowanych na FPGA.

Podstawowe

Ten sam kod Verilog syntezuje się na ASIC lub FPGA — język jest niezależny od docelowej technologii.