読者です 読者をやめる 読者になる 読者になる

FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://sites.google.com/site/fpgadevelopindex/

「アジャイルサムライ」買いました。ハードウェア開発がアジャイルになるためには。

Book

以前からずっと気になっていた、「アジャイルサムライ」を買った。

アジャイルサムライ−達人開発者への道−

アジャイルサムライ−達人開発者への道−

それなりに昔の本だけどね!

正直まったくアジャイルについて詳しくない状態で購入したので、これから読んで理解を深めていかなければならない訳だけれども、イメージとしてはコンパクトなチームで何度もイタレーションを繰替えすという感じだろうか。

ソフトウェア業界ではそれなりに普及していると聞いているが、ハードウェア業界ではどうだろう?

以下のことは、ソフトウェアにも同じことが言えるのかもしれないが。

  • 一つのチップを作るのに異常なお金と時間がかかる
  • シミュレーション、テストにもかなりの時間がかかるので、簡単に試行できない
  • とにかくバグを出してはならない(再リリースが出来ないため)
  • 殆どのソフトウェアツールと異なり、ハードウェア開発ツールはライセンスに制限があり、しかもかなり高額。
  • しかも一回の試行がかなり長い。論理合成や物理レイアウトは、イタレーションの単位が簡単に週単位になったりする。

  • ソフトウェア界隈と異なり、とにかくネット上に情報が無い。

    • Xilinxのサイトを一生懸命検索したり、SynopsysのSolvNetを一生懸命検索したり。
    • Qiita とか、 Teratailとかには絶対出てこないんだもん。。。

こんな状態で、どうやって「アジャイル」なんて実現したら良いのだろう?

もう少し細かく砕いて考えてみよう。別にチップを作ることがゴールじゃない。早くソフト開発者にプロトタイプを使ってもらい、悪いところを洗い出すのだって立派なイタレーションだ。

このためには、今自分の開発フローに無駄なところは無いだろうか?論理合成やFPGAの生成に異常に時間がかかるのは致し方無い。じゃあ他に自分の設計フローに改善できる部分は無いかなあ?

あと、チップ設計やFPGA開発において、とにかく時間がかかるのがバックエンドだ。一度レイアウトを始めるとFPGAなら1日単位、ASICレイアウトなら週単位で時間が必要だったりする。 その途中にネットリストの差し替えなんて発生すると、もうバックエンドの人が発狂してしまう。

じゃあ、高位合成はアジャイルの手助けになるのかい?

ASICで一番時間がかかっているのはどこだろう?例えば自分の論理合成結果で、制約ファイルが間違っていたらもう一度再レイアウトになる。 高位合成は、Verilog-HDLで(かろうじて)見えていたゲートネット部分(フリップフロップとか、AND回路とか、リセット配線とか、クロック配線とか)を完全に隠してしまう。 この状態で、バックエンドの要求にどのように答えたら良いのだろう?

そもそも理解できないRTLネット、さらに理解できないゲートネット。 もう、高位合成が普及するためには、ECOという複雑なフローは消滅するしか無い?高位合成が生成したゲートネットを、手で修正するなんて不可能だ。

じゃあ、ツールにやってもらうか。高位合成は、レイアウトを意識した、ゲートネットを制御できる機能が必要だ。 それが無理なら、もうレイアウトの手法とか、そのあたりから全部変えていかないと、アジャイルにはならないんじゃないか?