2011年5月17日火曜日

ハードウェア記述言語 - 回路設計とプログラミングの狭間

私の本業は、ハードウェア記述言語を使用した回路設計なのですが、慣れるまでが大変だったりします。

コンピュータのプログラム言語のように、ハードウェア記述言語と呼ばれる言語を用いて回路を組んで行きます。

現在主に使われている言語はVHDLとVerilog-HDLですが、Verilog-HDLの方は記述の仕方がC言語とよく似ており、噂によるとC言語のプログラマーにも回路設計ができるというセールストークで処理ツールを売り込んでいたようです。

Verilog-HDL自体は原型が1983年から1984年の冬に作られたそうですが、標準規格として最初にまとめられたのが「IEEE Standard. 1364-1995」です。

一方、VHDLは米国国防総省向けのLSI設計に用いるために「IEEE Standard. 1076-1987」として標準規格としてまとめられました。

いずれの言語も規格がアップデートされていますが、旧版との互換性が保たれています。

ハードウェア記述言語は、特別なCADツールを使わずにテキストエディタで回路設計が出来たり、複雑な組み合わせ論理回路を論理式で記述する事で実装できたり、ステートマシンも容易に作れるという利点があります。

また、ハードウェア記述言語はそれぞれの言語に対応したシミュレータを用いて、容易にシミュレーションを行うことが出来ますので、LSIのように莫大な試作コストを必要とする製品の回路設計に最適です。

上述のような利点もありますが、深刻な問題も抱えています。


深刻な問題点とは、ハードウェア設計であるにもかかわらず、設計者自身がソフトウェアの開発をしているような錯覚に陥る。あるいは、周囲の人間がソフトウェア開発だと錯誤してしまうという点です。

特に、ハードウェア記述言語による回路設計を、プログラミング言語によるソフトウェア設計であると意識して設計された回路は正常に動きません。

恥の上塗りではないですが、そのように設計された回路を正常に動かそうとして、色々と小手先の修正を加えてゆくと最終的には手の施しようの無い、いわゆる「スパゲッティコード」と呼ばれる状態になります。それでも一応動いていそうな回路にすることも出来てしまいますので、品質の悪い設計が代々受け継がれてゆくという、上記で挙げたハードウェア記述言語の利点を打ち消して余りあるほどの「負の設計資産」を作り出すリスクもあります。


そのような点を考慮しますと、ハードウェア記述言語を用いた設計の担当者に求められる資質は、まず第一に電子回路、特に論理回路設計ができること、第二にはプログラミング言語を扱える事があるといえます。

電子回路設計の技術が必要である事は、ハードウェア設計者として当然必要な技術ですが、プログラミング言語を扱える事とは何でしょうか?

簡単に言いますと、シミュレーションのための入力データを生成するプログラムが作れる技能と、シミュレーションそのものを効率的に行うためのハードウェア記述言語を用いたソフトウェア的なプログラミングの技能という事になります。

一見、ソフトウェア開発のように見えるハードウェア記述言語による回路設計ですが、それはあくまでも見かけだけの話で、実際にはハードウェアを作っているという意識を持つことが大切だといえます。

0 件のコメント:

コメントを投稿

フォロワー