Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Немудров қазақша (106-бетке дейін).docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
3 Мб
Скачать
☆

7 Тарау SystemC негізіндегі верификация және SoC жобалауы

Кіріспе

Бұл тарауда біз SystemC негізіндегі SoC жобалауын және верификация (анықтау) процесін нақты жоба мысалы ретінде қарастырамыз. Біздің жағдайда жобалаудың және верификацияның (анықтаудың) негізі - транзакция деңгейінде жобаның функционалды виртуалды прототипін құру. Cadence бірлестігі шығарған верификацияның біріктірілген әдістемесі функционалды виртуалды прототипті(FVP) тесттік платформаға сәйкес келетін және барлық құрылғылардың(DUV – Device Under Vertification) идеалды функционалды көрсетілімі ретінде анықтайды. Толық FVP-ны құру SystemC негізіндегі SoC жобалауы және верификация (анықтау) процесінің міндеті болап табылады.

7.1 Сурет. Arm негізіндегі жоба архитектурасының мысалы

Біз мысал ретінде қарастыратын жоба кіріктірме (встроенный) ARM920процессорынан, жоғары өнімді АМВА шинасынан және сыртқы (периферийный)АМВА шинасынан тұрады. Ол келесі бөлімде нақты сипатталған.

Біздің жобамыздың базалық архитектурасы 7.1-суретте бейнеленген. Ол көп деңгейлі жоғары өнімді AMBA (AHB) шинасының көмегімен байланысқан және сыртқы (периферийный) AMBA (APB) шинасымен көпір арқылы байланысқан процессор ядросынан (core) ARM 920T, жадыдан және сұйық-кристалдық монитордан (LCD) тұрады. APB шинасына таймерлер, әмбебап сыртқы (периферийный) құрылғылары (GPIO), нақты уақыт сағаты және үзілістер контроллері қосылған.

Кіріктірме ARM процессорында орындалатын бағдарламалық қолданба ретінде LCD мониторына шаршы суретін салатын, сондай-ақ экранға «Hello» сөзін шығаратын өте қарапайым С бағдарламасы қолданылады. Оның орындалуы осы тарауда функционалды виртуалды прототип үлгісінде түсіндірілген.

Функционалды Виртуалды Прототип үлгісінің құрылуы

Жобаны жоғары деңгейде анықтау үрдісі – архитектураның, негізгі құраушылардың, чиптегі коммуникация архитектураларының тапсырмасы. Ол функционалды виртуалды прототип үлгісінің табиғатын анықтайды. Бұл жағдайда жоғары деңгейдегі жобалау және SystemC негізіндегі верификация (анықтау) бірін-бірі толықтырады және қатар (параллельно) орындалуы мүмкін.Берілген нәрсені анықтау (верификация) қажет; ал анықталған (верификация) нәрсені зерттеу және архитектурасының сәйкестігін тексеру қажет. Себебі, функционалдығы және өнімділігі бойынша өнімнің талаптарға сәйкес екендігіне көз жеткізу қажет. Біз бұл үрдістен екі жақтылықты көреміз. Жобалау кеңістігін зерттеу және функционалды верификация (анықтау) жобалау және верификацияның (анықтаудың) бір үрдісінің екі жағы болып табылады.

Әрине, жобалау және верификация (анықтау) жобалау үрдісінің детализация (талдап тексеру, тәптіштеу) деңгейінде бір-бірінен өзгешелене бастайды. Жобалау құраушыларды және коммуникация архитектурасын жүзеге асырушы деңгейіне дейін(мысалы, талдауға жарамды RTL кодына дейін)талдап тексеретін (детализирующий) итерационды үрдіс болып табылады. Функционалды верификация үлгісін (FVP –functional verification model) мұндай деңгейге дейін талдап тексеру міндетті емес. Мысалы, физикалық немесе талдауға жарамды RTL деңгейінде алдын-ала жүзеге асырылған кіріктірме микропроцессордың ядросы жағдайында FVP шегінде ядроның қолданылатын жоғары деңгейлі функционалды үлгісін конфигурациялау қажет болуы мүмкін. Мұндай үлгі ретінде процессордың нұсқаулар жинағын (instruction set simulation model - ISS) симуляциялайтын үлгі болуы мүмкін.

7.2-суретте біздің мысал ретінде алып отырған жобамыздың Функционалды Виртуалды Прототипі келтірілген.

7.2-сурет. ARM негізіндегі мысалымыздың Функционалды Виртуалды Прототипі

Виртуалды Прототип жобадағы негізгі құраушылардың SystemC үлгілерінің комбинациясы негізінде құрылған. Негізгі құраушылары: көп деңгейлі АНВ шиналары, жады құраушылары, шина көпірлері және LCD контроллері. Сондай-ақ процессордың функционалдығы ARM920Т ISS үлгісімен симуляцияланады (ARM920Т Instruction Set Simulator Model (ISS)). Мұндай ISS үлгісінің басқалармен салыстырғанда көптеген артықшылықтары бар. Мысалы, SystemC формасында қол жеткізуге болатын процессордың төменгі деңгейлі үлгісімен салыстыратын болсақ (RTL-деңгейіндегі):

  • ол тікелей және түрлендірусіз ARM кодының құрастырылған немесе жинақталған ағындарын орындайды;

  • ол басқаларға қарағанда жылдам. Процессорлардың ISS үлгісі RTL-деңгейіндегі үлгілерден 100-ден 10000 есеге дейін жылдамырақ. Себебі, олардан аппараттық бөлімдегі жұмыстың анық кескіні емес, тек функционалды дұрыстылық (корректность) қажет.

  • ол ретке келтіретін бағдарламалармен тікелей байланысқан. Олар кейін берілген процессорға арналған бағдарламаларды өңдеуде қолданылады.

  • ол SystemC-да жазылған жүйенің қалған бөліктерімен өзара әрекеттесе алады.

ISS үлгісін «транзакция деңгейіндегі» процессордың үлгісі ретінде қарастыруға болады. Онда жеке нұсқаулықтың дұрыс орындалуы негізгі транзакция болып табылады. ISS үлгісінің бірнеше түрі бар, олар уақыт нақтылығы бойынша және симуляция жылдамдығы бойынша ажыратылады. Біздің ARM мысалымызда тактіге дейін дәлдігі бар Cycle-Callable үлгісі қолданылады. Бірақ ARM Open SystemC бірлестігіндегі басқа компаниялармен бірге абстракцияның әр түрлі деңгейінде (мысалы, Programmer’s View – бағдарлама жасаушының деңгейінде және Programmer’s View with Timing – уақыт кідірістері бар бағдарлама жасаушы деңгейінде) стандартты «транзакция деңгейіндегі үлгілердің» (Transaction-Level Models – TLM үлгілердің) тапсырмаларымен жұмыс жасайды. [2]

Біздің мысалда ISS-ті барлық жүйемен байланыстыратын интерфейсті код ARM API негізінде құрылған. FVP мысалында орындалатын SW коды сонымен қатар соңғы нақты құрылғыда да немесе нақты құрылғыны көрсететін платадада (board support package - BSP) орындалуы мүмкін. Сөйтіп, FVP бағдарлама жасаушыларға нақты құрылғы шыққанға дейін бағдарламаларды құруға және мінетуге (отлаживать) мүмкіндік береді. Бұл, әсіресе, аппараттық-тәуелді SW (Hardware-dependent SW-HdS) кодын ретке келтіруде маңызды рөл атқарады. HdS кодын ретке келтіргеннен кейін талдап тексерілген (детализированный) процессор үлгілерінің (тактіге дейінгі дәлдігі бар) және толық жүйенің негізінде уақыттық кідірістерді жөндеуді бастауға болады.

FVP-ны қолданудың үлгілері

Төменде SystemC негізінде құрылған функционалды виртуалды жобалық прототиптерді қолданудың бірнеше үлгілері көрсетілген:

Кіріктірме бағдарламаларды құру

SystemC үлгілерімен байланысқан СPU (ISS) нұсқамасының жинақталған үлгілерінің және FVP прототипінің көмегімен бағдарлама жасаушылар бағдарламаларды секундына 10000 такт жылдамдықпен мінете алады (отлаживать). Сонымен қатар олар қосымша тесттік толтырудың (покрытие) талдауын (анализ) өткізе алады. Егер бағдарлама жасаушылар сәйкес келетін өңдеудің құралдарының және FVP үлгісінің көмегімен, араласқан SystemC/Verilog немесе VHDLсимуляцияларын өткізсе (SystemC, HDL, араласқан SystemC-HDL-да симуляцияны көтере алатын Cadence компаниясындағы Incisive верификациясының платформасы сияқты), онда олар аппараттық бөлімде (HW) орнатылған ассерттерді (Assertions) пайдалана алады.

Функционалды верификация (анықтау)

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

Аппараттық Бөлімді құру

FVP прототипі орындалатын спецификация болып табылады. Бұл жобалық және жүйелік бағдарламаларды біріктіреді.

Жүйелік архитектураның күйге келтірілуі (настройка)

Жүйелік команда жобаның талдауы (анализ) жүйелік деңгейде орындалуы үшін FVP прототипін пайдалануы мүмкін. Мұндай талдауларға шина жүктемесін, қажетті орындау мүмкіншілігін (пропускная способность), кэш өлшемін, жады иерархиясын, процессорлар санын, арбитраж алгоритмдерінің талдауын, т.б. зерттеу жатады.

SW қолданбасының кодын құру

7.3-сурет ARM 920T процессорында орнатылған қолданбалы ПО-ның кодын өңдеуді көрсетеді. SW қолданбасын құру үрдісінің соңғы нәтижесі – құрастырылған SW қолданбалар FVP прототипінде орындалуы мүмкін, себебі прототипке нұсқама жинағын симуляциялайтын (ARM ISS) және жүйенің қалған бөліктерімен әрекеттесетін үлгі кіреді. Симуляция басында қолданбалы ПО SystemC-дағы жады үлгісінің негізінде жасалған FVP прототипінің жадында жүктеледі. Жады үлгісі SystemC интерфейсі арқылы ISS нұсқамасындағы ARM-нің барлық сұраныстарына қызмет көрсетеді.

7.3-сурет. ARM-ға негізделген қолданба коды және құрастырмасы

FVP иерархиясы

7.4-суретінде FVP прототипін HDL-верификаторының жеке ортасының көмегімен көруге болатындығы көрсетілген; берілген әдістеме үлгі құрылымының HDL сипаттамасының барлық түрін қолдайды. Cadence Incisive сынды верификацияның дамыған құралдары SystemC, VHDL және Verilog верификацияларында жазылған жобаның барлық бөлімдерін толық қарауды мынадай жағдайда қолдайды: көбірек таралып жатқан SystemC және HDLs-пен бірге араласқан жобалау (бірнеше тілде). Ол SystemC верификациясын қолдана отырып, «жоғарыдан төмен» («top-down») жобалауын «төменнен жоғарыға қарай» (ІР-ді немесе ескі HDL блоктарын қайталап қолданумен) жобалауымен және RTL деңгейіндегі не SystemC не HDLs қолданылуы мүмкін «ортасынан» («middle-out») жобалауымен біріктіруге мүмкіндік береді.

7.4-сурет. Үлгінің иерархиясын қарау

Жобаны жүйелік деңгейде зерттеу

7.5-суретте жобаны шапшаң TLM симуляциясының көмегімен зерттеу үшін FVP прототипінің оған қосылған ІР үлгілерімен,сондай-ақ талдау және бейнелеу құралдарымен бірге қолданылуы сипатталған. Сол жақ терезеде жадының оқу/жазу үрдісі, ал оң жақ терезеде жадының ішіндегісі көрсетілген. Жадының жұмысын жүйелік қолданбаның өнімділік талдауымен бірге зерттеу жүйенің теңгерімінің жақсаруы үшін (яғни, ең ыңғайлы жадыны таңдау үшін) ІР құраушыларды таңдауда қолданылуы мүмкін. Сонымен қатар, ол жүйенің функционалды дұрыстылығын тексеру үшін және өнімділікті зерттеу үшін қолданылуы мүмкін. Интерфейсті құраушылардың транзакционды үлгілерін қолдану және SystemC-дағы симуляция дәстүрлі RTL тәсілдерімен және сигнал/бит/қорытынды деңгейіндегі интерфейс үлгілерімен салыстырғанда жылдам симуляциялауды қамтамасыз етеді.

7.5-сурет. Транзакция деңгейіндегі жады симуляциясы

Әрине, жүйелік деңгейдегі функционалды дұрыстылықты көзге көрінетін бұрмалануларды көрсете алатын, әсіресе мультимедиалық қолданбалар жағдайында, сонымен қатар жүйенің шығу мәліметтерінің графикалық көрсетілімдері негізінде тексеруге болады. 7.6-суретте шынайы дәл LCD мониторы сияқты SystemC негізінде транзакционды үлгінің симуляция нәтижесін көрсететін LCD мониторы бейнеленген.

7.6-сурет. FVP симуляциясына сәйкес өзгеретін LCD мониторы.

Қазіргі MPEG2, JPEG, JPEG2000, MP3, MPEG4 сияқты мультимедиа алгоритмдерін құру және ретке келтіру жылдам симуляциялардың мүмкіндіктеріне және алгоритмдермен шақырылған бұрмалануларды көзбен шолып анықтауға және бұл бұрмалануларды түзетуге мүмкіндік беретін нақтылы уақытта нәтижелердің көрсетілуіне тәуелді. FVP прототипі шығатын видео-мәліметтердің кескінін жақсы жылдамдықпен немесе кадрлар генерациясының айтарлықтай шапшаң жылдамдығын қамтамасыз ететін жылдам симуляцияны қамтамасыз етеді. Бұл RTL деңгейіндегі симуляцияға қарағанда айтарлықтай жылдам.HDL-да жазылған, мысалы, процессордың функционалды үлгісінің модельденуі үшін қолданылатын RTL деңгейіндегі үлгі TLM (транзакционды үлгілер) үлгісін қолданатын, SystemC-дағы FVP прототипі бірнеше кадрларды генерациялаған уақытта тек бірнеше пикселдерді генерациялай алады. Сөйтіп, FVP прототипі жүйелік жобалаудың мүмкіндіктерін айтарлықтай күшейтеді және архитектуралық кеңістікті, құраушыларды таңдауды, сондай-ақ алгоритм бөлшектерін зерттеуге мүмкіндік береді.

7.7-сурет. Транзакция талдауының көмегімен симуляцияны бақылау

Транзакция көмегімен FVP талдауы

Әрине, жобалау және верификацияның (анықтаудың) FVP прототипі көмегімен жүйелік деңгейге қарағанда төменірек деңгейде талданатын басқа да мәселелері бар. Мысалы, такті деңгейіндегі егжей-тегжейлі (детальный) талдау шиналарды немесе басқа да құралдарды қолданып, блоктар арасындағы транзакцияларды бақылау үшін транзакционды интерфейсті қолдана алады. Cadence компаниясындағы Incisive верификациясының (анықтаудың) ортасы өңдеушілерге транзакция деңгейіндегі симуляцияны бақылауға мүмкіндік береді:

Бұл мысалда транзакциялар жоғарғы оң жақ терезеде, ал жеке транзакциялардың бөлшектері жоғарғы оң жақ терезеде көрсетілген. Төменгі терезеде жиналған транзакциялардың барлық жинағы талданады және нәтиже master/slave шиналарын қолдану терминдерінде көрсетіледі.

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

Қорытынды

Бұл тарауда SystemC-ны қолдану бойынша және жобалау кезіндегі транзакционды үлгілердің және күрделі жүйелердің верификациясының негізгі идеялары сипатталған. Мысал ретінде шинадан және ARM процессорынан тұратын, SoC жобасының үлгісі алынды. Бұл идеялар «жоғарыдан төмен» (top-down) жобалауының үрдісінде және верификацияда маңызды болып саналатын Функционалды Виртуалды Прототип (FVP) ұғымының көмегімен, жобаның екі жақты кескінін құру үшін қолданылды. Мұндай тәсіл тиімді дәлдікті сақтай отырып, симуляциялау жылдамдығының маңызды жақсаруларға жетуіне мүмкіндік береді. Ал құрылған FVP прототипін кейін бағдарлама жасаушылар, жүйелік жобалаушылар, верификация бойынша инженерлер және дәстүрлі HW өңдеушілері қолдана алады. FVP прототипі бұрынғы блоктардың нақты HDL үлгілерімен байланысқан болуы және симуляцияның заманауи құралдарының көмегімен HW блоктардың егжей-тегжейлі (детальный) верификациясы үшін қолданылуы мүмкін. Бұл блокарды бөлек тестілеуге және барлық жүйе шегінде олардың тестілеуін жеңілдетеді.

Симуляцияның дамыған құралдары, берілген жобалаудың әдістемесі және верификациялар төмендегілерді қолдайды:

  • SystemC, Verilog, VHDL және келешекте SystemVerilog-ты қоса отырып, бірнеше тілде қатар қолданылатын симуляцияны (mixed language simulation)

  • Талдау ортасын конфигурациялау және қолданушы құрған терезелер мен құралдардың көмегімен ретке келтіру (отладки) мүмкіндігін;

  • SystemC (SystemC Verification library) верификационды кітапханасының және ассерттерді қосуды;

  • Сигналдың уақыттық диаграммасының кескінінің және транзакцияны зерттеудегі мүмкіндіктердің көмегімен симуляция талдауына арналған ортаны;

  • Кіріктірме бағдарламаларды құру – SystemC негізіндегі HW үлгілерге және тұғырнамалық үлгілерге (мысалы, процессордың нұсқау жинағының үлгісі (ISS)) қол жеткізуге мүмкіндік беретін, бағдарлама жасаушыларға бағдарламаны орындауға мүмкіндік беру.

Біз былай қорытындылай аламыз:

  • Транзакционды үлгілер негізіндегі функционалды виртуалды прототиптер кіріктірме бағдарламалық қамсыздандыруды құру және верификация (анықтау) үшін қолданылуы мүмкін.

  • Бұл транзакция деңгейінде талдаудың заманауи құралдарының дамуын қажет етеді. Бұл құралдардың дамуы транзакционды үлгілерді (және RTL) құру, ретке келтіру (отладки) және талдау мүмкіндіктерін қамтамасыз етеді.

  • Араласқан абстракция деңгейлері және араласқан тілдері бар (moxed abstraction level/mixed language) жобалардың қолдауы өте маңызды.

  • Қолданушылардың әр алуан түрлерін және әр түрлі үлгілерді қолдау мүмкіндігі өзекті болып табылады.

  • RTL өңдеушілері SystemC-ға негізделген жүйелік деңгейдегі TLM (транзакционды) үлгілерін қайтадан қолдана алады.