今日は「論理合成」(リンクはWikipedia)を調べています。ここからは書き込む対象デバイスを想定しながらやらないといけないので、FPGA設計ツールが必要です。
ネットで「論理合成」を探すとALTERAのサイトにもヒットしました。
「第5回:FPGAの開発その1(前編)」
「第5回:FPGAの開発その1(後編)Quartus IIを使って開発フローを実践」
です。
FPGAの開発ツールはどのツールを見ても、なかなか複雑で単純な操作は開発イメージが頭に入っていないとできない感じです。なので改めて「論理合成」以降の工程を勉強しています。
#追記(2016/04/22)
「Lattice FPGA 開発環境の見直し」に書いたとおり、Latticeの現行開発環境はDiamondなので、Lattice Diamond(バージョン3.5)で試してみました。この記事にも引用していますが、「とにかく始めるLattice Diamond」で大雑把な流れを確認できます。
この記事の「ピンを決める」の後に「論理合成」の説明図があります。
今回は、Verilog-HDLの作成済みのファイルがあるので、新規作成したプロジェクトに加算回路のVerily-HDLファイル(adder.v)を追加して、右クリックして[Goto RTL Definition] を実行すると画面右側にモジュールのシンボルができました。4bitの加算回路がHDLに従って論理合成されたことになるのだと思います。実際にはこの中身はAND,OR,EX-OR,NOTと言った基本論理回路が組み合わされているはずですが、ここではデバイスに合わせて自動的に合成されるようです。
![adder RTL (Diamond)](https://stat.ameba.jp/user_images/20160423/20/storager-fan/9b/12/p/t02200082_0789029413627323538.png?caw=800)
これだけの回路をFPGAに書き込むのは、FPGAの能力を引き出したことにならないので、書き込むことはしませんが、設計が一歩進んだ感じです。
RTL(レジスタ転送レベル)(linkはWikipedia)は「集積回路設計において同期デジタル回路を記述する手法の一種である。RTL設計では、回路の動作をレジスタ(フリップフロップなど)間の信号の流れ(データ転送)とそれに対する論理演算の組み合わせで構成する。」とありました。
試す回路規模をもう少し大きくして、設計する手法をもう少し調べてみたいと思います。
#追記(2016/04/23)
「Lattice Diamondの日本語マニュアル」を読んでいるのですが、Diamondの用語が多くてなかなかわかりません。
![Diamond Project Property](https://stat.ameba.jp/user_images/20160424/07/storager-fan/28/96/p/t02200102_0444020613627633823.png?caw=800)
ここで[Project]-[Property Pages]を選んで
![Diamond Property Page](https://stat.ameba.jp/user_images/20160424/07/storager-fan/bb/26/p/t02200161_0567041513627633824.png?caw=800)
トップ・レベルのモジュールを選択したり、論理合成ツールを選ぶようです。
左側の[Process]タブを押して、[JEDEC File]にチェックを入れて[Process]メニューの[Run]を押せば、JEDECファイルが出来上がります。「Lattice XP2の書き込み対応」の記事もispLEVERを使っての記事ですが、「JEDECファイルをFPGAに書き込むのですが、標準ではispVMというJTAGコンフィグツールが用意されています。」と書いてありました。
![Diamond JEDEC 設定](https://stat.ameba.jp/user_images/20160424/08/storager-fan/af/d8/p/t02200225_0401041013627657669.png?caw=800)
これでひとまずHDLからFPGAに書き込むデータの作成手順が確認できた感じです。