人が主役です

12/05/00

 その昔、ソフトウェアの開発はほとんど人手で行っていた。フローチャートと変数表を用いハンドアセンブルしたバイトコードをエディット機能が貧弱なモニターから入力していたのだ。

とんでもなく手間がかかるが結構楽しかった。
 コンパイラ型言語が一般に出回るようになってもコンパイラが出力したバイトコードを人間がチェックしてソースコードにフィードバックするような時代が暫く続く、コンパイラの最適化機能など誰も信じていなかったのである。
コンパイラの気持ちになってソースを書かんかい!!
等という無茶な怒号が日常的に飛んでたんである。

 「回路の最適化なんて人間の仕事ではないでしょう」と先日客先で言われた。確かにそういう考え方もある、「HDLは人間に解かり易く書き、回路の生成はコンパイラの仕事」と言う観点にたてばもっともな意見であるし不必要に複雑に書く必要はない、だが

HDLのコンパイラは想像以上にお馬鹿
な事も悲しい事に現実だったりする、困ったもんだ。

 さて、「美しいソースコード」さえ書けば「スペック出なくてもいい」なんて仕事は*まず*あり得ないのでHDLをいじくってコンパイラにガンガン介入する事になる。たとえ回路規模と動作速度が満足できても「パッケージの許容パワーにはいらへんやんけ!」というのは実はよくあることなのだ。


頑張るコンパイラ

 普段仕事ではSynopsys社のDesign Comilerを使用している、こいつはASICの世界では事実上「標準」ということで有名(そのせいか知らんがえらく高価である事も有名)で大概のASICベンダーはDesign Compilerのライブラリーを出している。

 基本的にはコンパイラーにライブラリとHDLのソースを喰わせて、規模と動作速度を指示してやれば後は機械が頑張ってくれる事になっている、一応どのくらい頑張ってくれるのか指示することもできて「適当でいいよ」「本気でやってね」「死ぬまで頑張れ」の3種類選べるのだがスペックが満たせないからといって迂闊に「死ぬまで頑張れ」等と指示しようものなら

本気で死ぬまで頑張ってしまい
EWSの管理者から怒られたりする
ので注意が必要だ。


頑張れ人間

 さて、いつまでもLOGを見てボーゼンとしているわけにもいかんので対策を打つのだが、ここでいきなりコンパイラに指示を与えるスクリプトのパラメーターを変更してマージンを削ってなんてのはやめよう。仮配線と実配線の差はプロセスが進むごとに開く一方だ、迂闊にマージンを削ることはレイアウターの皆さんに迷惑がかかる。 レイアウターの方々とは良好な関係を保っておこう、くれぐれも「仮配やったら、スペック満たしてるやんけワレー!」なんて発言は謹むべきだろう。

ここ一番の最後の手段を使うときの為
恩は売っとくに限る
のだ。

 最初はコンパイラーから出力された回路を検証しよう、タイミング違反が起きているようならSTAを使ったり、規模の問題であるならばマクロごとの回路規模をチェックしたりしてボトルネック箇所を洗いだすのだ。弱点が解っていれば敵をおそれる必要はない、急所を狙ってクリティカルヒットを繰り出そう。

人間だったら顎の下だな。



もどる