Кіріспе

Интегралды схемаларды жобалауда аппараттық құрылғыларды эмуляциялау, басқа аппараттық жабдықпен аппаратты эмуляциялау

Интегралды схемаларды жобалауда аппараттық эмуляция – бір немесе бірнеше аппараттық компоненттің (әдетте жобаланып жатқан жүйенің) мінез-құлқын басқа аппараттық компоненттермен, әдетте арнайы эмуляциялық жүйемен имитациялау процесі. Эмуляция моделі әдетте аппараттық сипаттама тілінде (мысалы, Verilog) жазылған бастапқы кодқа негізделеді, ол эмуляциялық жүйе қолданатын форматқа компиляцияланады. Мақсаты – жобаланып жатқан жүйенің қателерді жою және функционалдық тестілеу. Көбінесе эмулятор жеткілікті жылдамдыққа ие болып, әлі дайын болмаған чиптің орнына жұмыс істеп тұрған мақсатты жүйеге қосылуға мүмкіндік береді, соның арқасында жүйенің барлық бөліктерін нақты деректермен жөндеуге болады. Бұл схема ішіндегі эмуляцияның нақты бір жағдайы. Кейде аппараттық эмуляция бағдарламалық эмуляция функцияларын қолдауға арналған аппараттық процессорлары бар кеңейту карталары сияқты аппараттық құрылғылармен шатастырылуы мүмкін, мысалы, x86 чиптері бар ескі қосымша платалар, олар x86 операциялық жүйелерін әртүрлі процессор отбасының негізгі платаларында іске қосуға мүмкіндік береді.

Кіріспе

Кремний интегралдық схемаларының ең үлкен бөлігі кем дегенде ішінара функционалдық қателер мен жобалау процесінің RTL кезеңінде байқаусызда енгізілген қателерге байланысты. Осылайша, кешенді функционалдық тексеру әзірлеу шығындарын азайту және өнімді уақтылы жеткізу үшін маңызды. Дизайнның функционалдық тексеруі көбінесе логикалық модельдеу және/немесе прототиптеу арқылы өрістегі бағдарламаланатын қақпа массивтерінде (FPGA) жүргізіледі. Олардың әрқайсысының артықшылықтары мен кемшіліктері бар және көбінесе екеуі де қолданылады. Логикалық симуляция оңай, дәл, икемді және арзан. Алайда, симуляция үлкен жобалар үшін жиі жеткіліксіз жылдамдықпен жүреді және қолданбалы бағдарламалық жасақтаманы аппараттық жобаға қарсы орындау үшін әрдайым баяу жүреді. FPGA-ға негізделген прототиптер жылдам және арзан, бірақ бірнеше FPGA-ға үлкен дизайнды енгізу үшін қажетті уақыт өте ұзақ болуы мүмкін және қатеге ұшырайды. Құрылыс кемшіліктерін түзету үшін өзгерістерді енгізуге де көп уақыт кетеді және тақтаның сымдарын өзгертуді талап етуі мүмкін. Дәстүрлі өндіруші құралдармен FPGA прототиптерінің жөндеу мүмкіндігі аз, FPGA ішінде нақты уақытта сигналдарды тексеру өте қиын, ал FPGA-ны қайта құрастыру үшін қозғау тым ұзақ уақыт қажет. Бұл сигналдың көрінуіне шектеулерді алып тастайтын FPGA прототиптерінің жетілдірілген жөндеу құралдарының пайда болуымен өзгеруде. Әдеттегі компромисс - қателер мен түзетулер жиі кездесетін кезде тексеру процесінің басында симуляцияны пайдалану, ал жоба негізінен аяқталған кезде және жүйе деңгейіндегі қалған қателерді ашу үшін жеткілікті сынақ алу үшін жылдамдық қажет болған кезде даму циклының соңында прототиптеу. FPGA прототиптеу бағдарламалық жасақтаманы сынау үшін де танымал. Симуляция жылдамдату симуляцияның өнімділік кемшіліктерін белгілі бір дәрежеде шеше алады. Мұнда жобаны аппараттық жеделдетушіге картаға түсіреді, ол әлдеқайда жылдам жүреді және тест-орын (және кез келген мінез-құлық дизайны коды) жұмыс станциясындағы симуляторда жұмыс істеуін жалғастырады. Жоғары жолақты, төмен күту уақыты бар арна жұмыс орнын акселератормен байланыстырып, сынақ үстелі мен жобалау арасындағы сигнал деректерін алмастырады. Амдалдың заңы бойынша, тізбектегі ең баяу құрылғы қол жетімді жылдамдықты анықтайды. Әдетте бұл симулятордағы сынақ үстелі. Өте тиімді сынақ үстелімен (C-де немесе транзакция негізінде жазылған) арна бөтелкеге айналуы мүмкін. Кейбір жағдайларда транзакция деңгейіндегі сынақ үстелі эмуляцияланатын жобаға "тірі" ынталандыру ретінде көп деректерді бере алады. Схема эмуляциясы FPGA прототиптеудің іске асыру уақытын біршама жақсартады және толық, тиімді жөндеу мүмкіндігін қамтамасыз етеді. Эмуляция мұны FPGA прототиптеріне ($75K) қарағанда жылдамдық пен жоғары құн (1M +) есебінен жасайды. Эмуляцияға басқа бағытта қарағанда, ол симуляцияланған сынақ үстелінің орнына "тірі" ынталандыруды енгізе отырып, үдетудің жұмысын жақсартады. Бұл ынталандыру мақсатты жүйеден (дайындалып жатқан өнім) немесе сынақ жабдықтарынан болуы мүмкін. Эмуляция симуляция жылдамдығынан 10 000 - 100 000 есе жылдамдықпен қолданбалы бағдарламалық жасақтаманы сынауға мүмкіндік береді, сонымен бірге кешенді аппараттық жөндеу ортасын ұсынады.

Эмуляция және екі күйлі логика

Модельдеу, жеделдету және эмуляция арасындағы тағы бір айырмашылық – аппараттық құралдарды пайдалану арқылы жеделдеткіштердің іске асырылуының салдарынан туындайды. Олардың тек екі логикалық күйі бар – дайын кремний тізбегінің қалай жұмыс істейтінін дәл көрсету. Бұл мынаны білдіреді:
Олар X күйінің бастамалануын талдауға жарамсыз. Олар күштілік шешілуін талдай алмайды, немесе кем дегенде мұндай талдау компиляция кезінде статикалық түрде жүргізілуі керек. Эмуляторлар тізбектің нақты уақытын модельдей алмайды, сондықтан олар жарыс жағдайларын немесе орнату және уақытты ұстау талаптарының бұзылуын анықтай алмайды. Бұл міндеттер логикалық модельдеу кезінде немесе статикалық уақытты талдау құралымен дұрыс орындалады.

Эмуляция мен прототиптеу

Эмулятор мен FPGA прототиптеу жүйесінің басты дәстүрлі айырмашылығы – эмулятор толыққанды жөндеу ортасын ұсынады, ал прототиптеу жүйесінде жөндеу мүмкіндігі шектеулі немесе жоққа жақын болады. Ол көбінесе дизайн жөнделгеннен кейін жүйелік талдау және бағдарламалық құралдарды әзірлеу үшін бірнеше дана жасауға қолданылады. Бірақ, FPGA LUT-қа минималды әсер ететін, толық RTL сигналдарын көруге мүмкіндік беретін, терең дерек жинауға және көп чипті, әртүрлі сағат домендерін талдауға арналған жаңа құралдар пайда болуда. Бұл құралдар эмулятормен салыстырылатын тиімді жөндеуді қамтамасыз етеді.