SystemVerilog - SystemVerilog

SystemVerilog
SystemVerilog logo.png
SystemVerilog логотипі
ПарадигмаҚұрылымдалған (дизайн)
Нысанға бағытталған (тексеру)
ЖобалағанСинопсия, кейінірек IEEE
Бірінші пайда болды2002; 18 жыл бұрын (2002)
Тұрақты шығарылым
IEEE 1800-2017 / 22.02.2018 ж; 2 жыл бұрын (2018-02-22)
Пәнді теруСтатикалық, әлсіз
Файл атауының кеңейтімдері.sv, .svh
Әсер еткен
Дизайн: Верилог, VHDL, C ++, Тексеру: OpenVera, Java

SystemVerilog, ретінде стандартталған IEEE 1800, Бұл аппараттық сипаттама және жабдықты тексеру тілі модельдеу үшін қолданылады, жобалау, модельдеу, тест және іске асыру электрондық жүйелер. SystemVerilog негізделген Верилог және кейбір кеңейтімдер, ал 2008 жылдан бастап Verilog қазір сол бөлігі болып табылады IEEE стандарты. Бұл әдетте қолданылады жартылай өткізгіш және электронды дизайн индустриясы Верилог эволюциясы ретінде.

Тарих

SystemVerilog Superlog тілінің қайырымдылық жасаудан басталды Accellera 2002 жылы Co-Design Automation стартап-компаниясы.[1] Тексеру функционалдығының негізгі бөлігі OpenVera сыйға тартқан тіл Синопсия. 2005 жылы SystemVerilog ретінде қабылданды IEEE Стандарт 1800-2005.[2] 2009 жылы стандарт базалық Verilog (IEEE 1364-2005) стандартымен біріктіріліп, IEEE Standard 1800-2009 құрады. Қазіргі нұсқасы - IEEE 1800-2017 стандартты нұсқасы.[3]

SystemVerilog функциясының жиынтығын екі түрлі рөлге бөлуге болады:

  1. Үшін SystemVerilog тіркеу-аудару деңгейі (RTL) дизайны - кеңейту Верилог-2005; бұл тілдің барлық мүмкіндіктері SystemVerilog-де қол жетімді. Сондықтан Verilog - бұл SystemVerilog-тің ішкі жиыны.
  2. Тексеру үшін SystemVerilog кең қолданады объектіге бағытталған бағдарламалау техникаларымен тығыз байланысты Java Верилогқа қарағанда. Бұл құрылымдар, әдетте, синтезделмейді.

Осы мақаланың қалған бөлігі SystemVerilog-да жоқ мүмкіндіктерді қарастырады Верилог-2005.

Дизайн ерекшеліктері

Деректер өмірі

SystemVerilog-де деректердің қызмет ету мерзімінің екі түрі бар: статикалық және автоматты. Автоматты айнымалылар бағдарламаның орындалуы айнымалының ауқымына келген сәтте жасалады. Статикалық айнымалылар бағдарламаның орындалуының басында құрылады және егер ол орындалған кезде жаңа мән берілмесе, бүкіл бағдарламаның жұмыс уақытында бірдей мәнді сақтайды.

Тапсырманың немесе функцияның ішінде түрін көрсетпей жарияланған кез-келген айнымалы автоматты болып саналады. Айнымалы статикалық орынды көрсету үшін «статикалық" кілт сөз түріндегі декларацияда, мысалы, «статикалық int x;«.»автоматты«кілт сөзі дәл осылай қолданылады.

Мәліметтердің жаңа түрлері

Жақсартылған типтер Verilog-тің «reg» түріне жаңа мүмкіндік қосу:

логика [31:0] my_var;

Verilog-1995 және -2001 регулятивтік айнымалыларды мінез-құлық мәлімдемелеріне шектейді RTL коды. SystemVerilog рег типін кеңейтеді, сондықтан оны қақпа немесе модуль сияқты бір драйвер басқара алады. SystemVerilog пайдаланушыларға оның қосымша мүмкіндігі бар екенін және аппараттық регистр емес екенін еске салу үшін бұл түрді «логика» деп атайды. «Логика» және «рег» атаулары бір-бірін ауыстырады. Бірнеше драйверлері бар сигнал (мысалы үш күйлі буфер үшін жалпы мақсаттағы кіріс / шығыс ) «сым» сияқты таза түрін жариялау керек, сондықтан SystemVerilog соңғы мәнді шеше алады.

Көпөлшемді массивтер Verilog-тің «регистрлер» және «естеліктер» ұғымдарын біріздендіру және кеңейту:

логика [1:0][2:0] my_pack[32];

Классикалық верилог айнымалы атауының сол жағында тек бір өлшемді жариялауға рұқсат берді. SystemVerilog осындай «оралған» өлшемдердің кез-келген санына рұқсат береді. Массив типінің айнымалысы бүтін арифметикалық шамаға 1: 1 картаға түсіреді. Жоғарыда келтірілген мысалда my_pack өрнектерде алты биттік бүтін сан ретінде қолданылуы мүмкін. Атаудың оң жағындағы өлшемдер (бұл жағдайда 32) «оралмаған» өлшемдер деп аталады. Сол сияқты Верилог-2001, оралмаған өлшемдердің кез-келген санына рұқсат етіледі.

Санамаланған деректер түрлері (энумдар) сандық шамаларға мағыналы атаулар беруге мүмкіндік береді. Санамаланған тип деп жарияланған айнымалыларды басқа санақ түріндегі айнымалыларға беруге болмайды кастинг. Бұл Verilog-2005 санамаланған шамаларды енгізудің қолайлы әдістемесі болған параметрлерге қатысты емес:

typedef енум логика [2:0] {   ҚЫЗЫЛ, ЖАСЫЛ, КӨК, КИАН, MAGENTA, САРЫ} түс_т;түс_т   менің_түсім = ЖАСЫЛ;бастапқы $ дисплей(«Түс% s», менің_түсім.аты());

Жоғарыда көрсетілгендей, дизайнер негізгі арифметикалық түрін көрсете алады (логика [2: 0] бұл жағдайда) санау мәнін көрсету үшін қолданылады. Х және Z мета мәндерін мұнда заңсыз мемлекеттерді бейнелеу үшін пайдалануға болады. Кіріктірілген функция аты () валидация мен тестілеуге пайдалы ағымдағы сандық мәнге арналған ASCII жолын қайтарады.

Жаңа бүтін типтер: SystemVerilog анықтайды байт, шорт, int және лонгинт сәйкесінше 8, 16, 32 және 64 биттері бар екі күйлі қол қойылған интегралды типтер ретінде. A бит тип - айнымалы ені сияқты жұмыс істейтін екі күйлі тип логика. Екі күйлі типтерге жоқ X және З классикалық Верилогтың метавалювтері; осы типтермен жұмыс жылдам модельдеуге әкелуі мүмкін.

Құрылымдар және кәсіподақтар олар сияқты көп жұмыс істейді C бағдарламалау тілі. SystemVerilog жақсартуларына мыналар кіреді оралған атрибут және тегтелген атрибут. The тегтелген атрибут кәсіподақтың қай мүшесі (мүшелері) қолданыста болғанын бақылауға мүмкіндік береді. The оралған атрибут құрылымды немесе біріктіруді биттердің 1 массивіне 1: 1 салыстыруға әкеледі. Мазмұны құрылым деректер типтері саңылаусыз жадының үздіксіз блогын алады bitfields C және C ++ тілінде:

typedef құрылым оралған {    бит [10:0]  экспо;    бит         қол қою;    бит [51:0]  мантия;} ФП;ФП     нөл = 64'b0;

Осы мысалда көрсетілгендей, SystemVerilog қолдайды машинка, C және C ++ сияқты.

Процедуралық блоктар

SystemVerilog модельдеуге арналған үш жаңа процедуралық блокты ұсынады жабдық: әрқашан (модельдеу үшін) комбинациялық логика ), әрдайым_фф (үшін резеңке шәркелер ), және әрдайым (үшін ысырмалар ). Ал Verilog бірыңғай, жалпы мақсатта қолданды әрқашан әр түрлі типтегі аппараттық құрылымдарды модельдеуге арналған блок, SystemVerilog-тің жаңа блоктарының әрқайсысы блоктармен сипатталған аппараттық құралдардың модельдің қолдануымен сәйкес келуін қамтамасыз ету үшін мағыналық шектеулер енгізу арқылы белгілі бір типтегі жабдықты модельдеуге арналған. HDL компиляторы немесе растау бағдарламасы тек мінез-құлықтың тек көзделген түрінің пайда болуын қамтамасыз ету үшін қосымша қадамдар жасай алады.

Ан әрқашан блоктық модельдер комбинациялық логика. Тренажер сезімталдық тізімін құрамындағы мәлімдемелердің барлық айнымалылары ретінде енгізеді:

әрқашан баста    тм = б * б - 4 * а * c;    жоқ_тамыр = (тм < 0);Соңы

Ан әрдайым блок а дегенді білдіреді деңгейге сезімтал ысырма. Тағы да, сезімталдық тізімі кодтан шығады:

әрдайым    егер (kk) q <= г.;

Ан әрдайым_фф блок модельдеуге арналған синхронды логика (әсіресе жиектерге сезімтал дәйекті логика ):

әрдайым_фф @(қою клк)    санау <= санау + 1;

Электронды жобалауды автоматтандыру (EDA) құралдары жабдықтың моделі блокты қолдану семантикасын бұзбайтындығын тексеру арқылы дизайнның мақсатын тексере алады. Мысалы, жаңа блоктар айнымалыны тағайындауды тек бір көзге рұқсат етумен шектейді, ал Verilog-тің көзі әрқашан бірнеше процедуралық көздерден рұқсат етілген тағайындауды блоктау.

Интерфейстер

Кішкентай дизайн үшін Verilog порт модульдің қоршаған ортамен байланысын ықшам сипаттайды. Бірақ үлкен дизайн иерархиясындағы негізгі блоктар порттардың санына мыңдаған ие. SystemVerilog тұжырымдамасын енгізеді интерфейстер екеуін азайту үшін порт атауының декларациялары байланысты модульдер арасында, сондай-ақ топтық және реферат пайдаланушы жариялаған байламға қатысты сигналдар. Қосымша тұжырымдама - логикалық байланыстардың бағытын көрсететін modport.

Мысал:

интерфейс intf;  логика а;  логика б;  modport жылы (енгізу а, шығу б);  modport шығу (енгізу б, шығу а); интерфейсмодуль жоғарғы;  intf мен ();  u_a м1 (.i1(мен.жылы));  u_b м2 (.i2(мен.шығу));соңғы модульмодуль u_a (intf.жылы i1);соңғы модульмодуль u_b (intf.шығу i2);соңғы модуль

Тексеру ерекшеліктері

Төмендегі тексеру функциялары әдетте синтезделмейді, яғни оларды HDL кодына негізделген жабдықта енгізу мүмкін емес. Керісінше, олар кеңейтілетін, икемді құруға көмектеседі сынақ орындықтары.

Мәліметтердің жаңа түрлері

The жіп мәліметтер типі өзгермелі ұзындықтағы мәтінді білдіреді жіп. Мысалға:

жіп s1 = «Сәлеметсіз бе»;жіп s2 = «әлем»;жіп б = ".?!";жіп s3 = {s1, ", ", s2, б[2]}; // жол тізбегі$ дисплей(«[% d]% s», s3.лен(), s3); // модельдеу басып шығарады: «[13] Сәлем, әлем!»

Дизайнда қолданылатын статикалық массивтен басқа, SystemVerilog ұсынады динамикалық массивтер, ассоциативті массивтер және кезектер:

int cmdline_elements; // # динамикалық массив үшін элементтерint да[];             // динамикалық массивint ai[int];          // int индекстелген ассоциативті массивint сияқты[жіп];       // жолмен индекстелген ассоциативті массивint qa[$];            // кезек, массив ретінде индекстелген немесе кіріктірілген әдістерменбастапқы баста    cmdline_elements = 16;    да = жаңа[ cmdline_elements ]; // 16 элементтен тұратын массивті бөлуСоңы

Динамикалық массив оралмаған массив сияқты жұмыс істейді, бірақ болудың артықшылығын ұсынады динамикалық бөлінген кезінде жұмыс уақыты (жоғарыда көрсетілгендей.) Егер жинақталған жиымның өлшемі компиляция кезінде белгілі болса (тұрақтыдан немесе тұрақтылардың өрнегінен), динамикалық массивтің өлшемін басқа жұмыс уақытының айнымалысынан бастап инициализациялауға болады, бұл массивтің өлшемін өзгертуге және қажет болғанда өлшемін өзгертуге мүмкіндік береді. .

Ассоциативті массивті а деп қарастыруға болады екілік іздеу ағашы а пайдаланушы көрсеткен кілт түрі және мәліметтер типі. Бұл кілтті білдіреді тапсырыс беру; ассоциативті массив элементтерін лексикографиялық тәртіпте оқуға болады. Сонымен, кезек функциялардың көп бөлігін қамтамасыз етеді C ++ STL дек тип: элементтерді қосуға және жоюға болады. Бұл примитивтер қажетті мәліметтер құрылымын құруға мүмкіндік береді таблодинг үлкен дизайн.

Сабақтар

SystemVerilog қамтамасыз етеді объектіге бағытталған бағдарламалау модель.

SystemVerilog бағдарламасында сыныптар а жалғыз мұрагерлік модель, бірақ «интерфейс сыныптары» деп аталатын пайдалану арқылы мұрагерлікке ұқсас функцияны жүзеге асыра алады (тұжырымдамасы бойынша интерфейс Java ерекшелігі). Сабақтар түрлері бойынша параметрлеуге болады, негізгі функциясын қамтамасыз ету C ++ шаблондары. Алайда, шаблон мамандануы және функционалдық шаблондар қолдау көрсетілмейді.

SystemVerilog's полиморфизм функциялары C ++ сипаттамаларына ұқсас: бағдарламашы а жазуы мүмкін виртуалды туынды сынып функцияны басқаруға ие болу. Қараңыз виртуалды функция қосымша ақпарат алу үшін.

Инкапсуляция және деректерді жасыру көмегімен жүзеге асырылады жергілікті және қорғалған жасырылатын кез-келген элементке қолданылуы керек кілт сөздер. Әдепкі бойынша, барлық сынып қасиеттері қоғамдық.

Сынып даналары динамикалық түрде жаңа кілт сөз. A конструктор арқылы белгіленеді жаңа функция анықтауға болады. SystemVerilog автоматты түрде жұмыс істейді қоқыс шығару, сондықтан құрылған даналарды нақты жоюға арналған тілдік құрал жоқ жаңа оператор.

Мысал:

виртуалды сынып Жад;    виртуалды функциясы бит [31:0] оқыңыз(бит [31:0] адр); соңғы функция    виртуалды функциясы жарамсыз жазу(бит [31:0] адр, бит [31:0] деректер); соңғы функциясоңғы сыныпсынып SRAM #(параметр АЙҚЫНДЫҚ=10) ұзарады Жад;    бит [31:0] мем [1<<АЙҚЫНДЫҚ];    виртуалды функциясы бит [31:0] оқыңыз(бит [31:0] адр);        қайту мем[адр];    соңғы функция    виртуалды функциясы жарамсыз жазу(бит [31:0] адр, бит [31:0] деректер);        мем[адр] = деректер;    соңғы функциясоңғы сынып

Шектелген кездейсоқ ұрпақ

Класс анықтамасында немесе кейбір лексикалық аяда дербес айнымалылар ретінде анықталған бүтін шамалар болуы мүмкін тағайындалған кездейсоқ мәндер шектеулер жиынтығына негізделген. Бұл мүмкіндік жасау үшін пайдалы тексеру үшін рандомизацияланған сценарийлер.

Сынып анықтамаларында ранд және randc модификаторлар рандомизацияға ұшырайтын айнымалы сигналдар. randc анықтайды ауыстыру - кез келген мән қайталанғанға дейін айнымалы барлық мүмкін мәндерді бір рет қабылдайтын рандомизацияға негізделген. Модификаторсыз айнымалылар рандомизацияланбайды.

сынып эт_фрейм;    ранд бит [47:0] dest;    ранд бит [47:0] src;    ранд бит [15:0] f_типі;    ранд байт       пайдалы жүктеме[];    бит [31:0]      дана;    ранд бит [31:0] fcs_corrupt;    шектеу негізгі {        пайдалы жүктеме.өлшемі ішінде {[46:1500]};    }    шектеу жақсы_жұм {        fcs_corrupt == 0;    }соңғы сынып

Бұл мысалда дана өріс рандомизацияланбаған; іс жүзінде ол CRC генераторымен есептеледі және fcs_corrupt FCS қателерін жіберу үшін оны бүлдіру үшін қолданылатын өріс. Көрсетілген екі шектеулер сәйкестікке қатысты Ethernet жақтаулары. Шектеуді таңдаулы түрде қосуға болады; бұл мүмкіндік жоғарыда келтірілген мысалда бұзылған кадрларды құру үшін қажет болады. Шектеулер ерікті түрде күрделі болуы мүмкін, олар айнымалылардың өзара байланысын, салдары мен қайталануын қамтиды. SystemVerilog шектеуші шешуші шешім бар, егер ол бар болса, бірақ ол қажет болатын уақытқа кепілдік бермейді, өйткені бұл жалпы NP-hard проблема (бульдік қанағаттанушылық ).

Рандомизация әдістері

Әр SystemVerilog сыныбында рандомизацияның алдын-ала анықталған 3 әдісі бар: алдын-ала рандомизация, рандомизация және пост-рандомизация. Рандомизация әдісін қолданушы класс айнымалыларын рандомизациялау үшін шақырады. Pre_randomize әдісі рандомизация алдында рандомизация әдісімен, рандомизациядан кейінгі рандомизация әдісі рандомизация әдісімен аталады.

сынып эт_фрейм;    ранд бит [47:0] dest;    ранд бит [47:0] src;    ранд бит [15:0] f_типі;    ранд байт       пайдалы жүктеме[];    бит [31:0]      дана;    ранд бит        бүлінген_кадр;    шектеу негізгі {        пайдалы жүктеме.өлшемі ішінде {[46:1500]};    }        функциясы жарамсыз post_randomize()      бұл.есептеу_фикс(); // кездейсоқ кадрға сәйкес fcs өрісін жаңартыңыз      егер (бүлінген_кадр)  // егер бұл кадр бүлінуі керек болса         бұл.бұзылған_фискалар(); // ФК-ны бүлдіру    соңғы функциясоңғы сынып

Шектеуді бақылау

Рандомизацияны басқару үшін constraint_mode () және random_mode () әдістері қолданылады. constraint_mode () белгілі бір шектеуді қосу және өшіру үшін, ал random_mode белгілі бір айнымалы рандомизацияны қосу немесе өшіру үшін қолданылады. Төмендегі код сипаттайды және процедуралық сынақтан өтеді Ethernet жақтауы:

сынып эт_фрейм;    ранд бит [47:0] dest;    ранд бит [47:0] src;    ранд бит [15:0] f_типі;    ранд байт       пайдалы жүктеме[];    бит [31:0]      дана;    ранд бит        бүлінген_кадр;    шектеу негізгі {        пайдалы жүктеме.өлшемі ішінде {[46:1500]};    }       шектеу one_src_cst {        src == 48-сағ    }    шектеу dist_to_fcs {        дана дист {0:/30,[1:2500]:/50};  // 30, және 50 - салмақ (30/80 немесе 50/80, осы мысалда)     }    соңғы сынып...эт_фрейм менің_фреймім;менің_фреймім.one_src_cst.шектеу_ режимі(0); // one_src_cst шектеулері ескерілмейдіменің_фреймім.f_типі.кездейсоқ_ режим(0);        // f_type айнымалысы осы кадр данасы үшін рандомизацияланбайды.менің_фреймім.рандомизациялау();

Бекіту

Бекіту белгілі бір шартқа немесе күйге жеткеннен кейін көрінетін дизайнның қасиеттерін тексеру үшін пайдалы. SystemVerilog-тің ұқсас бекіту сипаттамасының тілі бар Сипаттаманың тілі. Бекітуге қызмет ететін SystemVerilog тіл құрылымдарының ішкі жиыны әдетте SystemVerilog Assertion немесе SVA деп аталады.[4]

SystemVerilog тұжырымдары келесіден жасалған тізбектер және қасиеттері. Қасиеттер - бұл реттіліктің жоғарғы жиыны; кез-келген дәйектілік қасиет сияқты пайдаланылуы мүмкін, бірақ бұл әдетте пайдалы емес.

Реттер келесіден тұрады логикалық өрнектер ұлғайтылды уақытша операторлар. Қарапайым уақытша оператор болып табылады ## біріктіруді орындайтын оператор:[түсіндіру қажет ]

жүйелі S1;    @(қою клк) req ##1 гнт;нәтиже

Бұл реттілік сәйкес келеді гнт бір сағат циклінен кейін сигнал жоғары болады req жоғары көтеріледі. Барлық реттілік операциялары сағатпен синхронды екенін ескеріңіз.

Басқа тізбекті операторларға қайталану операторлары, сонымен қатар әр түрлі конъюнкциялар жатады. Бұл операторлар дизайнерге дизайн компоненттері арасындағы күрделі қатынастарды білдіруге мүмкіндік береді.

Бекіту дәйектілікті немесе сипатты үнемі бағалауға тырысу арқылы жұмыс істейді. Егер сипат сәтсіздікке ұшыраса, бекіту орындалмайды. Жоғарыдағы реттілік әрдайым сәтсіздікке ұшырайды req төмен. Талапты дәл білдіру үшін гнт ұстану req меншік қажет:

мүлік req_gnt;    @(қою клк) req |=> гнт;соңғы меншікassert_req_gnt: бекіту мүлік (req_gnt) басқа $ қате(«req соңынан gnt жазылмаған.»);

Бұл мысалда импликация оператор |=>. Импликацияның сол жағындағы сөйлем деп аталады бұрынғы ал оң жақтағы сөйлемі деп аталады салдары. Бағалау Мұның мәні бұрынғыларды бағалауға бірнеше рет басталады. Бұрынғы жетістікке жеткенде, нәтиже тырысылады, ал дәлелдеудің сәтті болуы оның нәтижесіне байланысты. Бұл мысалда нәтижеге дейін әрекет жасалмайды req жоғары көтеріледі, содан кейін қасиет сәтсіздікке ұшырайды гнт келесі сағатта жоғары емес.

Бекітулерден басқа, SystemVerilog қолдайды жорамалдар және қасиеттерін қамту. Болжам шартты орнатады: а формальды логика дәлелдеу құралы шындық деп қабылдауы керек. Бекіту шындықпен дәлелденуге тиісті қасиетті көрсетеді. Жылы модельдеу, дәлелдер де, болжамдар да сынақ ынталандыруларына қарсы тексеріледі. Меншікті қамту тексеру инженеріне растаулар дизайнды дәл қадағалап отырғанын тексеруге мүмкіндік береді.[бұлыңғыр ]

Қамту

Қамту аппараттық растау тілдеріне қатысты модельдеу ішіндегі іріктеу оқиғаларына негізделген статистиканың жиынтығы жатады. Қамту қашан екенін анықтау үшін қолданылады сыналатын құрылғы (DUT) DUT-тің дұрыс жұмыс істейтіндігіне үлкен сенімділіктің болуы үшін жеткілікті түрліше әсер етті. Бұл ерекшеленетінін ескеріңіз кодты қамту дизайндағы кодтың барлық сызықтарының орындалуын қамтамасыз ететін дизайн кодын құралдары. Функционалды қамту қажеттіліктің барлығын қамтамасыз етеді бұрыш және шеткі жағдайлар ішінде дизайн кеңістігі болған зерттелген.

SystemVerilog қамту тобы a сақтайтын «қоқыс жәшіктері» туралы мәліметтер базасын жасайды гистограмма байланысты айнымалының мәндері. Сондай-ақ айқындаманы қамтуы мүмкін, бұл гистограмманы жасайды Декарттық өнім бірнеше айнымалылар.

A сынамаларды алу үлгі алынған кезде оқиғаларды басқарады. The сынамаларды алу оқиға Verilog оқиғасы, код блогының кіруі немесе шығуы немесе шақыру болуы мүмкін үлгі қамту тобының әдісі. Деректер тек мағыналы болған кезде ғана іріктелуін қамтамасыз ету қажет.

Мысалға:

сынып эт_фрейм;   // Жоғарыдағыдай анықтамалар   мұқабалық топ cov;      жабу нүктесі dest {          қоқыс жәшіктері bcast[1] = {48'hFFFFFFFFFFFF};          қоқыс жәшіктері ucast[1] = әдепкі;      }      жабу нүктесі f_типі {          қоқыс жәшіктері ұзындығы[16] = { [0:1535] };          қоқыс жәшіктері терілген[16] = { [1536:32767] };          қоқыс жәшіктері басқа[1] = әдепкі;      }      өлшемсіз: жабу нүктесі пайдалы жүктеме.өлшемі {          қоқыс жәшіктері өлшемі[] = { 46, [47:63], 64, [65:511], [512:1023], [1024:1499], 1500 };      }      sz_x_t: крест f_типі, өлшемсіз;   соңғы топсоңғы сынып

Бұл мысалда тексеру инженері хабар тарату және бір хабарлы рамалардың таралуына, өлшемі / f_type өрісіне және пайдалы жүктеме мөлшеріне қызығушылық танытады. Тиімді жүктеме мөлшерінің диапазоны минималды және максималды рамаларды қоса, қызықты бұрыштық жағдайларды көрсетеді.

Синхрондау

Күрделі сынақ ортасы бір-бірімен байланыс орнатуы керек қайта пайдалануға болатын тексеру компоненттерінен тұрады. Verilog's 'іс-шара «қарабайыр процедуралық тұжырымдардың әртүрлі блоктарының бірін-бірі іске қосуына мүмкіндік берді, бірақ орындалатын жіп үндестіру бағдарламашының (ақылды) қолдануына байланысты болды. SystemVerilog екеуін ұсынады примитивтер аралық синхрондау үшін арнайы: пошта жәшігі және семафора. Пошта жәшігі ФИФО хабарлама кезегі. Таңдау бойынша, ФИФО болуы мүмкін типтелген сондай-ақ тек көрсетілген типтегі нысандар ол арқылы өтуі мүмкін. Әдетте, объектілер болып табылады сынып даналары ұсынушы транзакциялар: тексеру компоненттері орындайтын қарапайым операциялар (мысалы, кадр жіберу). Семафора а ретінде модельденеді семафорды санау.

Классикалық Verilog-тің жалпы жетілдірулері

Жоғарыдағы жаңа мүмкіндіктерден басқа, SystemVerilog Verilog-дің қолданыстағы тілдік мүмкіндіктерінің ыңғайлылығын арттырады. Төменде осы жақсартулардың кейбіреулері келтірілген:

Сонымен қатар, SystemVerilog ыңғайлы мүмкіндік береді шет тілдеріне интерфейс (C / C ++ сияқты), бойынша SystemVerilog DPI (Бағдарламалаудың тікелей интерфейсі).

Верификация және синтез бағдарламалық қамтамасыздандыру

Жобаны тексеру рөлінде SystemVerilog чиптерді жобалау саласында кеңінен қолданылады. Үш ірі EDA жеткізушілері (Cadence жобалау жүйелері, Тәлімгер графикасы, Синопсия ) SystemVerilog-ді өздерінің аралас тіліне қосқан HDL тренажерлері. Ешқандай тренажер әлі де бүкіл SystemVerilog-қа қолдау көрсете алмаса да LRM[ретінде анықталған кезде? ], тестбанк жасау өзара әрекеттесу проблема, сатушылар арасындағы үйлесімділікті дамыту бойынша жұмыстар жүргізілуде.[қашан? ] 2008 жылы Cadence және Mentor ашық тестілеу әдістемесін шығарды, ол ашық тестілеу стенділері мен консервіленген верификация-IP-ді әзірлеуді жеңілдету үшін ашық көзі бар класс-кітапхана және пайдалану негіздері. SystemVerilog класс-кітапханасын (VMM) бірінші болып жариялаған синопсис кейіннен өзінің жеке меншік VMM-ін көпшілікке ашумен жауап берді. Көптеген үшінші тарап провайдерлері SystemVerilog растау IP-ін жариялады немесе шығарды.

Ішінде дизайн синтезі рөл (аппараттық-дизайн сипаттамасын қақпаға айналдыру-желі тізімі ), SystemVerilog қабылдау баяу болды. Көптеген дизайнерлік топтар әртүрлі сатушылардан бірнеше құралдарды қамтитын дизайн ағындарын пайдаланады. Көптеген дизайнерлік топтар барлық алдыңғы құралдар жиынтығына дейін SystemVerilog RTL-дизайнына өте алмайды (линтерлер, ресми тексеру және автоматтандырылған сынақ құрылымы генераторлары ) жалпы тілдік жиынға қолдау көрсету.[жаңарту керек пе? ]

Сондай-ақ қараңыз

Пайдаланылған әдебиеттер

  • 1800-2005 - IEEE System Verilog стандарты - жабдықтың бірыңғай дизайны, сипаттамасы және растау тілі. 2005. дои:10.1109 / IEEESTD.2005.97972. ISBN  978-0-7381-4810-6.
  • 1800-2009 - SystemVerilog үшін IEEE стандарты - жабдықтың бірыңғай дизайны, сипаттамасы және растау тілі. 2009. дои:10.1109 / IEEESTD.2009.5354441. ISBN  978-0-7381-6130-3.
  • 1800-2012 - SystemVerilog үшін IEEE стандарты - жабдықтың бірыңғай дизайны, сипаттамасы және растау тілі. 2013. дои:10.1109 / IEEESTD.2013.6469140. ISBN  978-0-7381-8110-3.
  • 1800-2017 - SystemVerilog үшін IEEE стандарты - жабдықтың бірыңғай дизайны, сипаттамасы және растау тілі. 2017. дои:10.1109 / IEEESTD.2018.8299595. ISBN  978-1-5044-4509-2.
  • МакГрат, Дилан (2005-11-09). «IEEE SystemVerilog бағдарламасын, Verilog нұсқасын мақұлдады». EE Times. Алынған 2007-01-31.
  • Пунет Кумар (2005-11-09). «System Verilog оқулығы».
  • Гопи Кришна (2005-11-09). «SystemVerilog, SVA, SV DPI оқулықтары».
  • HDVL. «Қосымша SystemVerilog веб-сілтемелері».
  • Найза, Крис, «Тексеру үшін SystemVerilog» Спрингер, Нью-Йорк, Нью-Йорк. ISBN  0-387-76529-8
  • Стюарт Сазерленд, Саймон Дэвидманн, Питер Флейк, «SystemVerilog for Design Second Edition: жабдықты жобалау және модельдеу үшін SystemVerilog пайдалану жөніндегі нұсқаулық» Спрингер, Нью-Йорк, Нью-Йорк. ISBN  0-387-33399-1
  • Бен Коэн, Сринивасан Венкатараманан, Эджета Кумари және Лиза Пайпер [1] SystemVerilog Assertions анықтамалығы, 4-ші басылым, 2016- http://SystemVerilog.us
  • Бен Коэн Сринивасан Венкатараманан және Эджета Кумари [2] VMM асырап алуға арналған прагматикалық тәсіл, - http://SystemVerilog.us
  • Эрик Селигман және Том Шуберт [3] Ресми тексеру: қазіргі заманғы VLSI дизайны үшін маңызды инструмент, 24.07.2015

Сыртқы сілтемелер

IEEE стандартты анықтамасы

Соңғы SystemVerilog стандартты құжаттары IEEExplore-ден ақысыз қол жетімді.

Оқулықтар
Стандарттарды әзірлеу
Тіл кеңейтімдері
  • Verilog АВТО - Verilog кодын жүргізуді жеңілдетуге арналған мета-түсініктеме жүйесі
Интернеттегі құралдар
  • EDA ойын алаңы - Веб-шолғыштан SystemVerilog іске қосыңыз (IDE ақысыз онлайн)
  • SVeN - SystemVerilog BNF навигаторы (ағымдағы IEEE 1800-2012)
Басқа құралдар
  • SVUnit - SystemVerilog-та код жазушыларға арналған блоктың тестілік жүйесі. SystemVerilog модульдерін, сыныптарын және интерфейстерін оқшаулап тексеріңіз.
  • sv2v - SystemVerilog-тен Verilog-қа ашық көзді түрлендіргіш