Кіріспе
C++ кіріктірілген жүйелерді модельдеуге арналған кеңейтулер
Ұлыбританияның денсаулық сақтау компаниясы. SystemC – оқиғаларға негізделген модельдеу интерфейсін ұсынатын C++ сыныптары мен макростар жиынтығы (қараңыз: дискретті оқиғалар модельдеуі). Бұл мүмкіндіктер дизайнерге бір мезгілде орындалатын процестерді модельдеуге мүмкіндік береді, олардың әрқайсысы қарапайым C++ синтаксисімен сипатталады. SystemC процестері C++ ұсынатын барлық дерек типтерін, SystemC кітапханасы ұсынатын қосымша типтерді, сондай-ақ пайдаланушы анықтаған сигналдарды қолдана отырып, модельдеу ортасында нақты уақыт бойынша байланыса алады. SystemC белгілі бір жағынан VHDL және Verilog аппараттық сипаттама тілдерін имитациялайды, бірақ оны жүйелік деңгейдегі модельдеу тілі деп санаған дұрыс. SystemC жүйелік деңгейдегі модельдеу, архитектуралық зерттеулер, өнімділік модельдеу, бағдарламалық құралдарды әзірлеу, функционалдық тексеру және жоғары деңгейдегі синтез үшін қолданылады. SystemC көбінесе электрондық жүйе деңгейіндегі (ESL) жобалаумен және транзакциялық деңгейдегі модельдеумен (TLM) байланысты.
SystemC is a set of C++ classes and macros which provide an event driven simulation interface (see also discrete event simulation). These facilities enable a designer to simulate concurrent processes, each described using plain C++ syntax. SystemC processes can communicate in a simulated real time environment, using signals of all the datatypes offered by C++, some additional ones offered by the SystemC library, as well as user defined. In certain respects, SystemC deliberately mimics the hardware description languages VHDL and Verilog, but is more aptly described as a system level modeling language. SystemC is applied to system level modeling, architectural exploration, performance modeling, software development, functional verification, and high level synthesis. SystemC is often associated with electronic system level (ESL) design, and with transaction level modeling (TLM).
Тілдің ерекшеліктері
SystemC Open SystemC Initiative (OSCI – қазір Accellera) ұйымымен анықталған және насихатталады, сондай-ақ IEEE Standards Association ұйымы IEEE 1666 2011 стандарты ретінде бекітті – SystemC Language Reference Manual (LRM). LRM SystemC тілінің семантикасын нақты түсіндіреді. OSCI сонымен қатар ашық кодты, тұжырымдамалық симуляторды (кейде бұрыс түсініктің салдарынан эталондық симулятор деп аталады) ұсынады, оны OSCI веб-сайтынан жүктеуге болады. OSCI-дің ниеті коммерциялық жеткізушілер мен академиялық орта IEEE 1666 стандартына сәйкес келетін жаңа бағдарламалық құралдарды жасауы болғанмен, шындығында көптеген SystemC жүзеге асырулары OSCI-дің тұжырымдамалық симуляторының негізінде, кем дегенде жартылай, құрылған.
HDL-мен салыстырғанда
SystemC VHDL және Verilog-пен семантикалық жақындықтарға ие, бірақ аппараттық сипаттама тілі ретінде қолданылғанда, олардан синтаксистік тұрғыдан ауыррақ болуы мүмкін. Екінші жағынан, ол объектіге бағытталған жобалауды бөлу және шаблондық кластар сияқты, кеңірек мүмкіндіктерді ұсынады. Қатаң түрде C++ кластық кітапханасы болғамен, SystemC кейде жеке тіл ретінде қарастырылады. Бастапқы кодты SystemC кітапханасымен (ішінде симуляциялық ядросы бар) компиляциялау арқылы орындалатын файл алуға болады. OSCI ашық кодының іске асырылуы, тіркелімдік деңгейде симуляциялау үшін қолданылғанда, әдетте коммерциялық VHDL/Verilog симуляторларынан нашар жұмыс істейді.
Нұсқалар
SystemC 1-ші нұсқасы аппараттық сипаттама тілінің негізгі мүмкіндіктерін қамтыды, мысалы, құрылымдық иерархия және байланыс, сағаттық циклдің дәлдігі, дельта циклдары, төрт мәнді логика (0, 1, X, Z) және шинаны шешу функциялары. SystemC 2-ші нұсқасынан бастап байланыс абстракциясы, транзакциялық деңгейде модельдеу және виртуалды платформа модельдеуге назар аударылды. Сонымен қатар, абстрактілі порттар, динамикалық процестер және уақыт бойынша оқиғалар туралы хабарламалар қосылды.
Модульдер
SystemC-де модуль деп аталатын контейнерлік сынып бар. Бұл өзге модульдерді немесе процестерді ішінде қамтитын иерархиялық бірлік. Модульдер – SystemC жобалау иерархиясының негізгі құрылыс блоктары. SystemC моделі көбінесе порттар арқылы байланыс жасайтын бірнеше модульдерден тұрады. Модульдерді SystemC-нің құрылыс бөлігі ретінде қарастыруға болады.
Порттар
Порттар модуль ішінде сыртқа, әдетте басқа модульдермен, арналар арқылы байланыс жасауға мүмкіндік береді.
Сигналдар
SystemC шешілген және шешілмеген сигналдарды қолдайды. Шешілген сигналдар бірнеше драйверге (шина) ие болуы мүмкін, ал шешілмеген сигналдарда тек бір драйвер болуы керек.
Экспорт
Модульдер басқа модульдерге қосылу үшін порттарға ие. SystemC бір бағытты және екі бағытты порттарды қолдайды. Экспорттар арналарды қамтиды және модульдің ішіндегінен сыртқа (әдетте басқа модульдерге) байланыс жасауға мүмкіндік береді.
Процестер
Процестер функционалдылықты сипаттау үшін қолданылады. Процестер модульдердің ішінде орналасады. SystemC аппараттық және бағдарламалық құралдарды жобалайтын мамандарға үш түрлі процесс абстракциясын ұсынады. Процестер – негізгі есептеу элементтері. Олар параллель түрде жұмыс істейді.
Интерфейстер
Порттар арналармен байланысу үшін интерфейстерді қолданады.
Оқиғалар
Оқиғалар процестер арасында синхрондау жасауға мүмкіндік береді және инициализация кезінде анықталуы тиіс.
SystemC-дегі қуат пен энергияны бағалау
Қуатты және энергияны бағалау SystemC-де симуляциялар арқылы жүзеге асырылуы мүмкін. Powersim – жүйелік деңгейде сипатталған аппараттық құрылғылардың қуаттылығы мен энергия тұтынуын есептеуге бағытталған SystemC кластық кітапханасы. Осы мақсатта C++ операторлары қадағаланады және әрбір SystemC дерек типі үшін әртүрлі энергия модельдерін қолдануға болады. Powersim арқылы жүргізілетін симуляциялар қолданбаның бастапқы кодына ешқандай өзгеріс енгізуді қажет етпейді.