2013年 Bluespec の旅

ハードウェア記述言語の導入法っぽいダイアリーをいくつか書いてきましたが、Bluespec については日本国内では現在サイバネットシステム社がセミナーとかをやっていますので(月 1 回の体験セミナーはタダですが、オンサイトセミナーとかをビジネスにしてらっしゃるようなので)ここではそういったものは書きません。そういったものをお求めの方はサイバネットシステム社のセミナーのほうへどうぞ。
...というわけで、Bluespec の歴史っぽい話をちょっとまとめてみたいと思います。
Bluespec の技術的な方面からの話は、Wadler さんによるサーベイのページ http://homepages.inf.ed.ac.uk/wadler/realworld/bluespec.html がまとまっています(ただしそこに書いてある ESL Synthesis Extensions to SystemC については現在 Bluespec 社からの情報がほとんどないようでよくわからない)。
歴史については、最後の Some historical notes and acknowledgements というところにまとまっていますが、まとまり過ぎていてちょっと詳細がつかめませんので、もうちょっと他に情報をさがしてみます。
歴史的な経過がよくわかるのは、こちらのプレゼン http://www.docstoc.com/docs/32978157/Bluespec-Overview-Presentation-for-Intel の 6 ページで、TRAC、Bluespec Classic、BSV という流れがあって、現在の BSV の前に別の言語があった、ということがよくわかります。
TRAC については、あろはさんによるこちらの記事 http://alohakun.blog7.fc2.com/blog-entry-770.html からリンクのある論文 "Hardware Synthesis from Term Rewriting Systems" に詳細があります。
続いて Bluespec Classic については、酒井さんの LL Spirit の時の日記 http://msakai.jp/d/?date=20070804#p01 の「昼休み」というところからリンクのあるプレゼン資料 "Bluespec -- Designer's Perspective" を見るとよくわかります。HOPL-III での The History of Haskellhttp://www.haskell.org/haskellwiki/History_of_Haskell )でも§12.4.2 をこの Bluespec Classic にあてています。
Bluespec Classic の作者は Lennart Augustsson さんで( http://www.haskellers.com/user/197 http://en.wikipedia.org/wiki/Lennart_Augustsson )BSV には関わっておられないようです。また、前述のプレゼンの表紙の次のページによれば 2001 年の Bluespec Classic の前に 2000 年にバージョン 1 を設計されてます。(2014年5月追記)Augustsson さんは、この前に依存型を使える言語 Cayenne を設計されており、(初期の)Bluespec は依存型を活用したものだったようです(たとえばビット連結のような場合に {5ビット型, 3ビット型} = バイト型 といったことができる、といった利点があるのだと思います)(追記ここまで)。
最後に BSV の話をちょっとしますが、BSV で使う機能に tagged union というタグ付き共用体がありますが、これは BSV の独自の機能ではなく SystemVerilog にあるものです...が、元をたどると Bluespec 社が提案して SystemVerilog に入ったものだったりします( http://www.eda.org/sv-bc/hm/att-1337/01-2003-12-05_TaggedUnions_Proposal.pdf )ので、これは BSV の機能か SystemVerilog の機能か、という区別ははっきりできないものもあるようです。