Кіріспе

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

Тарих

SystemVerilog 2002 жылы стартап компания Co Design Automation компаниясының Superlog тілін Accellera-ға тартуымен басталды. Тексеру функционалының басым бөлігі Synopsys ұсынған OpenVera тіліне негізделген. 2005 жылы SystemVerilog IEEE Standard 1800 2005 болып қабылданды. 2009 жылы стандарт IEEE Standard 1800 2009 стандартын құру үшін Verilog (IEEE 1364 2005) базалық стандартымен біріктірілді. SystemVerilog стандарты кейіннен 2012, 2017 және соңғы рет 2023 жылдың желтоқсанында жаңартылды.

Деректердің өмір сүру мерзімі

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

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

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

Қадамдастыру

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

Классикалық Verilog-қа жалпы жақсартулар

Жоғарыда аталған жаңа мүмкіндіктерге қоса SystemVerilog Verilog-тың қолданыстағы тілдік мүмкіндіктерін пайдалану мүмкіндігін арттырады. Бұл жақсартулардың кейбіреулері мыналар: Процедуралық тағайындау операторлары (<=, =) енді массивтерде тікелей жұмыс істей алады. Порт (ішінде, кіріс, шығыс) анықтамалар енді деректердің кең түрлерін қолдау үшін кеңейтілді: struct, enum, real және көп өлшемді типтер қолдайды. For циклінің құрылымы енді for нұсқаулығындағы автоматты түрде өзгермелілерді жариялауға мүмкіндік береді. Айналым ағынын басқару жалғастыру және үзілу нұсқауларымен жақсартылады. SystemVerilog while цикл конструкциясына do/while циклін қосады. Тұрақты айнымалыларды, яғни орындалу кезінде өзгермейтін деп белгіленгендерді const арқылы белгілеуге болады. Енді өзгермелі инициализациялау массивтерде жұмыс істей алады. SystemVerilog-та қосымша және азайту операторлары (x++, ++x, x , x) басқа да құрама тапсырма операторлары сияқты (x += a, x = a, x *= a, x /= a, x %= a, x <<= a, x >>= a, x &= a, x ^= a, x= a) қолдау табады. Алдын ала өңдеуші макроны ауыстыру мүмкіндіктерін жақсартты, атап айтқанда, әріптер қатары ("") ішіндегі алмастыру, сондай-ақ бірнеше макро белгілерін бір сөзге біріктіру. Форк/жою конструкциясы join none және join any арқылы кеңейтілді. ` уақыт шкаласы директивасына енгізілген толықтырулар үлкен симуляция ортасында симуляция уақытын алдын ала болжауға мүмкіндік береді, әр бастапқы файл жергілікті уақыт шкаласын қолданады. Тапсырма порттарын енді ref деп жариялауға болады. Анықтама тапсырманы орындаушыны шақырушының ауқымындағы бастапқы аргументтерге тікелей қол жеткізуге мүмкіндік береді, бұл компьютерлік бағдарламалауда "анықтама арқылы өту" деп аталады. Аргумент мәнінің көшірмесі емес, бастапқы айнымалының өзінде жұмыс істейтіндіктен, тапсырма / функция айнымалыларды (бірақ желілерді емес) шақырушының аясындағы нақты уақытта өзгерте алады. Іш/шығыс порт декларациялары мән бойынша айнымалыларды береді және шақырушы ауқымы айнымалысын жаңартуды тапсырма аяқталғанға дейін кейінге қалдырады. Функцияларды енді null деп жариялауға болады, яғни ол мәнді қайтармайды. Параметрлерді кез келген типпен, соның ішінде пайдаланушы анықтаған typedef-пен де жариялауға болады. Сонымен қатар, SystemVerilog DPI (түз бағдарламалау интерфейсі) арқылы шет тілдеріне (C / C ++ сияқты) ыңғайлы интерфейске мүмкіндік береді.

Тексеру және синтездеу бағдарламалық жасақтамасы

Дизайнды тексеру рөлінде SystemVerilog чип дизайны саласында кеңінен қолданылады. Үш ірі EDA сатушылары (Cadence Design Systems, Mentor Graphics, Synopsys) SystemVerilog-ті аралас тілдегі HDL тренажерлеріне енгізді. Тіпті бірде-бір тренажер толық SystemVerilog Language Reference Manual-ді қолдауға үміттенбесе де, бұл сынақ терезесінің өзара әрекеттесуін қиындыққа айналдырады, бірақ сатушылар арасындағы үйлесімділікті арттыру бойынша жұмыстар жүргізілуде. 2008 жылы Cadence және Mentor қайта қолдануға болатын сынақ үстелдері мен консервіленген тексеру IP-ін әзірлеуді жеңілдету үшін ашық бастапқы кодты сыныптар кітапханасы мен пайдалану шеңберін шығарды. SystemVerilog сыныптар кітапханасын (VMM) алғаш жариялаған Synopsys кейіннен өзінің меншік VMM-ін жалпы жұртшылыққа ашу арқылы жауап берді. Көптеген үшінші тараптар SystemVerilog тексеру IP жариялады немесе жариялады. Жобалау синтезі рөлінде (жабдықтау дизайны сипаттамасын шлюздік желілік тізімге айналдыру) SystemVerilog қабылдау баяу болды. Көптеген дизайн топтары әр түрлі жеткізушілердің бірнеше құралдарын қамтитын дизайн ағындарын қолданады. Көптеген жобалау топтары жалпы тілдің кіші топтарын қолдамайынша, олардың барлық алдыңғы аяғы құралдар жиынтығын (линтерлер, ресми тексеру және автоматтандырылған тесттік құрылым генераторлары) SystemVerilog RTL жобалауына көшіре алмайды.