SPWによる階層的設計とRTL生成
琉球大学・工学部・情報工学科 教授 ファイヤー和田
私を呼ぶ時は、大きい声で「ファイヤー先生!」、「ファイヤー和田先生!」、「和田さん!」と呼んでください!
1)本日の内容
- SPWのHDS(Hardware Design System)を用いて、回路を階層的に設計する。
- 下の階層は実際にLSI化される回路であり、上の階層はその下の階層をテストする回路である。
- 下の階層はRTL LINKという機能で、VHDLやVerilogHDLを自動生成することができ、回路合成を行うことが出来る。
2)BDEによる回路の設計
- nirai上でSPWを起動する
nirai> spw
- File ManagerメニューのBDEボタンを押して、回路図作成のエディターBlock
Diagram Editor (BDE)を起動する
- 結果的に下記のような回路図を作成する
- 今回は回路図の入出力となるポート信号が目新しい
- clearとenは入力ポート、countoutは出力ポートです。
- ここで、加算器で8ビットをオーバーフローした時に、桁あふれを無視(溢れると、0に戻る)するようにするために、
加算器をダブルクリックして、パラメータ設定画面(下図)を出して'wrap'と設定する。
- ビット拡張は1ビット入力をこの場合8ビットに拡張する。
>Blocks>HDS>Bit Manipulation>Bit Fill
- ANDゲートは >Blocks>HDS>Logic>AND
- 加算は >Blocks>HDS>Math>Add
- 定数値は >Blocks>HDS>Math>Constant
- Dフリップフロップは >Blocks>HDS>Logic>D Flip Flop
- 各ブロックの出力ビット幅をすべて8ビット'<8>'にすること
- Add>Port
コマンドで下記のような画面を出して、3つのポートを挿入する。
- clear入力ポートの作成
- ワイヤーで接続し回路図を完成させて、
- digsys/couter8.detail
- という名前で回路図を保存する。
3)BDEによる回路のシンボルの作成
- 上記回路シンボルを他の回路図面で使用するためにシンボルを作成する
- digsys/couter8.detailのウインドウで
Tools>BDE> ToolBox>Auto Create Symbol を実行すると、自動で下記のシンボルが生成される
- Add>BOX コマンドで四角形を追加で書き込み、箱を2重線にする
- 回路合成可能な設計(HDSで設計された回路)を区別するために2重線で示す
- File>Save でシンボルを保存する。digsys/counter8.symbol
という名前になる
- 変更したので、OVERWRITEする。
4)BDEによるテスト用回路(上位回路)作成
- BDEで新しい回路図面を開く
- Add>Block で Select by logical name をクリックして、digsys/couter8.symbolを選択して、
回路図に配置する
- 結果的に以下のように回路を作成する
- en 入力には’1’が入力され
- clear 入力にはRESETブロックにより最初’1’が入力され、その後’0’が入力される
- SIGNAL SINK で全ての波形をファイルに保存する
- RESETブロックは >Blocks>HDS>Simulation I/O>Reset
にある
- 上記図面を digsys/test_cout8.system という名前で保存する
- このようなテスト用回路(テストベンチ)は .system という名前で区別する
- Tools>Simulation Managerよりシミュレーションを実行し、以下のような動作を確認する
SigCalcでのコツ
- S1ボタンを押して波形をすべて選択して、View>Selected
Rangeで全てを表示
- 波形の好きな部分をドラッグして、View>Selected Rangeでその部分を拡大
- S1ボタンを押して、波形をすべて選択して、Edit Propertiesで波形の表示方法を変更
Interporated -> Numericにすると値が表示される等
5)RTLの自動生成
- digsys/couter8.detail のウインドウの Tools>VHDL>RTL を実行する
- 以下のウインドウが開くので、GENERATEボタンを押す
- 以下のようなウインドウが開くので、OKを押すとRTL(VHDL)が生成される
- 正常に生成されたら、Copy VHDLボタンを押し、下図のようにファイルを保存する先を指定してファイルを保存する
- 下記例は和田の場合で各自変えること!!!!
- エディタで作成したVHDLを見てみてください!
- 分かりにくい記述です!
5)自動生成したRTLの回路合成
- 詳細は説明しませんが、Design_Analyzerで回路合成した結果以下のようになりました。
- やってみてください!
以上
講義のページへのリンク