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 кодына қарағанда тез орындалатындықтан, көбірек тесттер орындауға және тесттік толтыруды (покрытие) жақсартуға болады.
