米University of California, IrvineがC言語を拡張して開発した,システム仕様記述言語「SpecC(specification description language based on C)」。それを「組み込み機器のハードウエア・ソフトウエア仕様を一括して記述するための言語」として普及させようと,「SpecC・テクノロジー・オープン・コンソーシアム(STOC)」が1999年11月に旗揚げした(EDA Online関連記事1)。

 当初は,「仕掛け人」の東芝以外に目立った参画企業がなかったが,じわじわと勢力を広げている。今年3月末には,トヨタ自動車やアルパイン,ヤマハなどの大手システム・メーカ,米Cadence Design Systems, Inc.や米Mentor Graphics Corp.など大手EDAベンダの参画を,STOCは発表した(EDA Online関連記事2)。

 STOCの旗揚げは,米Synopsys, Inc.を中核にした「Open SystemC Initiative (OSCI)」の設立発表(EDA Online関連記事3)の後を追うように行なわれた。また,上述のSTOCの新メンバ発表と同じ日に,OSCIは,OSCIがシステムLSI設計向けに策定するC++クラス・ライブラリ「SystemC」の新バージョンを発表した(EDA Online関連記事4)。

 こうした経緯をたどったせいか,STOCとOSCI(あるいはSpecCとSystemC)の関係に自然と注目が集まる。両者のねらいや役割は競合するのか,補完するのか,あるいは関係がないのか・・・。今回,STOCで実務の中心人物である,東芝の石井忠俊氏(コーポレート事業開発センター 戦略IPプロジェクト担当 主務)に,STOCのねらいやSpecCの役割について聞いた。(聞き手は小島郁太郎)


 --SystemCとSpecCは競合するのか,補完するのか。

石井氏 STOCの立ち上げ以来,いろいろな方面の方と会った。複数のEDAベンダともミーティングを行なった。それを通して感じたのは,SystemCはLSI(ハードウエア)の設計を第1優先順位にしていることと,EDAツールの利用が重要な前提条件になっていることだ。一方,STOCは,「システムや機器の仕様」を,きっちりと記述することが目的である。

 --「システムや機器の仕様」といっても幅広い。もう少し具体的に説明してほしい。

石井氏 STOCでは,まず,組み込み機器を対象にする。組み込み機器は,大雑把にいえば,メカニカルな部分,ソフトウエア,エレクトロニクスのハードウエアからなる。このうち,STOCは,もっとも複雑なソフトウエアを最初のターゲットにした。SystemCがLSI(ハードウエア)からシステムに来た人を対象にしているのに対して,SpecCはソフトウエアからシステムに来た人が対象ともいえる。また,大切なのはツールではなく,設計手法であることも強調したい。SpecCは,ソフトウエアの仕様をきっちりと定義し,インプリメンテーション・フェーズにつなげるための言語および設計方法である。

 --そうするとSpecCは,ソフトウエア開発の効率化の手法といえるのか。

石井氏 そうだ。ただし,効用はそれだけではない。仕様をきっちりと定義することで,インプリメンテーション(開発)作業に対して入札を行ない,開発コストを抑える効果が期待できる。これまでは,あいまいな仕様からスタートしたために,「いつもの」開発部隊に任せることが増えてしまった。

 --ソフトウエアの仕様を定義するというと,10年以上前に話題を呼んだCASE(computer aided software engineering)を思い出す。CASEツールもたくさん発売されたが,どれもパッとしなかった。SpecCが同じ道をたどる恐れはないのか。

石井氏 確かにCASEツールは不調だった。その大きな原因は,仕様を定義するための上流CASEツールと,インプリメンテーションを扱う下流CASEツールがつながっていなかったからだ。

 --上流CASEツールと下流CASEツールとはそれぞれ何か。

石井氏 上流CASEツールは,昔でいえば,SA(structured analysis)やSD(structured design),今ならばUML(unified modeling language)を扱うもの。一方,下流CASEツールは,マイコン開発環境でIDE(integrated design environment)と呼ばれているものだ。残念ながら,これらは連携していない。上流CASEツールでソフトウエアの要求仕様をぴっちりと定義しても,下流CASEツールがそれを入力として受け付けない。この結果,IDEのユーザは,上流CASEツールで定義した仕様とほとんど関係なく,作業をしているのが現状である。実は,この上流CASEツールと下流CASEツールの間を埋めることが,STOCのねらいだ。(下図参照

 --間を埋めるとはどういうことか。

石井氏 上流CASEツールでは,ソフトウエアでやりたいこと,すなわち機能を定義している。一方,下流CASEツールが扱うのは,それを具体的な構造をもったプログラムにする作業である。SpecCは,機能を構造に変換する工程を扱う。機能を構造に変換する方法は,いくつもある。構造によって,たとえば,性能(処理時間)やコード量といったものが違ってくる。たとえば,同じ機能をサブルーチン化すれば,全体のコード量は減少する場合が多い。また,ソーティングという機能は,記述のしやすさでは「バブル・ソート」だが,処理時間を考えれば「クイック・ソート」に軍配が上がる。

 --上流CASEツールと下流CASEの間を埋めるとなると,将来,SpecCは,設計者には見えなくなるのか。

石井氏 その可能性はある。ただし,現在は設計者が直接記述し,設計手法を固めるフェーズだ。将来,手法として確立すれば,ツールに埋め込まれることになるだろう。

 --SpecCやSTOCはハードウエアを扱わないのか。

石井氏 SpecCの手法は,インプリメンテーションにはよらない。下流CASEツールと共に,インプリメンテーション・ツールとして,EDAの世界の動作合成ツールを考えることが可能である。そうなると,SpecCが扱っているのは,EDAでいうところの,ハードウエア-ソフトウエア協調設計と同じものになる。また,SpecCをFA(factory automation)に適用したいという話も複数でている。

 --先日,米Co-Design Automation Corp.が論理シミュレーションで,SpecCに対応する予定だと発表した(EDA Online関連記事5)。このほかのEDAツールで,SpecCをサポートするものはないのか。

石井氏 STOCは個々のEDAベンダの動きについてはコメントできない。6月に開かれるDAC(Design Automation Conference:ホームページ)では,2~3社がスイートでSpecCに関係した何か見せるかもしれないが・・・。

 --東芝社内では,SpecCは実設計に使われているのか。

石井氏 研究部門としては,成功に終わった。現在,ある事業部と開発現場で使えるように真剣に検討しているところだ。

 --もう少し具体的に話せないか。

石井氏 真剣なだけに,これで勘弁して欲しい。

右側に言語のサポート範囲を示してある。SpecCで上流CASEと下流CASE/動作合成の間が埋まると,ラピッド・プロトタイピングを含めて,仕様からLSI設計データとプログラム・コードまで,組み込み機器開発のおおよそ全工程がカバーする環境が整うと期待される。(図:STOC)
右側に言語のサポート範囲を示してある。SpecCで上流CASEと下流CASE/動作合成の間が埋まると,ラピッド・プロトタイピングを含めて,仕様からLSI設計データとプログラム・コードまで,組み込み機器開発のおおよそ全工程がカバーする環境が整うと期待される。(図:STOC)
[画像のクリックで拡大表示]