次に、実際にUMLでモデリングを行うことで、仕様書へのUML適用の検討を行いました。以下では、各種のUML記述を利用して、実際のハードウェアモデルを検討していきます。
実際にモデリングを行うための題材として、AHBバスシステムを取り上げました。現在、SoC設計では頻繁に利用されるバスであり、グループのメンバーが共通に理解できることから、題材に選びました。(* AMBAはARM Limitedの登録商標です)
図2のようにSoC開発では、AHBバスを中心として各種バスやモジュールを接続した設計がよく行われます。図2では、PCI、USB、APBなどのバスがAHBバスにブリッジを介して接続されています。
まず、バスのユースケースを簡単に書くことから始めました。当然ですが、バスの基本機能はデータを転送することです。それに加えて、バスに接続されるマスタが複数ある場合、各マスタから出されるバス権の要求を調停する機能が必要になります。これらをユースケースで簡単に表現すると以下のようになりました。
図3ではあまりに簡素で仕様が見えないため、仮のマスタ・スレーブの仕様を追加して、図4のように掘り下げました。マスタ・スレーブの仕様が具体的に明示され、図としてよりバス全体を理解しやすい図になりました。このように、ユースケース図を描くことで、視覚的な理解度を高めることができます。
しかし詳細化を進め過ぎて、バス権のアービタやアドレスデコーダなど、本来存在するものを表現するとさらに複雑になるので、どの粒度まで一度にユースケースとして表現するかは注意すべき点です。また、この図によって、すべての仕様を求めることはできないため、ほかのUML記述や非UMLの表現も援用すべきだと思います。
バス権を調停するアービタについては、別のユースケースとして記述しました(図5)。
図6は、マスタもシステムと見た場合のユースケースです。マスタの内部動作も見えてくるため、こちらの方がシステムとして具体的になります。
【利点】
【注意すべき点】
ハードウェア設計では図7のような波形を事象ごとに書いて、ハードウェア動作を表現するのが一般的です。このように実際の動作を波形で詳細に表すことは、設計において重要なことなのですが、知識が十分でない第三者がこのような波形ばかりの仕様書を読んで仕様を理解するのは難しいものがあります。また、書く側としては、このような波形をたくさん書くには多くの時間を費やし、書ける数にも限界があります。そのうえ、仕様変更があった場合、このような図を変更するのは手間がかかります。
前節のユースケース図を基に、動作の流れを表現するシーケンス図を作成しました(図8、図9)。シーケンス図はモジュール間のメッセージ(データ)のシーケンシャルな動作を整理することができます。上記の波形と比べると、動作の流れは明快です。
しかし、クロックのサイクルが見えないため、詳細なタイミングまでは分かりません。詳細なタイミングを表現したい場合には、UMLのタイミング図で表現することも1つの手段です(今回はタイミング図の検討をしていません)。また、シーケンス図はパイプライン的なものや同じタイミングのメッセージ(データ)のやりとりを表現するには不向きです。
例えば図9では、ライトデータと応答が同じタイミングで発行されるのですが、シーケンス図のように時系列の流れを表現する図では、このようなタイミングを表現することは困難です。ハードウェア設計の場合、パイプライン的な並列動作の表現は避けられないため、シーケンス図は基本的な動作の理解や分析などの用途に限定されそうです。
【利点】
【注意すべき点】
Copyright © ITmedia, Inc. All Rights Reserved.