いまさら聞けない SystemC入門:半導体設計技術解説(1/3 ページ)
注目を集め、常識化しつつあるCベース設計。その中で一歩抜きん出た「SystemC」の概要から最新動向までをあらためて解説する
「SystemC」は、その名が示すとおりシステム設計を行うための言語で、C++のクラスライブラリとして提供されています。SystemCを使用することにより、システムLSIの上流設計が可能となります。また、SystemCの設計環境は無償で構築できるため、ユーザー数は一気に拡大しています。2005年12月にはIEEE 1666として標準化されるなど、SystemCはCベース設計の分野において確固たる地位を築いたといえるでしょう。
本稿でSystemCについて知っていただき、まだSystemCを知らない皆さんに少しでも興味を持っていただければ幸いです。
関連リンク: | |
---|---|
⇒ | SystemC |
SystemC前史からSystemCの登場まで
SystemCについて説明する前に、まず回路設計の進化を見てみましょう。
もともと回路設計は、回路図をCADツールなどで作成する「回路図入力」によって行われていました。しかし回路図入力は入力そのものに時間がかかるため、大規模な開発には向いていませんでした。
HDLによるRTL設計
そこで、ソフトウェアのようにプログラム言語によって開発を行うハードウェア記述言語(HDL:Hardware Description Language)が誕生しました。HDLは、テキストであるため入力や回路の変更も簡単です。そして内容を理解するのが比較的容易です。さらに、「論理合成」により回路に変換できるようになったことで、HDLは一気に普及しました。代表的なHDLとして、「Verilog」「VHDL」があります。VerilogやVHDLは、「RTL(Register Transfer Level)」と呼ばれる論理回路を言語で記述し、論理合成を行うことにより回路を生成します。
VerilogやVHDLなどのHDLは、回路の実装に不可欠です。将来的にSystemCからの「動作合成」による自動化が当たり前に行われるようになったとしても、確認&検証の際にHDLが必要になるので、これらがなくなることは決してないでしょう。つまり、Verilog/VHDLとSystemCは抽象度(レベル)が違うため、今後も共存していくと思われます。また、何より現在においてはVerilog/VHDLで設計しているユーザーが圧倒的に多く、Verilog/VHDLで設計した資産も多く存在します。過去の資産の流用は当然必要になります。
ESL設計の始まり
では、なぜSystemCなどの言語が必要になるのでしょうか?
システムLSIの開発は、ムーアの法則に従って大規模化の一途をたどっています。さらに、1チップに複数のプロセサ・コアを集積するマルチプロセサ・コアSoC(system on a chip)が開発されるようになってきました。そこで、抽象度を高めて上流設計を行う「ESL(electronic system level)」が注目されています。ESLは、VerilogやVHDLなどによるRTL設計よりも抽象度が高く、そのため記述量が少なくて済みます。当然ながら、設計効率も上がります。
ESL言語(SystemC、SystemVerilog、SpecC)
ESL言語としては、SystemCや「SpecC」、「SystemVerilog」などがあります。ここではこの3種類の言語の特徴を簡単に比較してみましょう。
前述したように、SystemCはC++のクラスライブラリであり、当然のことながらC++がベースとなっています。主に上流アーキテクチャ設計部分が拡張されています。またIEEE 1666として標準化されたこともあり、Cベース設計の中では確固たる地位を獲得しています。
SystemVerilogは、RTL設計で実績のあるVerilogをベースとした言語です。ランダム検証、カバレッジ、アサーションなど、特に検証にかかわる部分が拡張されています。また、SystemCと同じくIEEE 1800として標準化されています。Verilogと互換性があるので、既存のVerilogユーザーには魅力的です。
SpecCはC言語がベースになっており、文法的には非常に分かりやすい言語です。ソフト/ハードウェア協調検証に着目して考えられた言語ですが、標準化までには至らなかったというのが現状です。
言語 | SystemC | SystemVerilog | SpecC | |
---|---|---|---|---|
ベース | C++ | Verilog | C | |
特徴 | 上流アーキテクチャ設計部分を拡張 | 主に検証部分を拡張 | ソフト/ハード強調設計 | |
標準化 | IEEE 1666 | IEEE 1800 | ||
表 ESL言語の特徴 |
このように、3種類の言語はそれぞれ個別の優位性を持っています。それでは、なぜSystemCなのでしょうか?
考えられる理由の1つは、OSCI(Open SystemC Initiative)よりリファレンスシミュレータが無償で提供されていることでしょう。旧バージョン(SystemC 2.0.1)が対象ではありますが、環境構築方法を解説した以下のPDF(編注)を参考に、皆さんもぜひ試してみてください。
関連リンク: | |
---|---|
⇒ | SystemCシミュレータを使ってみよう |
誰でも無償で環境を構築できる点は魅力的であり、SystemCのユーザーは増え続けています。ユーザーが増えると、さらに開発効率を上げるためにツールベンダ各社が機能アップしたツールを提供してきました。そしていまなお言語仕様、環境ともに進化し続けているという状況にあります。
Copyright © ITmedia, Inc. All Rights Reserved.