[an error occurred while processing this directive]
|
С++ шаблоны - это пример средства, с использованием которого _очень легко_ написать программу, в которой никто не сможет разобраться, даже автор. Вы читали исходники ATL или stlport, скажем? Мне в них приходилось закапываться довольно глубоко.
"Синтезатор SystemC обязан понимать полную спецификацию языка" - а что такое эта самая пресловутаю "полная спецификация языка"? С++? Тогда - это утопия. Не случайно синтезаторы VHDL понимают только очень узкое подмножество VHDL. Так как синтез железа - это не исполнение программы, а трансляция её в совершенно другую вычислительную модель. Будь Вы разработчиком синтезатора - Вам вряд-ли удастся оттранслировать в железо, скажем operator new. Да и указатели вообще. И не забывайте про проблему остановки.
И Вы уверены, что синтезаторы SystemC работают именно на уровне препроцессированного кода? Я ничего подобного не помню - когда знакомился с SystemC в документации опоминались только макросы. В конце концов, разработчики синтезатора никому ничего не обязаны. Гораздо проще свой препроцессор написать, выделяющий декларации SystemC, чем отслеживать наследование.
Действительно, синтезируемые подмножества VHDL и Verilog появились именно как подмножества языков для моделирования железа. Но заметьте, пожалуйста, что с самого начала эти языки были рассчитаны именно на моделирование железа. Т. е. на моделирование большого количества мелких параллельных процессов. С С++ ситуация совершенно другая. В С++ _нет вообще_ параллельных процессов.
Думаю, любое описание железа будет двухуровневым. На верхнем уровне нужно описать структуру системы с параллельными интерфейсами между компонентами. На нижнем уровне приходится описывать с использованием иерархических, т. е. последовательных конструкций изменение состояния компонента при изменении входных сигналов. Что дает для этого описания использование именно С++?
По поводу отсутствия инкапсуляции в Верилоге - так может быть, вам попробовать VHDL? Правда, я плохо представляю, чем инкапсуляция в случае железа отличается от разбиения на компоненты, взаимодействующие через хорошо формализованные интерфейсы - но, по крайней мере, возможность описывать подтипы и структуры в VHDL должно сильно облегчить проектирование таких интерфейсов.
E-mail: info@telesys.ru