23 июн. 2011 г.

Создание системы автоматической генерации HDL-кода


Сегодня утром я защитил диплом, нет не от захватчиков, а перед ГАКом. Защитил на отлично, теперь у меня научная степень бакалавра!
Тема диплома вынесена в название поста и касается системы "кремниевой компиляции" предложенной товарищем Рюкзаком в своем блоге.
В двух словах об этой системе. Разрабатываемая нашей студенческой научной группой система высокоуровневого синтеза облегчает для разработчика создание новых СнК, обеспечивающих реальное время. Ему (разработчику) достаточно лишь описать желаемое поведение системы на языке высокого уровня и на выходе он получает готовую железку, а точнее ее HDL-описание.
Моя задача во всем этом проекте - сделать систему HDL-синтеза, которая будет генерить описание целевой системы из данных, получаемых с верхних уровней инструментальной цепочки. Это набор неких стандартных и/или написанных пользователем системы функциональных блоков и описание взаимосвязей между ними, называемое описанием инфраструктуры стрелочного вычислителя.
Чтобы упростить разрабатываемую нами инструментальную цепочку, а также облегчить введение новых синтезируемых HDL, я ввел дополнительный уровень трансляции в виде специализированного языка описания аппаратуры Vericlo. Это что-то вроде verilisp'а, только на Clojure, как и вся наша инструментальная цепочка, и не мертвое.
Теперь, сначала описание инфраструктуры стрелочного вычислителя транслируется в Vericlo (планируется для этого описания использовать свой DSL, выполненный в виде еще одного этажа над Vericlo, который сам является надстройкой над Clojure). Ну а затем из Vericlo, все это транслируется в какой-нибудь синтезируемый HDL, на первых порах это будет Verilog.
Кто хочет узнать об этом подробнее:
К сожалению, полностью раскрыть всю информацию по инструментальной цепочке я не могу потому что мне тогда сломают ноги из соображений секретности.

P.S. Забавно, казалось бы только недавно спорил с товарищем udpn'ом на тему актуальности использования всяких ФП во встраиваемых системах и теперь я внезапно сам всем этим занимаюсь О_о. Жизнь иногда выкидывает абсолютно удивительные штуки...