Design Compiler

Design Compiler（デザインコンパイラ）は、米シノプシス社が開発した論理合成ソフトウェアである。あるいはそれを中核とした、ソフトウェア群の総称である。

概要 
ハードウェア記述言語(HDL)や真理値表で書かれた論理回路定義を論理ゲートレベル回路に変換するための論理合成ツールの一つである。使用できるHDLとしてはVerilog HDL 、VHDLなどのほか
SystemVerilogやSystemCへも対応している。合成された結果は同社標準の論理回路ライブラリのほか
半導体ベンダーが作成したライブラリを使って、ネットリスト（配線情報）化される。

米シノプシス社が開発・販売しており、2010年現在、集積回路、特にASIC製造に用いる論理合成ツールのデファクトスタンダードとなっている。

Design Compiler を用いた論理合成の流れ

ハードウェアの設計 
作成したいハードウェアを設計し、それをVerilog HDL 、VHDLなどのハードウェア記述言語や真理値表を用いて論理を記述する。
ただし記述はレジスタ転送レベルでなければならない。

デザインのリード 
論理合成を行うために、デザインをリードする。
デザインをリードするには、readコマンドを実行する。
Verilogの場合
 >  read -f verilog filename.v

制約条件の選定 
論理合成を行うにあたり、そのハードウェアの仕様が要求する制約条件を指定する。
制約条件には例えば以下のようなものがある。

配線負荷 
設計するハードウェアの配線負荷のことである。
設計するハードウェアによって、シリコン上に配線される配線長が変わってくる。
Design Compilerでは、モジュール同士(設定により異なる)の配線長をどの位に想定するかを設定することができる。
set_wire_load_modeコマンドでは、どのレベル(モジュール単位、チップ単位他)を負荷計算に考慮するのかを設定できる。
set_wire_loade_modeコマンドでは、ベンダーがおのおの提供している値。
そのライブラリを用いたときの負荷の特性が、ライブラリに設定されている。

入力遅延 
LSIや、ASICなどのハードウェアは、単体で動作させることはない。
つまり、基板に実装し、CPUでASICを制御したりする。
そのため、自分が設計したLSIへの入力信号が、水晶振動子が出しているタイミングと同時に来るとは分からない。
そのため、Design Compilerには次のコマンドが用意されている。

 >  set_input_delay x[ライブラリの単位時間] -clock CLK[定義したクロック名] -all_inputs()[全ての入力ピンに適用]

同様に、出力に対しての遅延時間も設定することができる。

コンパイル 
適切な制約条件が決定したら、論理記述をコンパイルする。コンパイルには compile コマンドを用いる。
 > compile 
コンパイル時には選定した制約条件を指定する。

report_timing 
論理変換したデザイン内の遅延パスを表示させるコマンド。単純にreport_timingと入力すると、そのデザイン内の最大遅延パスを表示する。以下に、一例を示す。

クロックスキューのレポートの取り方

 > report_timing -delay min_rise -from CTS/Z to [all_registers -clock CTS/Z -clock_pins]

CTS/Zから出力されているクロックを用いている全てのレジスタで、そのクロックの立ち上がりでの最小遅延パスを求めている。

 > report_timing -delay max_rise -from CTS/Z to [all_registers -clock CTS/Z -clock_pins]

同様に、最大遅延パスを求めている。

この差を用いれば、そのデザイン内の最大クロックスキューが求められる。

関連項目 
論理合成
Verilog

外部リンク 
Design Compiler製品概要 — 日本シノプシス

EDAソフト
電子工学