ハードウェア設計の仕様書
仕様書は,設計の段階により,方式設計から機能設計までのものが求められている.
以下,まず一般的な ハードウェアの設計/製作の手順 について述べた後,各仕様書の内容 についてまとめる.
ハードウェアの設計/製作は一般に,以下のような段階を追って進められる:
- 1. 方式設計 (System Design)
- 設計するシステムに対する要求仕様を定め,それを実現するための技術的裏付けを求める.
- 2. 機能設計 (Function Design)
方式設計によって定められたシステムを機能コンポーネントに分割し,各コンポーネントの構造 (structure) と動作 (behavior) を定める.
そのためには,各コンポーネント内に存在する主要なレジスタとそれらの間のデータ・パスを設計することでその構造を規定し,それらのレジスタ間のデータ転送 (Data Transfer) を設計することでその動作を規定することになる.
したがって機能設計は,RTL (Register Transfer Level) 設計とも呼ばれる.
最近では,ハードウェア記述言語 (HDL) を用いて行われることが多い.
- 3. 論理設計 (Logic Design)
- 機能設計で定められた各コンポーネントを,論理ゲートの組み合わせによって実現する.
最近では,多くの部分が HDL 記述からの論理合成 (Logic Synthesis) によって自動的に行われる.
- 4. 機能シミュレーション (Function Simulation)
- 後述する配置配線の結果得られる実際の遅延を考慮せずにシミュレーションを行い,論理設計の機能的な正しさを検証する.
なお HDL を用いた設計では,論理設計以前に機能シミュレーションを実行することができる.
- 5. 配置配線 (Place & Route)
- 論理設計の結果得られた論理回路を実際に製作されるデバイスに写像する.
論理ゲートとゲート間の配線の物理的位置を定める.
- 6. タイミング・シミュレーション (Timing Simulation)
- 配置配線後の実遅延データを考慮したシミュレーションにより,設計の検証を行う.
- 7. テスト用のハードウェアの製作
- 実際にハードウェアを製作する.
- 8. ハードウェア・テスト (Hardware Test)
- ハードウェアが実際に正しく動作することを確かめる.
- 9. 量産
各段階において設計に実現不可能な点が見つかった場合には,当然のことながら,適切な段階まで戻る必要がある.
この際の前の段階への申し送り事項をバック・アノテーション (Back Annotateion) と呼ぶ.
ハードウェアの設計/製作プロセスは,本実験では以下のようになる.
上述した一般的なプロセスと異なる部分を
赤字 で示す:
- 1. 方式設計 (System Design)
- 設計するシステムに対する要求仕様を定め,それを実現するための技術的裏付けを求める.
-
本実験では,WhatとHowを明確に区別するため,アーキテクチャ検討と方式設計の報告書を別に作成する.
- 2. 機能設計 (Function Design)
- 方式設計によって定められたシステムを機能コンポーネントに分割し,各機能コンポーネントの動作を定める.
- 3. 論理設計 (Logic Design)
-
論理 CADを用いて論理回路を設計する.
本実験では,HDLによる設計とし,一部でスケマティック・エディタを使用してもよい.
- 4. 機能シミュレーション (Function Simulation)
- 配置配線(後述)の結果得られる実際の遅延を考慮せずにシミュレーションを行い,論理設計の機能的な正しさを検証する.
- 5. 配置配線 (Place & Route)
-
設計データに基づいて,論理ゲートを FPGA の論理ブロックへの割り当てて,その間の配線を行う.
この操作は,CAD のインプリメンテーション・ツールによって自動的に行うことができる.もちろん,人手で行うこともできる (大規模な組合せ最適化問題なので現実的ではない).
- 6. タイミング・シミュレーション (Timing Simulation)
- 配置配線後の実遅延データを考慮したシミュレーションにより,設計の検証を行う.
- 7. テスト用ハードウェアの製作
-
コンフィギュレーション・データをPowerMedusaボードにダウンロードすることによって行われる.
- 8. ハードウェア・テスト (Hardware Test)
- ハードウェアが実際に正しく動作することを確かめる.
- 9. 量産
- 量産はしない.
実際の設計では,各段階においてそのレベルの仕様書を記述することが普通である.
本実験では,中間レポート において,
方式設計と機能設計レベルの仕様書を提出する.
各レベルの仕様書は,それがあれば,誰がその先の設計を行っても完成したハードウェアのその設計段階で規定される特徴が一致するように記述されている必要がある.
本実験で提出する方式設計と機能設計レベルの仕様書には,以下の事柄などが必要であろう.
- 方式設計
方式設計では,設計する計算機に対する要求仕様を定め,それを実現するための技術的裏付けを求める.
方式設計レベルの仕様書は,それさえあれば誰がその先の設計を行っても,システムの機能,性能が同一となるように記述されている必要がある.
したがって本実験の場合には,完成した計算機があるプログラムを実行した場合に,その実行サイクル数が一致することが求められよう.
本実験では,WhatとHowを明確に区別するため,主に要求仕様を定めたアーキテクチャ検討報告書,および,主に方式設計を定めた方式設計仕様書の2種類を作成する.
具体的には,提出する仕様書には,設計する計算機に関する以下の項目が含まれる:
- アーキテクチャ検討報告書
- 要求仕様,設計目標,設計方針,特長.
- 設計方針と特徴を実現するための高速化/並列処理の方式.
- 性能/コストの予測.その実現可能性,妥当性.
- 方式設計仕様書
- 高速化/並列処理の方式の概要.
- 命令セット・アーキテクチャ
(SIMPLE アーキテクチャ からの変更点).
- 構造 (structure) と動作 (behavior).
それらを説明するための以下の図表:
なお,SIMPLE 設計資料 など配布資料に書いてあるようなことを再掲する必要はない.
ブロック図などはSIMPLE/B からの変更点のみを示せばよい.
必要であれば,参考文献として挙げ,適宜引用すること.
SIMPLE 設計資料における SIMPLE/B の記述は,方式設計レベルの仕様書である.
- 機能設計
機能設計では,方式設計によって定められたシステムを実現するため,全体をいくつかの機能コンポーネントに分割し,各コンポーネントの構造 (structure) と動作 (behavior) を定める.
計算機の場合には,以下のようなコンポーネントに分割するのが適当であろう.
- 制御回路
- PC 周辺
- レジスタ・ファイル周辺
- 演算器 (ALU,シフタ)
- バス・インターフェイス
フェーズごとに分割するのは,同一の『もの』が異なる複数のフェーズで動作することになるため,うまく行かない.
機能設計レベルの仕様書は,それがあれば,誰がその先の設計,すなわち論理設計を行っても,そのコンポーネントの動作周波数とチップ面積に大きな差が出ないように記述されていなければならない.
具体的には,およそ以下の項目が含まれる:
- 外部仕様
- 特徴
- 方式設計,他のコンポーネントとの関わり:
コンポーネントの,計算機全体における位置付け,役割.
外部とのインターフェイス,外部から見た動作.
- 構造:計算機全体のブロック図における,そのコンポーネントの位置づけ.
- 動作:計算機全体のフェーズ・フロー・チャートやデータ・フロー・チャートにおける,そのコンポーネントの位置づけ.
他のコンポーネントの担当者は,このコンポーネントの外部仕様だけを参照すればよい.
- 内部仕様
- 実装上の特徴
- コンポーネントの内部構造と動作:
- 構造:コンポーネントのブロック図 (論理回路図ではない),またはアルゴリズム (プログラムではない).
- 動作:コンポーネントのフェーズ・フロー・チャート,データ・フロー・チャート,タイミング・チャート.
- 論理設計にあたって特に留意すべき点.例えば,critical path の指摘など.