チュートリアル

元デザインの作成2

IPの生成(Generate)

Generate Output Productsのダイアログでは、デフォルトのままOut of context per IPを選択します。

 

GlobalにするとIPをすべて固めて1つのファイルにするようですが、個々のIPに変更があった場合にキャッシュが使われないので遅くなります。per IPが最も効率的と思われます。

Generateを押すと、長いGenerateプロセスが開始します。

1つ1つのIPをコンパイルしているようで、20分程度かかります。後でSDSoC用にIP追加して再びGenerateを行うので、この段階でのGenerateは止めてしまっても問題ありません。

 

GPIOの削除

Vivado 2017.3以降では、PS7のEMIOから出る双方向バスの信号をIOBUFに割り当てることができないため、GPIO_1を削除してください。

 

GPIOを残したまま合成するための回避策は後述しますが、とりあえずはこのGPIO_1のポートを削除します。

 

HDL Wrapperの作成

zsys.bdの上で右クリックし、Create HDL Wrapperを実行します。

 

ピン配置およびタイミング制約ファイルの追加

VivadoのSourcesを出し、+ボタンを押します。

 

Add craete constraintsを選択し、Nextを押します。

 

Add Filesボタンを押します。

 

D:\SDSoC\vivado_nocsi\constraintsフォルダにあるすべてのxdcファイルを選択して、OKを押します。

 

Copy constraints fiels into projectのチェックをONにして、Finishを押します。

この操作により、D:/sdsoc/vivado_nocsi/constraintsからD:/sdsoc/vivado_nocsi/vivado_nocsi.srcs/ constrs_1/imports/constraintsフォルダにファイルがコピーされ、コピーされた先のファイルが使用されるようになります。

 

7つのxdcファイルが追加されます。

 

これでピン配置とタイミングの制約が追加されました。

Bitstreamの生成

プロジェクトが正しく作られているかを確認するため、一度、Generate Bitstreamを実行します。

次のダイアログでは、変更せずにそのままOKを押します。

 

Create HDL Wrapperが行われていない場合

もし、

 [Common 17-70] Application Exception: Top module not set for fileset 'sources_1'. Please ensure that a valid value is provided for 'top'. The value for 'top' can be set/changed using the 'Top Module Name' field under 'Project Settings', or using the 'set_property top' Tcl command (e.g. set_property top [current_fileset]).

というエラーが出る場合は、前のCreate HDL Wrapperが行われていないことが考えられます。

 

制約ファイルの設定が行われていない場合

以下のように、42個のポートのI/O Standardや配置が設定されていないというエラーが表示されます。

[DRC NSTD-1] Unspecified I/O Standard: 42 out of 130 logical ports use I/O standard (IOSTANDARD) value 'DEFAULT', instead of a user assigned specific value. This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all I/O standards. This design will fail to generate a bitstream unless all logical ports have a user specified I/O standard value defined. To allow bitstream creation with unspecified I/O standard values (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks NSTD-1].  NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run. Problem ports: hdmi_data_n[2:0], csi_d_n[1:0], csi_d_lp_p[0], csi_d_p[1:0], csi_d_lp_n[0], hdmi_data_p[2:0], hdmi_clk_p, hdmi_clk_n, csi_c_clk_p, csi_c_clk_n, PWM_R, PWM_L, and GPIO_1_tri_io[23:0].

 

 

GPIOでエラーが出る

以下のようにGPIOに関するピン配置やI/O Standardのエラーが出る場合は、GPIOのピンを削除してください。

[Place 30-58] IO placement is infeasible. Number of unplaced terminals (24) is greater than number of available sites (8).
The following are banks with available pins: 
 IO Group: 0 with : SioStd: LVCMOS18   VCCO = 1.8 Termination: 0  TermDir:  BiDi RangeId: 1 Drv: 12  has only 8 sites available on device, but needs 24 sites.
Term: GPIO_1_tri_io[0]
Term:  GPIO_1_tri_io[1]
Term:  GPIO_1_tri_io[2]
Term:  GPIO_1_tri_io[3]
Term:  GPIO_1_tri_io[4]
Term:  GPIO_1_tri_io[5]
Term:  GPIO_1_tri_io[6]
Term:  GPIO_1_tri_io[7]
Term:  GPIO_1_tri_io[8]
Term:  GPIO_1_tri_io[9]
Term:  GPIO_1_tri_io[10]
Term:  GPIO_1_tri_io[11]
Term:  GPIO_1_tri_io[12]
Term:  GPIO_1_tri_io[13]
Term:  GPIO_1_tri_io[14]
Term:  GPIO_1_tri_io[15]
Term:  GPIO_1_tri_io[16]
Term:  GPIO_1_tri_io[17]
Term:  GPIO_1_tri_io[18]
Term:  GPIO_1_tri_io[19]
Term:  GPIO_1_tri_io[20]
Term:  GPIO_1_tri_io[21]
Term:  GPIO_1_tri_io[22]
Term:  and GPIO_1_tri_io[23]

 

BitStreamの生成に成功したら

Vivado 2018.1ではTiming Errorが出ると思いますが、BitStreamの生成に成功するはずです。

 

このタイミングエラーはVideo入力回路の中で出ています。

これで準備が整いました。