[an error occurred while processing this directive]
Почему это не синтезирует? (+)
(«Телесистемы»: Конференция «Программируемые логические схемы и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено dxp 06 марта 2005 г. 17:46
В ответ на: Только, уверен, без этой препроцессорной "обертки" ни один синтезатор ничего не синтезирует. отправлено Oldring 06 марта 2005 г. 16:00

Синтезатор SystemC обязан понимать полную спецификацию языка. И при обработке входного описания синтезатор должен будет запустить обычный С/С++'ный препроцессор, чтобы тот развернул все макросы. А сам синтезатор, собсно, обрабатывает уже этот развернутый (препроцессированный) текст - точно так же, как и компилятор С++. А пользователь может писать хоть так (с макросами), хоть эдак (без макросов - если ему это больше нравится).

Насчет предпочтений спорить глупо - у каждого свои, убеждать бесполезно, это проверено жизнью. :)

А вот насчет того, "зачем этот дополнительный геморрой, если существуют специализированные языки для синтеза и моделирования железа" можно сказать следующее.

Во-первых, вспомним, что, например, тот же Верилог изначально проектировался не для описания синтеза, а как язык для моделирования параллельных процессов. Это уже позже в нем была выделена синтезируемая часть, появились синтезаторы и он стал HDL'ем. К этому моменту уже в полный рост существовал и использовался VHDL, который был заточен в т.ч. и специально под синтез. И Ваш вопрос можно было задать и тогда в контексте той ситуации - типа, нафига этот Верилог, когда для синтеза уже есть специализированный язык? Однако сегодня имеем то, что имеем. :)

Во-вторых, оба эти специализированные языки имеют недостатки. И серьезные. Например, на Верилоге для реализации какой-то части проекта я должен объявить переменные (объекты-данные) и описать действия в виде always блока. Это по аналогии с С - данные отдельно, функции отдельно. Начиная с какого-то объема все это "вперемежку" начинает конкретно мешать. Т.е. просится та самая пресловутая инкапсуляция. Но ее нет. В то же время, на SystemC я могу эти данные и действия описать объектом типа SC_CTHREAD (SystemC Clocked Thread, если склероз не подводит) - данные - члены-данные класса, действия - внутри этого тактируемого треда. Т.е., грубо говоря, совокупность глобальных данных и параллельно исполняемых блоков заменяется на объект. Из объектов строить систему гораздо удобнее, безопаснее и приятнее.

Далее, здесь еще надо вспомнить про наследование - как способ гибкого и безопасного построения сложных объектов (причем, при аппаратной реализации тут даже не должно быть накладных расходов на вызов конструкторов предков). Еще надо не забыть про шаблоны - как могучий способ для создания параметризованных типов. Я уже не говорю про более удобный (и привычный) синтаксис.

Конечно, есть уверенность, что далеко не вся спецификация SystemC будет синтезируемой - этот язык (хотя он и не язык :) тоже, как и в свое время Верилог, создавался для описания систем и моделирования их поведения. И для синтеза должно быть выделено какое-то подмножество. Поскольку живого синтезатора я не видел, то это только предположение (но под ним, согласитесь, есть все основания). А вот SM может сказать наверняка. :))

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru