Језик за опис хардвера

С Википедије, слободне енциклопедије

У електроници, језик за опис хардвера (ЈОХ) је специјализовани програмски језик који се користи за описивање особина и понашања електронских кола, и најчешће, дигиталних логичких кола.

Језик за опис хардвера омогућава прецизан, формалан опис електронског кола који дозвољава аутоматску анализу и симулацију електронског кола.

Такође дозвољава логичку синтезу језика за опис хардвера у нетлисту (спецификација физицких електронских компоненти и како су међусобно повезане), која онда може бити постављна и усмерена да произведе скуп маски које се користе да конструишу интегрисана кола.

Језик за опис хардвера доста личи на програмске језике као што је C (програмски језик); то је текстуални опис који се састоји од израза, исказа и контролних структура. Једна од битних разлика између већине програмских језика и језика за опис хардвера је да језика за опис хардвера експлицитно укључује појам времена.

Језици за опис хардвера чине саставни део система аутоматизације електронског дизајна (ЕДА), нарочито за компексна кола, као што су интегрисана кола намењна посебно за апликације, мицропроцесори, и програмабилни логички уређаји.


Мотивација[уреди | уреди извор]

Због експлозивног увећавања сложености дигиталних електронских кола почевши од седамдесетих година прошлог века (види Муров закон), дизајнерима кола је било потребно да се опис дигиталне логике извршава на што већем нивоу без везивања за специјалну електронску технологију као што је ЦМОС или БЈТ.

Језици за опис хардвера су били креирани да имплементирају апстракцију на нивоу регистар-преноса, модел тока података (датафлоw) и тајминга кола.[1]

Два најбитнија језика за опис хардвера су: ВХДЛ и Верилог. Постоје различити типови описа у њима „датафлоw, функционални структурни”.

Пример датафлоw модела у језику за опис хардвера:

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;

Структура језика за опис хардвера[уреди | уреди извор]

Језици за опис хардвера су текстуално засновани изрази структуре електронских система и њиховог понашања током времена.

Као код језика конкурентног програмирања, синтакса и семантика језика за опис хардвера укључује експлицитну нотацију за изражавање конкурентности. Међутим, за разлику од већине софтвера програмских језика, језици за опис хардвеа такође укључују појам времена, што је заправо примарни атрибут хардвера. Језици чија је једина карактеристика да изражавају повезаност кола између хијерархије блокова су прикладно класификовани као нетлист језици који се користе у електричном рачунарском дизајну (ЦАД). Језици за опис хардвера се могу користити да изразе дизајн у структурном, функционалном или регистар-пренос-нивоу арххитектуре за исту функционалност кола; у два последња случаја Логичка синтеза одлучује о архитектури и о изгледу дигиталне логике.

Језици за опис хардвера се користе за писање извршних спецификација за хардвер. Програм дизајниран да имплементира фундаменталну семантику језика и симулира напредак времена обезбеђује дизајнерима хардвера могућност да моделирају део хардвера пре него што се он физички креира. То је могућност извршавања која даје језицима за опис хардврара илузију да су програмабилни, када су они тачно класифицирани као спецификацијски језици или језици за моделовање. Постоје симулатори способни за подршку дискретних (дигиталних) и непрекидних (аналогних), и за сваки од њих је доступан језик за опис хардвера.


Поређење са дата-флоw језицима[уреди | уреди извор]

Свакако је могуће представити семантику хардвера користећи традиционалне програмске језике као што су C++, који ради на цонтрол флоw семантици супротно од дата флоw, иако функционишу као такви, програми морају бити проширени обимним и незграпним класним библиотекама. Обично, међутим, софтверски програмски језици не укључују било какву могућност експлицитног изражавања времена, и стога не могу функционисати као језици за опис хардвера.

Пре увођења Сyстем Верилог-а 2002. године, C++ интеграција са логичким симулатором је био један од неколико начина коришћења објектно-оријентисаних програмских језика у верификацији хардвера.

Сyстем Верилог је први велики језик за опис хардвера који нуди концепте објектно оријентисаног програмирања и гарбаге цоллецтион-а.

Коришћењем погодног подскупа скупа језика за опис хардвера, програм назван синтетизатор, или алат за логичку синтезу, можемо изверсти закључак цан инфер хардwаре логиц оператионс фром тхе лангуаге статементс анд продуце ан еqуивалент нетлист оф генериц хардwаре примитивесШаблон:Јаргон-инлине то имплемент тхе специфиед бехавиоур.[тражи се извор] Сyнтхесизерс генераллy игноре тхе еxпрессион оф анy тиминг цонструцтс ин тхе теxт. Дигитал логиц сyнтхесизерс, фор еxампле, генераллy усе цлоцк едгес ас тхе wаy то тиме тхе цирцуит, игноринг анy тиминг цонструцтс. Тхе абилитy то хаве а сyнтхесизабле субсет оф тхе лангуаге доес нот итселф маке а хардwаре десцриптион лангуаге.

Историја[уреди | уреди извор]

Први језици за опис хардвера појавили су се крајем шездесетих година прошлог век, који су више личили на традиционалне језике.[2] Први који је дуже потрајао описан је 1971. године у C-у. Гордон Белл и Аллен Неwелл'с су објавили у Цомпутер Струцтурес.[3] Овај чланак је представио концепт нивоа преноса регистара, први пут употребљен у ИСП језику да опише функционалност Дигитал Еqуипмент Цорпоратион (ДЕЦ) ПДП-8.[4]

Језик је постао широко употребљив појавом ДЕЦ ПДП-16 РТ-Левел Модулес (РТМс) и у књизи је описана његова употреба.[5] У наставку су најмање две имплементације основних ИСП језика (ИСПЛ и ИСПС).[6][7] ИСПС је био добро снадбевен да опише однос између улаза и излаза дизајна и комерцијални тимови су га брзо присвојили у ДЕЦ-у, као и бројни истраживачки тимови и у Америци и широм НАТО савеза.

РТМ производи никада нису били успешно комерцијализовани па је ДЕЦ престао да их рекламира средином осамдесетих година, док су нове технике посебно ВЛСИ постајале све популарније.

Око 1979 на Универзитету Каисерслаутерн је направљен језик који је назван КАРЛ („КАисерслаутерн Регистер Трансфер Лангуаге”), који је садржао особине рачунских језика подржавајући ВЛСИ чипове и структуру хардверског дизајна. Овај посао је основа КАРЛ-овог сестринског језика АБЛ по интерактивној графици, чије име је иницијализам за „А Блоцк диаграм Лангуаге”.[8] АБЛ је имплементиран раних осамдесетих година прошлог века од стране Центро Студи е Лаборатори Телецомуницазиони (ЦСЕЛТ) у Торину, Италија, која производи АБЛЕД графички ВЛСИ дизајн едитор.

До касне 1970. године, дизајн коришћен у програмабилним логичким уређајима постао је веома популаран иако су примарно ови дизајни били ограничени на дизајнирање машина са коначним стањима. Посао у Дата Генерал 1980. године користио је исте уређаје за дизајнирање Дата Генерал Ецлипсе MV/8000, и потребе за рекламирањем су порасле за језик који их добро да им се придружи. До 1983 Дата I/О представио је АБЕЛ да испуни потребе.

Како се дизајн преусмерио на ВЛСИ, први модерни језик за опис хардвера, Верилог је представљен од стране Гатеwаy Десигн Аутоматион 1985. године. Цаденце Десигн Сyстемс су касније преузели права за Верилог-XL, симулатор језика за опис хардвера који постаје де фацто стандард за Верилог симулаторе у следећој деценији. Захтев од стране Министарства одбране САД-а, 1987, предводио је развоју ВХДЛ (ВХСИЦ Хардwаре Десцриптион Лангуаге). ВХДЛ је био заснован на Ада програмском језику, као и на искуству добијеном на ранијем развоју ИСПС.[9] Иницијално, Верилог и ВХДЛ су коришћени да документују и симулирају дизајн кола који су већ били сачувани и описани у другачијој форми (као што су шематски фајлови). Симулације језика за опис хардвера су омогућиле инжењерима да раде на вишем нивоу апстракције него у раду са симулацијама на шематском нивоу, и тако је увећан капацитет од стотине транзистора до неколико хиљада.

Увод логичке синтезе за језике за опис хардвера подигле су језике за опис хардвера из позадине у први план дигиталног дизајна. Алатке за синтезу компајлирале су изворне фајлове језика за опис хардвера (написане у условном формату названим РТЛ) у описе механички изградиве нетлисте у терминима кола и транзистора. Писање РТЛ фајла који је могуће синтетизовати захтева вежбу и дисциплину дизајнера, у поређењу са традиционалним, шематским планом, перформансе синтетизованих РТЛ нетлисти су скоро увек биле површински веће и спорије. Кола дизајнирана од стране искусних инжењера, користећи интензиван рад уз ручно планиране шеме, су скоро увек превазилазиле свој логичко синтетизовани еквивалент, али предност по питању производње коју је имала логичка синтеза ускоро замењује дигиталне шеме на местима која су била проблематична за РТЛ синтетизаторе: екстремно велика брзина, мало енергије, или асинхрона кола.

У току неколико година, ВХДЛ и Верилог пробили су се као доминантни језици за опис хардвера у електронској индустрији, док су старији и мање способнији језици за опис хардвера постептно нестајали иа употребе. Међутим, ВХДЛ и Верилог деле много заједничких ограничења: ниједан од њих није погодан за симулације аналогних или мешовитих кола; ниједан не поседује језичку структуру да опише рекурзивно генерисане логичке структуре. Специјализовани језици за опис хардвера (као што је Цонфлуенце) били су представљени са јасном наменом поправљања специфичних ограничења Верилога и ВХДЛ, ипак ниједан од њих није направљен с намером да их замени.

Током година, много труда уложено је у побољшање језика за опис хардвера. Последња верзија Верилога, формално позната као ИЕЕЕ 1800—2005 СyстемВерилог, увела је доста нових карактеристика (класе, случајне величине, и својства) да укаже на све већу потребу за бољим тест бенцх-ом, хијерархијом дизајна и поновном употребљивошчу. Будућа издање ВХДЛ-а је такође у израдик и очекује се да одговара побпљшањима СyстемВерилог.

Дизајн коришћењем ХДЛ-а[уреди | уреди извор]

Као резултат ефикасности реализоване коришћењем језика за опис хардвера, већина модерног дизајна дигиталних кола се окреће око њих. Већина дизајна почиње као скуп захтева или као архитектонски дијаграм високог нивоа. Структуре контрола и одлучивања су често развијене у апликацијама за дијаграм тока или су у саставу уредјаја стања дијаграма. Процес писања кода језиком за опис хардвера веома зависи од природе кола и од дизајнеровог начина писања кода. Језик за опис хардвера је само 'хватач језика', најчешће почиње описом аритметике на високом нивоу као што је на пример C++ математички модел. Дизајнери најчешће користе скрипт језике као што је Перл да аутомацки генеришу структуре понављајућих кола у језику за опис хардвера.

Код ХДЛ-а се подвргава прегледу кодова или ревизији. У припреми за синтезу, опис ХДЛ-а подлеже низу аутоматизованих контрола. Контроле пријављују одступања од стандардизованих смерница за код, уочавају потенцијалне неједнозначности конструкције пре него што могу произвести погрешно извршавање кода, и проверавају честе грешке. Овај процес помаже у решавању грешака при синтези кода.

У индустријском говору, дизајн ХДЛ-а се углавном завршава у фази синтезе. Једном када је алат за синтезу мапирао опис ХДЛ-а у нетлист-у, нетлист-а се прослеђује у задњу фазу. У зависности од физичке технологије (ФПГА, АСИЦ), језици за опис хардвера могу, а и не морају играти битну улогу значајну улогу у протоку података. Уопштено гледано, с обзиром да дизајн напредује према физички реализованом облику, база података о дизајну постаје све више оптерећена информацијама специфичним за технологију, које се не могу чувати у генеричком ХДЛ опису. На крају, интегрисано коло се производи или програмира за употребу.


Симулација и дебаговање ХДЛ кода[уреди | уреди извор]

Од суштинског значаја за ХДЛ дизајн је могућност симулације ХДЛ програма. Симулација омогућава ХДЛ опис дизајна (назван модел) да продје верификацију дизајна, важна прекретница која потврђује дизајнирану намену (спецификацију) против имплементације кода у опису ХДЛ-а. Такође дозвољава архитектонско истраживање. Инжењер може да експериментише у одбиру дизајна писањем више варијација основног дизајна, а затим поређењем њиховог понашања у симулатору.

Да би симулирали ХДЛ модел, инжењер пише врхунско симулацијско окружење (које се зове тестбенцх). Минимално, тестбенцх садржи инстанцирање модела, пин/сигнал декларације за ИО модела, и цлоцк. Тестбенцх коде је вођен догађајем: инжењер пише ХДЛ исказе да имплементира ресет-сигнал, да моделира трансакције интерфејса (као што је читање / писање хост-буса), као и да надгледа излаз ДУТ-а. ХДЛ симулатор -програм који извршава тестбенцх — одржава симултаорски сат, што је главна референца за све догађаје у симулацији тестбенцх-а. Догађаји се јављају само онда када је диктирао тестбенцх (као што је прекидач програмиран унутар тестбенцх-а), или у реакцији ради стимулације и покретања догађаја.Савремени ХДЛ симулатори имају потпуно опремљене графичке корисничке интерфејсе, у комплету са алатом за дебаговање. Ово омогућава кориснику да заустави и поново покрене симулацију у било ком тренутку, убаци тачке прекида симулатора (независно од ХДЛ кода) и надгледа или модификује било који елемент у хијерархији модела ХДЛ. Савремени симулатори могу такође повезати ХДЛ окружење са библиотекама направљеним од корисника, преко дефинисаног ПЛИ / ВХПИ интерфејса. Повезивање је зависно од система (Wин32 / Линуx / СПАРЦ), јер су ХДЛ симулатор и корисничке библиотеке компајлиране и повезане ван ХДЛ окружења.

Верификација дизајна је често временски најзахтевнији део процеса дизајна, због раздвајања између функционалне спецификације уређаја, тумачења спецификације дизајнера и непрецизности језика ХДЛ-а. Већина иницијалног циклуса тестирања / дебаговања се спроводи у окружењу ХДЛ симулатора, јер је рана фаза дизајна подложна честим и великим променама кола. ХДЛ опис се такође може развити и тестирати у хардверску — програмабилни логички уређаји се често користе у ове сврхе. Прављење прототипа хардвера је релативно скупље од ХДЛ симулације, али нуди реални поглед на дизајн. Прављење прототипа је најбољи начин за проверу повезивања са другим хардверским уређајима и хардверским прототипима. Чак и они који раде на спорим ФПГА-има нуде много краће време симулације од чисте ХДЛ симулације.

Верификација дизајна помоћу ХДЛ-а[уреди | уреди извор]

Историјски, верификација дизајна је била тешка, понављајућа петља писања и покретања симулационих тестова напротив дизајна испод теста. Како су дизајни чипова постали све већи и сложенији, задатак верификације дизајна је порастао до тачке када сада управља распоредом дизајнерског тима. У потрази за начинима за побољшање продуктивности дизајна, индустрија електронског дизајна аутоматизације развила је ПСЛ (Пропертy Специфицатион Лангуаге).

У условима формалне верификације, својство (пропертy) је чињенична изјава о очекиваном или претпостављеном понашању другог објекта. Идеално, за дат ХДЛ опис, користећи формалне математичке методе може се доказати да је својство или да су својства тачна или нетачна. У практичном смислу, многа својства се не могу доказати зато што заузимају неограничен простор за решење . Међутим, ако се обезбеди низ оперативних претпоставки или ограничења, провера својстава може доказати (или потврдити) одређена својства смањењем простора за решење.

Наведбе не симулирају активности кола, већ заузимају и документују намеру дизајнера у ХДЛ коду. У симулационом окружењу симулатор евалуира све наведене тврдње, пријављујући локацију и тежину било којег кршења. У окружењу за синтезу, алат за синтезу обично ради са правилом заустављања синтезе након било каквог кршења. Верификација заснована на тврдњи је још увијек у развоју, али се очекује да постане саставни део ХДЛ дизајнерског алата.


ХДЛ и програмски језици[уреди | уреди извор]

ХДЛ је грубо сличан програмском језику, али постоје велике разлике. Многи програмски језици су инхерентно процедурални (имају једну нит), са синтаксичким и семантичким ограниченом да подрже конкурентност. ХДЛови, с друге стране, подсећају на језике који омогућавају конкурентност због могућности за моделирањем више паралелних процеса (као што су флипфлопови и сабирачи) који се аутоматски извршавају независно један од другог. Свака промена улазног процеса аутоматски покреће ажурирање у стацк процесору симулатор-а. I програмски језици и ХДЛ-ови обрађује компајлер, али са различитим циљевима. Код ХДЛ-ова, „компајлирање” се односи на логичку синтезу, процес трансформације ХДЛ кода у физички остварљив нетлист. Нетлист-а са излаза може бити у једној од много форми: „симулациона” нетлист-а са са информацијама о кашњењу, „хандофф” нетлист за место и путању након синтезе или генерички стандардни формат електронског дизајна (ЕДИФ) за следеће претварање у ЈЕДЕЦ- формат датотеке).

Са друге стране, компилатор софтвера претвара листу изворног кода у микропроцесор — специфичан објектни код за извршавање на циљаном микропроцесору. Како ХДЛ и програмски језици позајмљују концепте и особине једна од друге, граница између њих постаје мање изражена. Међутим, чисти ХДЛ нису погодни за развој апликативног софтвера опште намене, баш као што су програмски језици опште намене непожељни за моделирање хардвера. Ипак, пошто електронски системи постају све сложенији, а системи који се поново конфигуришу постају све чешћи, постоји растућа жеља у индустрији за једноставнији језик који може обављати неке задатке и хардверског дизајна и софтверског програмирања. СистемЦ је такав пример — уграђени систем хардвера може се моделирати као не-детаљни архитектонски блокови (црне кутије са моделираним улазним сигналима и излазним управљачима). Циљна апликација је написана у C-у или C ++ и обично састављена за систем за хостовање (за разлику од циљања уграђеног ЦПУ-а, који захтева симулацију хоста уграђеног ЦПУ-а или емулираног ЦПУ-а). Висок степен апстракције СистемЦ модела је погодан за истраживање ране архитектуре, јер архитектонске модификације могу се лако проценити уз мало забринутости за проблеме имплементације на нивоу сигнала. Међутим, модел нити који се користи у СистемЦ-у и његово ослањање на дељену меморију значи да не подржава паралелно извршавање или моделе нижих нивоа.


Синтеза на високом нивоу[уреди | уреди извор]

У свом нивоу абстракције, ХДЛ-ови су упоређени са асемблером. Постоје покушаји да се подигне ниво апстракције дизајна, како би се смањила сложеност програма у ХДЛс. Компаније као што су Цаденце , Синопсис и Агилити Десигн Солутионс промовишу СистемЦ као начин комбиновања језика високог нивоа са моделима конкурентности, како би омогућили бржи дизајн циклуси за ФПГА него што је могуће користећи традиционалне ХДЛ-ове. Приступи засновани на стандардним C или C ++ (са библиотекама или другим проширењима који омогућавају паралелно програмирање) налазе се у Цатапулт C алатима из Ментор Грапхицс и Импулсе C алатима од Импулсе Аццелератед Тецхнологиес.Аннаполис Мицро Сyстемс, Инц.'с ЦореФире Десигн Суите и Натионал Инструментс ЛабВИЕW ФПГА омогућавају графичкидатафлоw приступ дизајну на високом нивоу и језике као што су СyстемВерилог, СyстемВХДЛ, и Хандел-C који настоје да постигну исти циљ, али имају за циљ чинећи постојеће хардверске инжењере продуктивнијим, уместо да ФПГА постане доступнијим постојећим софтверским инжењерима. Такође је могуће дизајн хардвера модула користећи МАТЛАБ и Симулинк користећи Матхwоркс ХДЛ Цодер тоол[10] или Xилинx Сyстем Генератор (XСГ) (формерлy Аццел ДСП) фром Xилинx.[11]

Референце[уреди | уреди извор]

  1. ^ Цилетти, Мицхаел D. (2010). Адванцед Дигитал Десигн wитх Верилог ХДЛ. Прентице Халл. 
  2. ^ Барбацци, M. "А цомпарисон оф регистер трансфер лангуагес фор десцрибинг цомпутерс анд дигитал сyстемс, " Царнегие-Меллон Унив., Депт. оф Цомпутер Сциенце, Марцх 1973
  3. ^ Белл, C. Г.; Неwелл, А. (1971). Цомпутер Струцтурес: Реадингс анд Еxамплес. МцГраw-Хилл. ISBN 978-0-07-004357-2. 
  4. ^ Реиллy, Е.D. (2003). Милестонес ин цомпутер сциенце анд информатион тецхнологy. Греенwоод Пресс. стр. 183. ISBN 978-1-57356-521-9. 
  5. ^ Bell, C.G.; Grason, J.; Newell, A. (1972). Designing Computers and Digital Systems. Digital Press.  (LCCN Number 72-89566)
  6. ^ Barbacci, M. "The Symbolic Manipulation of Computer Descriptions: ISPL Compiler and Simulator, " Carnegie-Mellon Univ., Dept. of Computer Science, 1976
  7. ^ Barbacci, M. "The ISPS Computer Description Language, " Carnegie-Mellon Univ., Dept. of Computer Science, 1977
  8. ^ Girardi, G.; Hartenstein, R. (1983). ABL specification (Извештај). CSELT and University of Kaiserslautern. 
  9. ^ 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
  10. ^ „VHDL code - HDL Coder - MATLAB & Simulink”. Mathworks.com. 30. 4. 2011. Приступљено 11. 8. 2012. 
  11. ^ „System Generator for DSP”. Xilinx.com. Архивирано из оригинала 12. 7. 2012. г. Приступљено 11. 8. 2012.