June 2nd, 2009

with Cat The Cat

Это что-то!

Одна моя подруга говаривала: "Какой ты умный! Это что-то."

Теперь я сам про себя говорю, какой я умный. Иногда. ;)

Собственно, в выходные изучал Bluespec Verilog. Штука отличная, надо сказать. Очень удобная, судя по доступной информации.

Пока изучал, возникла гордость за самого себя. В Bluespec Verilog есть алгебраические типы данных, полиморфные притом, сравнение с образцом, полиморфные функции (но функции не являются сущностями первого порядка), а также он рассчитан на работу в большом дизайне с одной тактовой частотой. Сделать дизайн с несколькими тактовыми частотами или даже дизайн с разными фронтами срабатывания триггеров достаточно нетривиально. Есть даже совет переходить на более низкоуровневое описание.

Собственно, когда я думал о языке описания аппаратуры, у меня были ровно такие же исходные предпосылки и язык получался очень похожим.

За небольшим исключением. Точнее, за большим исключением.

В BV есть так называемые правила и методы.

Методы - это, своего рода, входы-выходы кусочка аппаратуры, только они активные.

Может быть метод, который только что-то принимает и ничего не возвращает. Это прямой аналог входа у обычного модуля Верилога. Может быть метод без параметров, который что-то возвращает. А если ничего не возвращает, то оперирует с внутренним состоянием - как бы провод, за который дергают.

Могут быть методы, которые и принимают значения, и возвращают их. Этому уже прямого аналога в обычном Верилоге нет. Да и в VHDL тоже.

Внутри модуля существуют правила. Выглядят они, как набор условий: "если был вызван такой-то метод и выполняются такие-то условия на его параметры и состояние, то вычислять то-то, вызывая такие-то методы таких-то модулей внутри и проводя такие-то операции над результатами."

Правила срабатывают с приоритетом. Если есть два правила, которые могут сработать на одном такте, то выполняется первое. BV сам создаёт всю необходимую для этого аппаратуру.

И, на всякий случай: http://csg.csail.mit.edu/pubs/memos/Bluespec/chipdesign.pdf

Один и тот же продукт переписали на BV. По всем техническим критериям вышли на один и тот же уровень (частота и количество вентилей), однако в случае BV количество кода сократилось до 4,7 KLOC супротив 65,5 KLOC на Верилоге.

(и как я понимаю, кое-что даже получилось меньшим по размеру)

Вчера вечером я думал, а сегодня окончательно пришёл к выводу, что просто сравнения с образцом (с условной защитой - conditional and pattern guards) и алгебраических типов должно быть достаточно для реализации функционала, похожего на правила и методы BV.

Вот.

Пожалуй, ещё один короткий пост и можно отходить ко сну. ;)

PS
Одна из первых версий BV называлась Atom. Её можно посмотреть вот тут: http://funhdl.org/

Это DSEL, встроенный угадайте, куда. ;)

Дизайнер BV - Lennart Augstsson.
with Cat The Cat

Ещё, кратенько.

http://www.juliansanchez.com/2009/04/06/climate-change-and-argumentative-fallacies/

Про аргументацию в стиле криптографически стойких хэш-функций, и про либерализм, как религию (то есть, про то, как либералы отрицают научные методы, когда они противоречат их вере).

http://www.juliansanchez.com/2009/06/01/perils-of-pop-philosophy/

"No doubt if you look back to the earliest days of this blog, you’ll find me ranging across a much broader array of topics with much more confidence."

Прямо про меня.

Надо возобновить мои размышления в стиле "я в этом ничего не понимаю, поэтому могу рассуждать свободно..." ;)

Очень интересный автор.