Кіріспе
Электрондық схеманы жобалауды тексеру кезеңі. Формалды баламалықты тексеру процесі – электрондық дизайнды автоматтандырудың (EDA) бір бөлігі болып табылады және цифрлық интегралды схемаларды әзірлеу барысында қолданылады. Ол схема дизайнының екі түрлі бейнесінің мінез-құлқы толықтай бірдей екенін формалды түрде дәлелдейді.
Formal equivalence checking process is a part of electronic design automation (EDA), commonly used during the development of digital integrated circuits, to formally prove that two representations of a circuit design exhibit exactly the same behavior.
Теңдестікті тексеру және абстракциялау деңгейлері
Жалпы алғанда, функционалдық эквиваленттіліктің кең ауқымды анықтамалары бар, олар абстракцияның әртүрлі деңгейлері мен уақыт егжей-тегжейлілігінің әртүрлі гранулярлығы арасындағы салыстыруларды қамтиды. Ең көп қолданылатын тәсіл – машинаның эквиваленттілігі мәселесін қарастыру, яғни егер синхронды екі дизайн спецификациясы, әрбір сағат импульсінде, кез келген жарамды кіріс сигналдары тізбегі үшін дәл бірдей шығыс сигналдары тізбегін тудырса, олар функционалдық эквивалентті болып саналады. Микропроцессорды жобалаушылар нұсқаулар жиынтығы архитектурасы (ISA) үшін анықталған функцияларды регистрлік ауысу деңгейіндегі (RTL) іске асырумен салыстыру үшін эквиваленттілікті тексеруді пайдаланады, бұл екі модельде де орындалған кез келген бағдарлама негізгі жадтың мазмұнын бірдей жаңартуын қамтамасыз етеді. Бұл көбірек жалпылама мәселе. Жүйелік жобалау процесінде транзакциялық деңгейдегі модельді (TLM), мысалы, SystemC-де жазылғанды, оның сәйкес RTL спецификациясымен салыстыру қажет. Мұндай тексеру чиптегі жүйе (SoC) жобалау ортасында маңыздырақ болып келеді.
Синхронды машинаның баламалылығы
Цифрлық чиптің регистрлік беру деңгейі (RTL) әрекеті әдетте Verilog немесе VHDL сияқты аппараттық сипаттама тілімен сипатталады. Бұл сипаттама – алтын эталондық модель, ол қандай операциялардың қандай сағат циклында және қандай аппараттық бөліктер арқылы орындалатынын егжей-тегжейлі сипаттайды. Логикалық дизайнерлер симуляция және басқа да тексеру әдістері арқылы регистрлік беру сипаттамасын тексергеннен кейін, дизайн әдетте логикалық синтез құралы арқылы желілік тізімге (netlist) айналады. Теңдестікті функционалдық дұрыстығымен шатастыруға болмайды, ол функционалдық тексеру арқылы анықталуы тиіс. Бастапқы желілік тізім әдетте физикалық макетке логикалық элементтерді орналастыру үшін негіз ретінде пайдаланылмас бұрын, оңтайландыру, сынауға арналған дизайн (DFT) құрылымдарын қосу және т.б. сияқты бірқатар өзгерістерге ұшырайды. Қазіргі заманғы физикалық дизайн бағдарламалық жасақтамасы кейде желілік тізімге елеулі өзгерістер енгізеді (мысалы, логикалық элементтерді жоғары немесе төменгі қуаттылығы және/немесе ауданы бар ұқсас элементтермен ауыстыру). Өте күрделі, көп қадамды процедураның әрбір қадамында бастапқы функционалдылық пен бастапқы кодта сипатталған әрекет сақталуы тиіс. Цифрлық чиптің соңғы нұсқасы дайындалған кезде, көптеген әртүрлі EDA бағдарламалары және мүмкін қолмен түзетулер желілік тізімді өзгертеді. Теориялық тұрғыдан алғанда, логикалық синтез құралы бірінші желілік тізімнің RTL бастапқы кодына логикалық жағынан тең екеніне кепілдік береді. Процесс барысында желілік тізімге өзгерістер енгізетін барлық бағдарламалар, теория бойынша, бұл өзгерістердің алдыңғы нұсқаға логикалық жағынан тең екендігін қамтамасыз етеді. Іс жүзінде бағдарламаларда қателер болады және RTL-ден соңғы нұсқаға дейінгі барлық қадамдар қатесіз орындалды деп ойлау үлкен тәуекел. Сондай-ақ, нақты өмірде дизайнерлер үшін жалпы инженерлік өзгерістер бұйрықтары (ЭКО) деп аталатын желілік тізімге қолмен өзгерістер енгізу жиі кездеседі, осылайша үлкен қосымша қателік факторын енгізеді. Сондықтан, қателер жоқ деп ойлаудың орнына, желілік тізімнің соңғы нұсқасының дизайнның бастапқы сипаттамасына (алтын эталондық модель) логикалық баламалығын тексеру үшін тексеру қадамы қажет. Тарихи тұрғыдан алғанда, теңдестікті тексерудің бір жолы – соңғы желілік тізімді пайдалану арқылы RTL-дің дұрыстығын тексеру үшін әзірленген тест жағдайларын қайтадан симуляциялау. Бұл процесс қақпа деңгейінің логикалық симуляциясы деп аталады. Алайда, бұл мәселедегі проблема – тек тексеру сапасы тест жағдайларының сапасы сияқты жақсы. Сондай-ақ, қақпа деңгейіндегі симуляцияларды орындау өте баяу, бұл цифрлық дизайнның көлемі экспоненциалды өсуді жалғастырып жатқанда үлкен проблема. Мұны шешудің баламалы жолы – RTL коды мен одан синтезделген желілік тізімнің барлық (қатысты) жағдайларда дәл бірдей әрекет танытатынын ресми түрде дәлелдеу. Бұл процесс ресми теңдестікті тексеру деп аталады және ол ресми тексерудің кең ауқымында зерттелетін мәселе. Ресми теңдестікті тексеруді дизайнның кез келген екі нұсқасы арасында жүргізуге болады: RTL ↔ желілік тізім, желілік тізім ↔ желілік тізім немесе RTL ↔ RTL, бірақ соңғысы алғашқы екеуіне қарағанда сирек кездеседі. Әдетте, ресми теңдестікті тексеру құралы екі бейнелеудің арасындағы айырмашылықтың қай жерде болатынын өте дәл көрсетеді.
Жалпылау
Қайта орнатылған тізбектердің баламалылығын тексеру: Кейде логиканы тіркегіштің бір жағынан екінші жағына жылдыру пайдалы, бірақ бұл тексеру мәселесін күрделендіреді. Тізбекті баламалылықты тексеру: Кейде екі машина комбинациялық деңгейде толығымен өзгеше болуы мүмкін, бірақ бірдей кіріс берілгенде бірдей шығыстарды беруі керек. Классикалық мысал – күйлердің әртүрлі кодталуымен екі бірдей күй машинасы. Бұл мәселені комбинациялық мәселеге келтіруге болмайтындықтан, көбірек жалпылама әдістер қажет. Бағдарламалық бағдарламалардың баламалылығы, яғни N кіріс және M шығыс алатын екі анықталған бағдарламаның баламалы екендігін тексеру: Теориялық тұрғыдан алғанда, бағдарламаны күй машинасына айналдыруға болады (компиляторлардың жиынтығы осылай жұмыс істейді, себебі компьютер және оның жады өте үлкен күй машинасы құрайды). Теория бойынша, түрлі қасиеттерді тексеру арқылы олардың бірдей шығыс беретінін қамтамасыз етуге болады. Бұл мәселе тізбекті баламалылықты тексеруден де қиын, себебі екі бағдарламаның шығыстары әртүрлі уақытта пайда болуы мүмкін; бірақ мұндай мүмкіндік бар, және зерттеушілер осы мәселені шешуде.