Club Vivadoであった質問とかXilinx社への要望で勝手に解釈、パート②!
こういうことなんだけど、ドラッグアンドドロップでコピーできんよねぇ。
これはtcl化してコピーとなるんだけど、できればヒエラルキーごとにBD化できんかなぁ〜。
例えば、こんなふうにBDを作ってみた。
まずはVivadoのバージョンを変えるときはここをいぢってからtclを使う。 これを変更するのは基本かな・・・。
set scripts_vivado_version 2016.2
このパーツ名も気をつけるところかな?
set list_projs [get_projects -quiet]
if { $list_projs eq "" } {
create_project project_1 myproj -part xc7z010clg400-1
}
意外にここだけ残せば、ヒエラルキーだけ残せない?
# Hierarchical cell: hier_0
proc create_hier_cell_hier_0 { parentCell nameHier } {
variable script_folder
if { $parentCell eq "" || $nameHier eq "" } {
catch {common::send_msg_id "BD_TCL-102" "ERROR" create_hier_cell_hier_0() - Empty argument(s)!"}
return
}
# Get object for parentCell
set parentObj [get_bd_cells $parentCell]
if { $parentObj == "" } {
catch {common::send_msg_id "BD_TCL-100" "ERROR" "Unable to find parent cell <$parentCell>!"}
return
}
# Make sure parentObj is hier blk
set parentType [get_property TYPE $parentObj]
if { $parentType ne "hier" } {
catch {common::send_msg_id "BD_TCL-101" "ERROR" "Parent <$parentObj> has TYPE = <$parentType>. Expected to be <hier>."}
return
}
# Save current instance; Restore later
set oldCurInst [current_bd_instance .]
# Set parent object as current
current_bd_instance $parentObj
# Create cell and set as current instance
set hier_obj [create_bd_cell -type hier $nameHier]
current_bd_instance $hier_obj
# Create interface pins
create_bd_intf_pin -mode Slave -vlnv xilinx.com:interface:aximm_rtl:1.0 S00_AXI
# Create pins
# Create instance: axi_gpio_0, and set properties
set axi_gpio_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_gpio:2.0 axi_gpio_0 ]
# Create instance: axi_gpio_1, and set properties
set axi_gpio_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_gpio:2.0 axi_gpio_1 ]
# Create instance: axi_interconnect_0, and set properties
set axi_interconnect_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 axi_interconnect_0 ]
# Create interface connections
connect_bd_intf_net -intf_net Conn1 [get_bd_intf_pins S00_AXI] [get_bd_intf_pins axi_interconnect_0/S00_AXI]
connect_bd_intf_net -intf_net axi_interconnect_0_M00_AXI [get_bd_intf_pins axi_gpio_0/S_AXI] [get_bd_intf_pins axi_interconnect_0/M00_AXI]
connect_bd_intf_net -intf_net axi_interconnect_0_M01_AXI [get_bd_intf_pins axi_gpio_1/S_AXI] [get_bd_intf_pins axi_interconnect_0/M01_AXI]
# Restore current instance
current_bd_instance $oldCurInst
}
最後にcreate_root_design ""をコメントアウトか削除しちゃって、上記のヒエラルキーを作成するように変えてしまえば、ヒエラルキーだけを引き継ぐことができるなぁ。
#create_root_design ""
create_hier_cell_hier_0 [current_bd_instance .] hier_0
初めからヒエラルキーだけ残したtcl作ればいいって、言われそうだけど・・・
Tweet write: 2016/09/19/ 23:39:57