Design Compilerを用いたデジタルASICの論理合成手法

Design Compilerの基本概念

Design Compiler(DC)はHDL記述を工芸依存のゲートレベルネットリストに変換する論理合成ツールです。論理合成プロセスは3段階で構成されます:

  • 変換:HDLを工芸非依存の内部データベースへ変換
  • 最適化:動作周波数/面積/消費電力の制約下で論理最適化を実施
  • マッピング:ターゲット工芸ライブラリへの論理セル割当て

入力となるVerilog設計、工芸ライブラリ、設計制約から、配置配線可能なゲートレベルネットリストが生成されます。

TCLスクリプト設計手法

DCの制御スクリプト作成における主要ステップ:

  1. 工芸ライブラリの指定
  2. 設計ファイルの読込み
  3. 設計環境と制約の定義
  4. 合成実行
  5. 出力ファイル生成

環境設定と制約定義

主要な環境設定コマンド:

  • 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

合成プロセス実行手順

  1. ターミナルでスクリプト実行:
    dc_shell -f synthesis_script.tcl
  2. エラーチェック:各ステップの戻り値確認(正常時は1)
  3. 出力ファイル検証:
    • ゲートレベルネットリスト(.v)
    • タイミング制約ファイル(.sdc)
    • 合成レポートファイル群
  4. GUIでの結果確認:
    start_gui → Schematic Viewで論理構造可視化

タグ: DesignCompiler 論理合成 TCL ASIC設計 タイミング制約

5月16日 06:02 投稿