[an error occurred while processing this directive]
Только не нужно про шаблоны - когда я думаю про них в контексте синтеза железа у меня волосы встают дыбом.
(«Телесистемы»: Конференция «Программируемые логические схемы и их применение»)

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

Отправлено Oldring 06 марта 2005 г. 22:07
В ответ на: Почему это не синтезирует? (+) отправлено dxp 06 марта 2005 г. 17:46

С++ шаблоны - это пример средства, с использованием которого _очень легко_ написать программу, в которой никто не сможет разобраться, даже автор. Вы читали исходники ATL или stlport, скажем? Мне в них приходилось закапываться довольно глубоко.

"Синтезатор SystemC обязан понимать полную спецификацию языка" - а что такое эта самая пресловутаю "полная спецификация языка"? С++? Тогда - это утопия. Не случайно синтезаторы VHDL понимают только очень узкое подмножество VHDL. Так как синтез железа - это не исполнение программы, а трансляция её в совершенно другую вычислительную модель. Будь Вы разработчиком синтезатора - Вам вряд-ли удастся оттранслировать в железо, скажем operator new. Да и указатели вообще. И не забывайте про проблему остановки.

И Вы уверены, что синтезаторы SystemC работают именно на уровне препроцессированного кода? Я ничего подобного не помню - когда знакомился с SystemC в документации опоминались только макросы. В конце концов, разработчики синтезатора никому ничего не обязаны. Гораздо проще свой препроцессор написать, выделяющий декларации SystemC, чем отслеживать наследование.

Действительно, синтезируемые подмножества VHDL и Verilog появились именно как подмножества языков для моделирования железа. Но заметьте, пожалуйста, что с самого начала эти языки были рассчитаны именно на моделирование железа. Т. е. на моделирование большого количества мелких параллельных процессов. С С++ ситуация совершенно другая. В С++ _нет вообще_ параллельных процессов.

Думаю, любое описание железа будет двухуровневым. На верхнем уровне нужно описать структуру системы с параллельными интерфейсами между компонентами. На нижнем уровне приходится описывать с использованием иерархических, т. е. последовательных конструкций изменение состояния компонента при изменении входных сигналов. Что дает для этого описания использование именно С++?

По поводу отсутствия инкапсуляции в Верилоге - так может быть, вам попробовать VHDL? Правда, я плохо представляю, чем инкапсуляция в случае железа отличается от разбиения на компоненты, взаимодействующие через хорошо формализованные интерфейсы - но, по крайней мере, возможность описывать подтипы и структуры в VHDL должно сильно облегчить проектирование таких интерфейсов.

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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru