LoginSignup
6
8

More than 5 years have passed since last update.

Vivado の Design Checkpoint とは

Last updated at Posted at 2017-08-07

はじめに

この記事では Vivado の Design Checkpoint に関して、その特長と用途の説明をします。

Design Checkpoint とは

Design Checkpoint とは簡単に言えば次のようなものです。

  • Vivado のプロジェクトを zip 形式でアーカイブしたファイル
  • 拡張子は .dcp

ただ、単純に zip 形式でアーカイブしただけではたいした意味は無いのですが、Vivado の Design Checkpoint には次のような特長があります。

  • Vivado から直接読める
  • Vivado から直接書ける
  • cell単位で別々に Design Checkpoint を読み書き出来る

これらの特長を利用して、Vivado のデザインフローの自動化、Incremental Compile、 Partial Reconfiguration などに Design Checkpoint は利用されています。特に Partial Reconfiguration に関しては別記事で詳しく紹介する予定です。

Design Checkpoint によるデザインフローの自動化

Design Checkpoint は単一のファイルです。また、次のように入力の Design Checkpoint をなんらかの処理(implmentationなど)を行って別の名前の Design Checkpoint に書き込むことにより、次の図のようなデザインフローを作ることが出来ます。

Fig.1 Design Checkpoint のデザインフロー

Fig.1 Design Checkpoint のデザインフロー


  1. の open_checkpoint コマンドで Design Checkpoint を開きます。
  2. でなんらかの処理を行います。
  3. の write_checkpoint コマンドで Design Checkpoint に書き込みます。
  4. の close_design コマンドで開いていた Design Checkpoint を閉じます。

このようにすることによって、 Design Checkpoint は状態が変わらない(immutableな) 単一のファイルにすることができます。これは make などのビルド自動化ツールと相性が良いです。

Makefile
all: output.dcp
output.dcp : input.dcp
    vivado -mode batch -source xxxx.tcl

Design Checkpoint によるデザインのリンク

デザイン例

Vivado では Design Checkpoint を cell 単位で読み書きすることが出来ます。ここでいう cell とは、Xilinxなどの EDA 業界の用語で、コンピュータープログラムでのインスタンスに相当します。

例として次のようなデザインがあるとします。

Fig.2 Design Checkpointによるデザインのリンクの例

Fig.2 Design Checkpointによるデザインのリンクの例


この例で、デザインの名前は design_1とします。ここで U0、U1、U2 が cell です。U0 は MPU というモジュールをインスタンス化したもの、U1 は SUB をインスタンス化したものです。

このデザインで、 U1:SUB を除く他のモジュールはまとめて論理合成しておき、U1:SUB のみを別に論理合成するとします。

トップレベルの論理合成結果を Design Checkpoint に保存

この場合、次の図のようにU1:SUB をブラックボックスとしておき、Vivado のプロジェクトを作って論理合成して top_synth.dcp という Design Checkpoint を作っておきます。

Fig.3 トップレベルの論理合成結果をDesign Checkpointにしておく

Fig.3 トップレベルの論理合成結果をDesign Checkpointにしておく


top_stynth.tcl
source create_project.tcl
synth_design
write_checkpoint -force top_synth.dcp.
close_design

SUB の論理合成結果を Design Checkpoint に保存

一方、モジュール SUB は次のように別に論理合成してsub_synth.dcp という Design Checkpoint を作ります。ここで SUB は out_of_context というフラグをつけて論理合成します。

Fig.4 SUBモジュールの論理合成結果をDesign Checkpointにしておく

Fig.4 SUBモジュールの論理合成結果をDesign Checkpointにしておく


sub_stynth.tcl
source create_project.tcl
synth_design -top SUB -mode out_of_context
write_checkpoint -force sub_synth.dcp
close_design

デザインをリンクして配置配線

最後にトップレベルの論理合成結果の Design Checkpoint と SUB の論理合成結果の Design Checkpoint をリンクします。

まずトップレベルの論理合成結果の Design Checkpoint(top_synth.dcp) をopen_checkpoint コマンドで開きます。次に SUB の論理合成結果の Design Checkpoint(sub_synth.dcp) を read_checkpoint で cell を指定して読み込みます。リンクした結果を Design Checkpoint(design_synth.dcp) に書き込みます。

最後に上で作成した Design Checkpoint(design_synth.dcp) を使って配置配線を行いDesign Checkpoint(design_impl.dcp) に保存します。

Fig.5 トップレベルの論理合成結果と SUB の論理合成結果をリンク

Fig.5 トップレベルの論理合成結果と SUB の論理合成結果をリンク


link.tcl
open_checkpoint top_synth.dcp
read_checkpoint -cell U1 sub_synth.dcp
write_checkpoint design_synth.dcp
close_design
implementation.tcl
open_checkpoint design_synth.dcp
opt_design
place_design
route_design
write_checkpoint design_impl.dcp
close_design

リンクの用途

前節で説明したように、 Design Checkpoint は Vivado によって cell 単位でリンクすることが出来ます。この特長により、Vivado では、Incremental Compile や Parital Reconfiguration のデザインフローで Design Checkpoint が使われています。

参考

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8