1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- proc init { cellpath otherInfo } {
-
- set cell_handle [get_bd_cells $cellpath]
- set all_busif [get_bd_intf_pins $cellpath/*]
- set axi_standard_param_list [list ID_WIDTH AWUSER_WIDTH ARUSER_WIDTH WUSER_WIDTH RUSER_WIDTH BUSER_WIDTH]
- set full_sbusif_list [list ]
-
- foreach busif $all_busif {
- if { [string equal -nocase [get_property MODE $busif] "slave"] == 1 } {
- set busif_param_list [list]
- set busif_name [get_property NAME $busif]
- if { [lsearch -exact -nocase $full_sbusif_list $busif_name ] == -1 } {
- continue
- }
- foreach tparam $axi_standard_param_list {
- lappend busif_param_list "C_${busif_name}_${tparam}"
- }
- bd::mark_propagate_only $cell_handle $busif_param_list
- }
- }
- }
- proc pre_propagate {cellpath otherInfo } {
-
- set cell_handle [get_bd_cells $cellpath]
- set all_busif [get_bd_intf_pins $cellpath/*]
- set axi_standard_param_list [list ID_WIDTH AWUSER_WIDTH ARUSER_WIDTH WUSER_WIDTH RUSER_WIDTH BUSER_WIDTH]
-
- foreach busif $all_busif {
- if { [string equal -nocase [get_property CONFIG.PROTOCOL $busif] "AXI4"] != 1 } {
- continue
- }
- if { [string equal -nocase [get_property MODE $busif] "master"] != 1 } {
- continue
- }
-
- set busif_name [get_property NAME $busif]
- foreach tparam $axi_standard_param_list {
- set busif_param_name "C_${busif_name}_${tparam}"
-
- set val_on_cell_intf_pin [get_property CONFIG.${tparam} $busif]
- set val_on_cell [get_property CONFIG.${busif_param_name} $cell_handle]
-
- if { [string equal -nocase $val_on_cell_intf_pin $val_on_cell] != 1 } {
- if { $val_on_cell != "" } {
- set_property CONFIG.${tparam} $val_on_cell $busif
- }
- }
- }
- }
- }
- proc propagate {cellpath otherInfo } {
-
- set cell_handle [get_bd_cells $cellpath]
- set all_busif [get_bd_intf_pins $cellpath/*]
- set axi_standard_param_list [list ID_WIDTH AWUSER_WIDTH ARUSER_WIDTH WUSER_WIDTH RUSER_WIDTH BUSER_WIDTH]
-
- foreach busif $all_busif {
- if { [string equal -nocase [get_property CONFIG.PROTOCOL $busif] "AXI4"] != 1 } {
- continue
- }
- if { [string equal -nocase [get_property MODE $busif] "slave"] != 1 } {
- continue
- }
-
- set busif_name [get_property NAME $busif]
- foreach tparam $axi_standard_param_list {
- set busif_param_name "C_${busif_name}_${tparam}"
-
- set val_on_cell_intf_pin [get_property CONFIG.${tparam} $busif]
- set val_on_cell [get_property CONFIG.${busif_param_name} $cell_handle]
-
- if { [string equal -nocase $val_on_cell_intf_pin $val_on_cell] != 1 } {
- #override property of bd_interface_net to bd_cell -- only for slaves. May check for supported values..
- if { $val_on_cell_intf_pin != "" } {
- set_property CONFIG.${busif_param_name} $val_on_cell_intf_pin $cell_handle
- }
- }
- }
- }
- }
|