Catapult C Synthesis, коммерческий продукт автоматизации электронного проектирования от Mentor Graphics , представляет собой инструмент синтеза высокого уровня , иногда называемый алгоритмическим синтезом или ESL-синтезом. Catapult C принимает входные данные ANSI C / C++ и SystemC [1] и генерирует код уровня передачи регистров (RTL), предназначенный для ПЛИС и ASIC . [2]
В 2004 году Mentor Graphics официально анонсировала свой продукт для синтеза высокого уровня Catapult C, предлагающий иерархическую поддержку проектирования для синтеза конвейерных многоблочных подсистем из несинхронизированных описаний ANSI C/C++. Основной функциональностью Catapult C была генерация RTL ( VHDL и Verilog ), ориентированных на ASIC и FPGA. Пользователи указывали ограничения по времени и площади, а также предоставляли период тактовой частоты и технологию назначения. Mentor также анонсировала Catapult C Library Builder для разработчиков ASIC для сбора подробных данных о характеристиках. [3]
В 2005 году Mentor анонсировал расширения Catapult C для автоматического создания моделей и оболочек уровня транзакций SystemC для моделирования проекта в средах проверки, поддерживающих SystemC. Mentor также представил синтез интерфейса для сопоставления передачи данных, подразумеваемой передачей аргументов функций C++, с аппаратными интерфейсами, такими как провода, регистры, регистры квитирования, память, шины или более сложные определяемые пользователем интерфейсы. [4]
В 2006 году Mentor анонсировала Catapult SL (System Level) для автоматического создания подсистем обработки сигналов. Catapult SL может координировать разбиение последовательных операций C на несколько блоков внутри подсистемы, включая разбиение на несколько доменов синхронизации. Catapult SL автоматически вставляет соответствующие межблочные каналы и буферы памяти для сборки подсистемы. [5]
В январе 2009 года Mentor объявила об интеграции Catapult C и среды проектирования и моделирования Vista SystemC для автоматического создания моделей уровня транзакций (TLM). В этом процессе несинхронизированный ввод ANSI C++ в Catapult инкапсулируется в оболочку TLM; информация о синхронизации извлекается из результатов синтеза и аннотируется в результирующей модели. Поток совместим со стандартом TLM-2.0 из Open SystemC Initiative (OSCI). [6]
В июне 2009 года Mentor объявила, что она улучшила Catapult C, добавив возможность синтезировать логику управления, создавать оптимизированные по мощности списки соединений RTL, с автоматическим многоуровневым тактовым стробированием и автоматизированным потоком проверки, позволяющим отлаживать RTL по исходному входу C++. [7]
В январе 2010 года Mentor объявила о возможности Catapult C принимать прямые входные данные SystemC, включая поддержку как на основе циклов, так и на уровне транзакций (TLM). [8]
В мае 2011 года Mentor объявил, что Catapult C поддерживает синтез TLM. Абстрактные модели TLM преобразуются в точные по контактам, протоколозависимые модели SystemC, а оттуда синтезируются в код RTL. Существующие синтезируемые описания могут быть преобразованы в TLM. [9]
В августе 2011 года Catapult C была приобретена Calypto Design Systems. [10]
В сентябре 2015 года компания Mentor Graphics приобрела Calypto Design Systems [11] , таким образом повторно приобретя Catapult C.
CatapultC синтезирует ANSI C/C++ без фирменных расширений. Поддержка языка C/C++ включает указатели, классы, шаблоны, специализацию шаблонов и перегрузку операторов, что облегчает методологию повторного использования дизайна по коду RTL. [12]
Catapult C поддерживает как алгоритмический, так и логический синтез управления. [13]
Проектировщики выполняют итерации с CatC, чтобы выбрать предпочтительную микроархитектуру для заданных ограничений производительности и площади. [14] Catapult имеет графический пользовательский интерфейс с визуальным представлением аппаратной схемы, которую он планирует, а также тактовую ссылку между кодом C и кодом Verilog RTL. Catapult C имеет 3 типа моделирования с использованием оригинального тестового стенда C/C++: на основе цикла, на основе RTL и на основе уровня вентиля. [15]
Catapult C поддерживает генерацию модели SystemC, предназначенной для виртуальных платформ, а также тестовую среду SystemC для проверки сгенерированной RTL на основе исходного C++ с использованием исходного тестового стенда C++.
Catapult C поддерживает синтез моделей уровня транзакций (TLM), включая стандартные готовые интерфейсы шин и пользовательские протоколы. [16]