Design Compilerの基本概念
Design Compiler(DC)はHDL記述を工芸依存のゲートレベルネットリストに変換する論理合成ツールです。論理合成プロセスは3段階で構成されます:
- 変換:HDLを工芸非依存の内部データベースへ変換
- 最適化:動作周波数/面積/消費電力の制約下で論理最適化を実施
- マッピング:ターゲット工芸ライブラリへの論理セル割当て
入力となるVerilog設計、工芸ライブラリ、設計制約から、配置配線可能なゲートレベルネットリストが生成されます。
TCLスクリプト設計手法
DCの制御スクリプト作成における主要ステップ:
- 工芸ライブラリの指定
- 設計ファイルの読込み
- 設計環境と制約の定義
- 合成実行
- 出力ファイル生成
環境設定と制約定義
主要な環境設定コマンド:
set_drive:入力ポート駆動抵抗値設定set_load:出力ポート負荷容量設定set_driving_cell:駆動セル指定set_wire_load_model:配線負荷モデル定義
タイミング制約設定
クロック定義の基本構文:
create_clock -period 120 -waveform {0 60} sys_clk
入出力遅延の定義:
set_input_delay:外部ロジック経由遅延時間set_output_delay:後段回路要求準備時間
合成スクリプト例
# ライブラリパス設定
set lib_path "../lib/tech90nm"
set target_library "slow_90nm.db"
set link_library "* $target_library"
# 設計ファイル読込み
read_verilog fir_filter.v
read_verilog clk_divider.v
# トップモジュール指定
current_design fir_filter
link
# クロック定義
create_clock -period 120 -waveform {0 60} [get_ports sys_clk]
create_generated_clock [get_pins div/clk_out] -source sys_clk -divide_by 32
# タイミング制約
set_input_delay 25 -clock sys_clk [all_inputs]
set_output_delay 25 -clock clk_out [all_outputs]
set_load 1.8 [all_outputs]
# 合成実行
compile
compile -incremental -effort high
# 出力ファイル生成
write -format verilog -output fir_gate.v
write_sdc -output fir_constraints.sdc
合成プロセス実行手順
- ターミナルでスクリプト実行:
dc_shell -f synthesis_script.tcl - エラーチェック:各ステップの戻り値確認(正常時は1)
- 出力ファイル検証:
- ゲートレベルネットリスト(.v)
- タイミング制約ファイル(.sdc)
- 合成レポートファイル群
- GUIでの結果確認:
start_gui→ Schematic Viewで論理構造可視化