U elektronici, jezik za opis hardvera (JOH) je specijalizovani programski jezik koji se koristi za opisivanje osobina i ponašanja elektronskih kola, i najčešće, digitalnih logičkih kola.

Jezik za opis hardvera omogućava precizan, formalan opis elektronskog kola koji dozvoljava automatsku analizu i simulaciju elektronskog kola.

Takođe dozvoljava logičku sintezu jezika za opis hardvera u netlistu (specifikacija fizickih elektronskih komponenti i kako su međusobno povezane), koja onda može biti postavljna i usmerena da proizvede skup maski koje se koriste da konstruišu integrisana kola.

Jezik za opis hardvera dosta liči na programske jezike kao što je C (програмски језик); to je tekstualni opis koji se sastoji od izraza, iskaza i kontrolnih struktura. Jedna od bitnih razlika između većine programskih jezika i jezika za opis hardvera je da jezika za opis hardvera eksplicitno uključuje pojam vremena.

Jezici za opis hardvera čine sastavni deo sistema automatizacije elektronskog dizajna (EDA), naročito za kompeksna kola, kao što su integrisana kola namenjna posebno za aplikacije, microprocesori, i programabilni logički uređaji.

Motivacija Zbog eksplozivnog uvećavanja složenosti digitalnih elektronskih kola počevši od sedamdesetih godina prošlog veka (vidi Murov zakon), dizajnerima kola je bilo potrebno da se opis digitalne logike izvršava na što većem nivou bez vezivanja za specijalnu elektronsku tehnologiju kao što je CMOS ili BJT.

Jezici za opis hardvera su bili kreirani da implementiraju apstrakciju na nivou registar-prenosa, model toka podataka (dataflow) i tajminga kola.

Dva najbitnija jezika za opis hardvera su: VHDL i Verilog. Postoje različiti tipovi opisa u njima „dataflow, funkcionalni strukturni”.

Primer dataflow modela u jeziku za opis hardvera:

library iEEE; use iEEE.STD_LOGIC_1164.ALL; use iEEE.STD_NUMERIC_STD.ALL;

entity not1 is port(a:in STD_LOGIC; b:out STD_logic); end not1;

architecture behavioral of not1 is begin b <= not a; end behavioral;

Struktura jezika za opis hardvera Jezici za opis hardvera su tekstualno zasnovani izrazi strukture elektronskih sistema i njihovog ponašanja tokom vremena.

Kao kod jezika konkurentnog programiranja, sintaksa i semantika jezika za opis hardvera uključuje eksplicitnu notaciju za izražavanje konkurentnosti. Međutim, za razliku od većine softvera programskih jezika, jezici za opis hardvea takođe uključuju pojam vremena, što je zapravo primarni atribut hardvera. Jezici čija je jedina karakteristika da izražavaju povezanost kola između hijerarhije blokova su prikladno klasifikovani kao netlist jezici koji se koriste u električnom računarskom dizajnu (CAD). Jezici za opis hardvera se mogu koristiti da izraze dizajn u strukturnom, funkcionalnom ili registar-prenos-nivou arhhitekture za istu funkcionalnost kola; u dva poslednja slučaja Logička sinteza odlučuje o arhitekturi i o izgledu digitalne logike.

Jezici za opis hardvera se koriste za pisanje izvršnih specifikacija za hardver. Program dizajniran da implementira fundamentalnu semantiku jezika i simulira napredak vremena obezbeđuje dizajnerima hardvera mogućnost da modeliraju deo hardvera pre nego što se on fizički kreira. To je mogućnost izvršavanja koja daje jezicima za opis hardvrara iluziju da su programabilni, kada su oni tačno klasificirani kao specifikacijski jezici ili jezici za modelovanje. Postoje simulatori sposobni za podršku diskretnih (digitalnih) i neprekidnih (analognih), i za svaki od njih je dostupan jezik za opis hardvera.

Poređenje sa data-flow jezicima Svakako je moguće predstaviti semantiku hardvera koristeći tradicionalne programske jezike kao što su C++, koji radi na control flow semantici suprotno od data flow, iako funkcionišu kao takvi, programi moraju biti prošireni obimnim i nezgrapnim klasnim bibliotekama. Obično, međutim, softverski programski jezici ne uključuju bilo kakvu mogućnost eksplicitnog izražavanja vremena, i stoga ne mogu funkcionisati kao jezici za opis hardvera.

Pre uvođenja System Verilog-a 2002. godine, C++ integracija sa logičkim simulatorom je bio jedan od nekoliko načina korišćenja objektno-orijentisanih programskih jezika u verifikaciji hardvera.

System Verilog je prvi veliki jezik za opis hardvera koji nudi koncepte objektno orijentisanog programiranja i garbage collection-a.

Korišćenjem pogodnog podskupa skupa jezika za opis hardvera, program nazvan sintetizator, ili alat za logičku sintezu, možemo izversti zaključak can infer hardware logic operations from the language statements and produce an equivalent netlist of generic hardware primitives to implement the specified behaviour. Synthesizers generally ignore the expression of any timing constructs in the text. Digital logic synthesizers, for example, generally use clock edges as the way to time the circuit, ignoring any timing constructs. The ability to have a synthesizable subset of the language does not itself make a hardware description language.

Istorija Prvi jezici za opis hardvera pojavili su se krajem šezdesetih godina prošlog vek, koji su više ličili na tradicionalne jezike.Barbacci, M. "A comparison of register transfer languages for describing computers and digital systems, " Carnegie-Mellon Univ., Dept. of Computer Science, March 1973 Prvi koji je duže potrajao opisan je 1971. godine u C-u. Gordon Bell i Allen Newell's su objavili u Computer Structures. Ovaj članak je predstavio koncept nivoa prenosa registara, prvi put upotrebljen u ISP jeziku da opiše funkcionalnost Digital Equipment Corporation (DEC) PDP-8.

Jezik je postao široko upotrebljiv pojavom DEC PDP-16 RT-Level Modules (RTMs) i u knjizi je opisana njegova upotreba. (LCCN Number 72-89566) U nastavku su najmanje dve implementacije osnovnih ISP jezika (ISPL i ISPS).Barbacci, M. "The Symbolic Manipulation of Computer Descriptions: ISPL Compiler and Simulator, " Carnegie-Mellon Univ., Dept. of Computer Science, 1976Barbacci, M. "The ISPS Computer Description Language, " Carnegie-Mellon Univ., Dept. of Computer Science, 1977 ISPS je bio dobro snadbeven da opiše odnos između ulaza i izlaza dizajna i komercijalni timovi su ga brzo prisvojili u DEC-u, kao i brojni istraživački timovi i u Americi i širom NATO saveza.

RTM proizvodi nikada nisu bili uspešno komercijalizovani pa je DEC prestao da ih reklamira sredinom osamdesetih godina, dok su nove tehnike posebno VLSI postajale sve popularnije.

Oko 1979 na Univerzitetu Kaiserslautern je napravljen jezik koji je nazvan KARL („KAiserslautern Register Transfer Language”), koji je sadržao osobine računskih jezika podržavajući VLSI čipove i strukturu hardverskog dizajna. Ovaj posao je osnova KARL-ovog sestrinskog jezika ABL po interaktivnoj grafici, čije ime je inicijalizam za „A Block diagram Language”. ABL je implementiran ranih osamdesetih godina prošlog veka od strane Centro Studi e Laboratori Telecomunicazioni (CSELT) u Torinu, Italija, koja proizvodi ABLED grafički VLSI dizajn editor.

Do kasne 1970. godine, dizajn korišćen u programabilnim logičkim uređajima postao je veoma popularan iako su primarno ovi dizajni bili ograničeni na dizajniranje mašina sa konačnim stanjima. Posao u Data General 1980. godine koristio je iste uređaje za dizajniranje Data General Eclipse MV/8000, i potrebe za reklamiranjem su porasle za jezik koji ih dobro da im se pridruži. Do 1983 Data I/O predstavio je ABEL da ispuni potrebe.

Kako se dizajn preusmerio na VLSI, prvi moderni jezik za opis hardvera, Verilog je predstavljen od strane Gateway Design Automation 1985. godine. Cadence Design Systems su kasnije preuzeli prava za Verilog-XL, simulator jezika za opis hardvera koji postaje de facto standard za Verilog simulatore u sledećoj deceniji. Zahtev od strane Ministarstva odbrane SAD-a, 1987, predvodio je razvoju VHDL (VHSIC Hardware Description Language). VHDL je bio zasnovan na Ada programskom jeziku, kao i na iskustvu dobijenom na ranijem razvoju ISPS.Barbacci, M., Grout S., Lindstrom, G., Maloney, M.P. "Ada as a hardware description language : an initial report, " Carnegie-Mellon Univ., Dept. of Computer Science, 1984 Inicijalno, Verilog i VHDL su korišćeni da dokumentuju i simuliraju dizajn kola koji su već bili sačuvani i opisani u drugačijoj formi (kao što su šematski fajlovi). Simulacije jezika za opis hardvera su omogućile inženjerima da rade na višem nivou apstrakcije nego u radu sa simulacijama na šematskom nivou, i tako je uvećan kapacitet od stotine tranzistora do nekoliko hiljada.

Uvod logičke sinteze za jezike za opis hardvera podigle su jezike za opis hardvera iz pozadine u prvi plan digitalnog dizajna. Alatke za sintezu kompajlirale su izvorne fajlove jezika za opis hardvera (napisane u uslovnom formatu nazvanim RTL) u opise mehanički izgradive netliste u terminima kola i tranzistora. Pisanje RTL fajla koji je moguće sintetizovati zahteva vežbu i disciplinu dizajnera, u poređenju sa tradicionalnim, šematskim planom, performanse sintetizovanih RTL netlisti su skoro uvek bile površinski veće i sporije. Kola dizajnirana od strane iskusnih inženjera, koristeći intenzivan rad uz ručno planirane šeme, su skoro uvek prevazilazile svoj logičko sintetizovani ekvivalent, ali prednost po pitanju proizvodnje koju je imala logička sinteza uskoro zamenjuje digitalne šeme na mestima koja su bila problematična za RTL sintetizatore: ekstremno velika brzina, malo energije, ili asinhrona kola.

U toku nekoliko godina, VHDL i Verilog probili su se kao dominantni jezici za opis hardvera u elektronskoj industriji, dok su stariji i manje sposobniji jezici za opis hardvera posteptno nestajali ia upotrebe. Međutim, VHDL i Verilog dele mnogo zajedničkih ograničenja: nijedan od njih nije pogodan za simulacije analognih ili mešovitih kola; nijedan ne poseduje jezičku strukturu da opiše rekurzivno generisane logičke strukture. Specijalizovani jezici za opis hardvera (kao što je Confluence) bili su predstavljeni sa jasnom namenom popravljanja specifičnih ograničenja Veriloga i VHDL, ipak nijedan od njih nije napravljen s namerom da ih zameni.

Tokom godina, mnogo truda uloženo je u poboljšanje jezika za opis hardvera. Poslednja verzija Veriloga, formalno poznata kao IEEE 1800—2005 SystemVerilog, uvela je dosta novih karakteristika (klase, slučajne veličine, i svojstva) da ukaže na sve veću potrebu za boljim test bench-om, hijerarhijom dizajna i ponovnom upotrebljivošču. Buduća izdanje VHDL-a je takođe u izradik i očekuje se da odgovara pobpljšanjima SystemVerilog.

Dizajn korišćenjem HDL-a Kao rezultat efikasnosti realizovane korišćenjem jezika za opis hardvera, većina modernog dizajna digitalnih kola se okreće oko njih. Većina dizajna počinje kao skup zahteva ili kao arhitektonski dijagram visokog nivoa. Strukture kontrola i odlučivanja su često razvijene u aplikacijama za dijagram toka ili su u sastavu uredjaja stanja dijagrama. Proces pisanja koda jezikom za opis hardvera veoma zavisi od prirode kola i od dizajnerovog načina pisanja koda. Jezik za opis hardvera je samo 'hvatač jezika', najčešće počinje opisom aritmetike na visokom nivou kao što je na primer C++ matematički model. Dizajneri najčešće koriste skript jezike kao što je Perl da automacki generišu strukture ponavljajućih kola u jeziku za opis hardvera.

Kod HDL-a se podvrgava pregledu kodova ili reviziji. U pripremi za sintezu, opis HDL-a podleže nizu automatizovanih kontrola. Kontrole prijavljuju odstupanja od standardizovanih smernica za kod, uočavaju potencijalne nejednoznačnosti konstrukcije pre nego što mogu proizvesti pogrešno izvršavanje koda, i proveravaju česte greške. Ovaj proces pomaže u rešavanju grešaka pri sintezi koda.

U industrijskom govoru, dizajn HDL-a se uglavnom završava u fazi sinteze. Jednom kada je alat za sintezu mapirao opis HDL-a