23 июн. 2011 г.

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


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

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

5 комментариев:

  1. [троллинг]бакалавр - не научная степень, а академическая [/троллинг]

    ОтветитьУдалить
  2. А в целом, очень интересно. Интересно, используется ли это где-то практически? Знаю, что в Интеле похожим сейчас занимаются. Ну и более глобальная проблема, как мне кажется - нужен высокоуровневый язык, который будет транслироваться в аппаратную и программную части, но это достаточно сложная проблема, и необходимо много времени на ее реализацию и отладку. Все таки Vericlo использует аппаратные примитивы.

    ОтветитьУдалить
  3. Насчет практического использования - наш проект пока-что лишь в стадии глубокой разработки, о других не знаю.
    О проекте Интела слышал, когда был у них на собеседовании - говорят, они его закрыли =(

    ОтветитьУдалить
  4. Не знал, что интел закрыл этот проект. Стоит задуматься, может действительно это требует еще больше ресурсов чем кажется, и ручная раздельная разработка будет эффективна еще долгое время. Академический интерес такие разработки безусловно представляют.

    ОтветитьУдалить
  5. Добрый день!

    Расскажите, получил ли проект дальнейшее развитие? Где можно ознакомиться с исходными кодами vericlo?

    ОтветитьУдалить