axiethernet: added common namespace to all common TCL commands.

Signed-off-by: Nava kishore Manne <navam@xilinx.com>
This commit is contained in:
Nava kishore Manne 2015-04-09 17:20:45 +05:30
parent 11eb73753f
commit 252cea2a5e
2 changed files with 118 additions and 120 deletions

View file

@ -35,16 +35,14 @@
# 02/03/13 srt Added support for IPI designs (CR 698249) # 02/03/13 srt Added support for IPI designs (CR 698249)
# 02/14/13 srt Added support for Zynq (CR 681136) # 02/14/13 srt Added support for Zynq (CR 681136)
# 04/24/13 srt Modified parameter *_SGMII_PHYADDR to *_PHYADDR, the config # 04/24/13 srt Modified parameter *_SGMII_PHYADDR to *_PHYADDR, the config
# parameter C_PHYADDR applies to SGMII/1000BaseX modes of # parameter C_PHYADDR applies to SGMII/1000BaseX modes of
# operation (CR 704195) # operation (CR 704195)
# 08/06/13 srt Added support to handle multiple instances of AxiEthernet # 08/06/13 srt Added support to handle multiple instances of AxiEthernet
# FIFO interface (CR 721141) # FIFO interface (CR 721141)
# 06/08/14 adk Modified the driver tcl to handle the open/close of files # 06/08/14 adk Modified the driver tcl to handle the open/close of files
# properly (CR 810643) # properly (CR 810643)
# 29/10/14 adk Added support for generating parameters for SGMII/1000BaseX modes # 29/10/14 adk Added support for generating parameters for SGMII/1000BaseX modes
# When IP is configured with the PCS/PMA core (CR 828796) # When IP is configured with the PCS/PMA core (CR 828796)
# 8/1/15 adk Fixed TCL errors when axiethernet is configured with the
# Axi stream fifo (CR 835605).
# #
############################################################################### ###############################################################################
#uses "xillib.tcl" #uses "xillib.tcl"
@ -104,7 +102,7 @@ proc xdefine_axiethernet_include_file {drv_handle file_name drv_string} {
# Handle NUM_INSTANCES # Handle NUM_INSTANCES
set periph_ninstances 0 set periph_ninstances 0
puts $file_handle "/* Definitions for driver [string toupper [get_property NAME $drv_handle]] */" puts $file_handle "/* Definitions for driver [string toupper [common::get_property NAME $drv_handle]] */"
foreach periph $periphs { foreach periph $periphs {
init_periph_config_struct $periph_ninstances init_periph_config_struct $periph_ninstances
incr periph_ninstances 1 incr periph_ninstances 1
@ -124,16 +122,16 @@ proc xdefine_axiethernet_include_file {drv_handle file_name drv_string} {
xdefine_temac_params_canonical $file_handle $periph $device_id xdefine_temac_params_canonical $file_handle $periph $device_id
# Interrupt ID (canonical) # Interrupt ID (canonical)
xdefine_temac_interrupt $file_handle $periph $device_id xdefine_temac_interrupt $file_handle $periph $device_id
generate_sgmii_params $drv_handle "xparameters.h" generate_sgmii_params $drv_handle "xparameters.h"
display_avb_warning_if_applicable $periph display_avb_warning_if_applicable $periph
incr device_id incr device_id
puts $file_handle "\n" puts $file_handle "\n"
close $file_handle close $file_handle
} }
# ------------------------------------------------------- # -------------------------------------------------------
# PART 2 -- AXIFIFO/AXIDMA Connection related parameters # PART 2 -- AXIFIFO/AXIDMA Connection related parameters
@ -154,7 +152,7 @@ proc generate {drv_handle} {
} }
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# Given each AXI4 Stream peripheral which is an initiator on a AXI4 # Given each AXI4 Stream peripheral which is an initiator on a AXI4
# Stream interface, traverse to the target side, figure out the peripheral # Stream interface, traverse to the target side, figure out the peripheral
# type that is connected and put in appropriate defines. # type that is connected and put in appropriate defines.
# The peripheral on the other side can be AXI DMA or AXi Streaming FIFO. # The peripheral on the other side can be AXI DMA or AXi Streaming FIFO.
@ -174,41 +172,41 @@ proc xdefine_axi_target_params {periphs file_handle} {
puts $file_handle "#define XPAR_AXI_FIFO 1" puts $file_handle "#define XPAR_AXI_FIFO 1"
puts $file_handle "#define XPAR_AXI_DMA 2" puts $file_handle "#define XPAR_AXI_DMA 2"
puts $file_handle "" puts $file_handle ""
set device_id 0 set device_id 0
set validentry 0 set validentry 0
# Get unique list of p2p peripherals # Get unique list of p2p peripherals
foreach periph $periphs { foreach periph $periphs {
set p2p_periphs [list] set p2p_periphs [list]
set periph_name [string toupper [get_property NAME $periph]] set periph_name [string toupper [common::get_property NAME $periph]]
# Get all point2point buses for periph # Get all point2point buses for periph
set p2p_busifs_i [get_intf_pins -of_objects $periph -filter "TYPE==INITIATOR"] set p2p_busifs_i [hsi::get_intf_pins -of_objects $periph -filter "TYPE==INITIATOR"]
puts $file_handle "" puts $file_handle ""
puts $file_handle "/* Canonical Axi parameters for $periph_name */" puts $file_handle "/* Canonical Axi parameters for $periph_name */"
# Add p2p periphs # Add p2p periphs
foreach p2p_busif $p2p_busifs_i { foreach p2p_busif $p2p_busifs_i {
set busif_name [string toupper [get_property NAME $p2p_busif]] set busif_name [string toupper [common::get_property NAME $p2p_busif]]
set conn_busif_handle [::hsi::utils::get_connected_intf $periph $busif_name] set conn_busif_handle [::hsi::utils::get_connected_intf $periph $busif_name]
if { [string compare -nocase $conn_busif_handle ""] == 0} { if { [string compare -nocase $conn_busif_handle ""] == 0} {
continue continue
} else { } else {
# if there is a single match, we know if it is FIFO or DMA # if there is a single match, we know if it is FIFO or DMA
# no need for further iterations # no need for further iterations
set conn_busif_name [get_property NAME $conn_busif_handle] set conn_busif_name [common::get_property NAME $conn_busif_handle]
set target_periph [get_cells -of_objects $conn_busif_handle] set target_periph [hsi::get_cells -of_objects $conn_busif_handle]
set target_periph_type [get_property IP_NAME $target_periph] set target_periph_type [common::get_property IP_NAME $target_periph]
if { [string compare -nocase $target_periph_type "tri_mode_ethernet_mac"] == 0 } { if { [string compare -nocase $target_periph_type "tri_mode_ethernet_mac"] == 0 } {
continue continue
} }
set tartget_per_name [get_property NAME $target_periph] set tartget_per_name [common::get_property NAME $target_periph]
set target_periph_name [string toupper [get_property NAME $target_periph]] set target_periph_name [string toupper [common::get_property NAME $target_periph]]
set canonical_tag [string toupper [format "AXIETHERNET_%d" $device_id ]] set canonical_tag [string toupper [format "AXIETHERNET_%d" $device_id ]]
set validentry 1 set validentry 1
break break
} }
} }
if {$validentry == 1} { if {$validentry == 1} {
@ -219,17 +217,17 @@ proc xdefine_axi_target_params {periphs file_handle} {
set canonical_name [format "XPAR_%s_CONNECTED_TYPE" $canonical_tag] set canonical_name [format "XPAR_%s_CONNECTED_TYPE" $canonical_tag]
puts $file_handle "#define $canonical_name XPAR_AXI_FIFO" puts $file_handle "#define $canonical_name XPAR_AXI_FIFO"
add_field_to_periph_config_struct $device_id $canonical_name add_field_to_periph_config_struct $device_id $canonical_name
set axi_fifo_baseaddr [get_property CONFIG.C_BASEADDR $target_periph] set axi_fifo_baseaddr [common::get_property CONFIG.C_BASEADDR $target_periph]
set canonical_name [format "XPAR_%s_CONNECTED_BASEADDR" $canonical_tag] set canonical_name [format "XPAR_%s_CONNECTED_BASEADDR" $canonical_tag]
puts $file_handle [format "#define $canonical_name %s" $axi_fifo_baseaddr] puts $file_handle [format "#define $canonical_name %s" $axi_fifo_baseaddr]
add_field_to_periph_config_struct $device_id $canonical_name add_field_to_periph_config_struct $device_id $canonical_name
# FIFO Interrupts Handling # FIFO Interrupts Handling
set int_pin [get_pins -of_objects [get_cells $tartget_per_name] INTERRUPT] set int_pin [hsi::get_pins -of_objects [hsi::get_cells $tartget_per_name] INTERRUPT]
set intc_periph_type [::hsi::utils::get_connected_intr_cntrl $tartget_per_name $int_pin] set intc_periph_type [::hsi::utils::get_connected_intr_cntrl $tartget_per_name $int_pin]
set intc_name [get_property IP_NAME $intc_periph_type] set intc_name [common::get_property IP_NAME $intc_periph_type]
if { $intc_name != [format "ps7_scugic"] } { if { $intc_name != [format "ps7_scugic"] } {
set int_id [::hsi::utils::get_port_intr_id [get_cells $tartget_per_name] $int_pin] set int_id [::hsi::utils::get_port_intr_id [hsi::get_cells $tartget_per_name] $int_pin]
set canonical_name [format "XPAR_%s_CONNECTED_FIFO_INTR" $canonical_tag] set canonical_name [format "XPAR_%s_CONNECTED_FIFO_INTR" $canonical_tag]
puts $file_handle [format "#define $canonical_name %d" $int_id] puts $file_handle [format "#define $canonical_name %d" $int_id]
add_field_to_periph_config_struct $device_id $canonical_name add_field_to_periph_config_struct $device_id $canonical_name
@ -239,9 +237,9 @@ proc xdefine_axi_target_params {periphs file_handle} {
add_field_to_periph_config_struct $device_id 0xFF add_field_to_periph_config_struct $device_id 0xFF
} else { } else {
set canonical_name [format "XPAR_%s_CONNECTED_FIFO_INTR" $canonical_tag] set canonical_name [format "XPAR_%s_CONNECTED_FIFO_INTR" $canonical_tag]
set temp [string toupper $int_pin] set target_periph_name [string toupper [common::get_property NAME $target_periph_type]]
puts $file_handle [format "#define $canonical_name XPAR_FABRIC_%s_%s_INTR" $target_periph_name $temp] puts $file_handle [format "#define $canonical_name XPAR_FABRIC_%s_S2MM_INTROUT_INTR" $target_periph_name]
add_field_to_periph_config_struct $device_id $canonical_name add_field_to_periph_config_struct $deviceid $canonical_name
puts $file_handle [format "#define XPAR_%s_CONNECTED_DMARX_INTR 0xFF" $canonical_tag] puts $file_handle [format "#define XPAR_%s_CONNECTED_DMARX_INTR 0xFF" $canonical_tag]
puts $file_handle [format "#define XPAR_%s_CONNECTED_DMATX_INTR 0xFF" $canonical_tag] puts $file_handle [format "#define XPAR_%s_CONNECTED_DMATX_INTR 0xFF" $canonical_tag]
add_field_to_periph_config_struct $device_id 0xFF add_field_to_periph_config_struct $device_id 0xFF
@ -249,7 +247,7 @@ proc xdefine_axi_target_params {periphs file_handle} {
} }
} }
if {$target_periph_type == "axi_dma"} { if {$target_periph_type == "axi_dma"} {
set axi_dma_baseaddr [get_property CONFIG.C_BASEADDR $target_periph] set axi_dma_baseaddr [common::get_property CONFIG.C_BASEADDR $target_periph]
# Handle base address and connection type # Handle base address and connection type
set canonical_name [format "XPAR_%s_CONNECTED_TYPE" $canonical_tag] set canonical_name [format "XPAR_%s_CONNECTED_TYPE" $canonical_tag]
puts $file_handle "#define $canonical_name XPAR_AXI_DMA" puts $file_handle "#define $canonical_name XPAR_AXI_DMA"
@ -257,7 +255,7 @@ proc xdefine_axi_target_params {periphs file_handle} {
set canonical_name [format "XPAR_%s_CONNECTED_BASEADDR" $canonical_tag] set canonical_name [format "XPAR_%s_CONNECTED_BASEADDR" $canonical_tag]
puts $file_handle [format "#define $canonical_name %s" $axi_dma_baseaddr] puts $file_handle [format "#define $canonical_name %s" $axi_dma_baseaddr]
add_field_to_periph_config_struct $device_id $canonical_name add_field_to_periph_config_struct $device_id $canonical_name
puts $file_handle [format "#define XPAR_%s_CONNECTED_FIFO_INTR 0xFF" $canonical_tag] puts $file_handle [format "#define XPAR_%s_CONNECTED_FIFO_INTR 0xFF" $canonical_tag]
add_field_to_periph_config_struct $device_id 0xFF add_field_to_periph_config_struct $device_id 0xFF
set dmarx_signal [format "s2mm_introut"] set dmarx_signal [format "s2mm_introut"]
@ -265,14 +263,14 @@ proc xdefine_axi_target_params {periphs file_handle} {
xdefine_dma_interrupts $file_handle $target_periph $device_id $canonical_tag $dmarx_signal $dmatx_signal xdefine_dma_interrupts $file_handle $target_periph $device_id $canonical_tag $dmarx_signal $dmatx_signal
} }
incr device_id incr device_id
} }
if {$validentry !=1} { if {$validentry !=1} {
puts "*******************************************************************************\r\n" puts "*******************************************************************************\r\n"
puts "The target Peripheral(Axi DMA or AXI FIFO) is not connected properly to the AXI Ethernet core." puts "The target Peripheral(Axi DMA or AXI FIFO) is not connected properly to the AXI Ethernet core."
puts "*******************************************************************************\r\n" puts "*******************************************************************************\r\n"
} }
} }
} }
# ------------------------------------------------------------------ # ------------------------------------------------------------------
@ -281,7 +279,7 @@ proc xdefine_axi_target_params {periphs file_handle} {
# ------------------------------------------------------------------ # ------------------------------------------------------------------
proc xdefine_temac_params_canonical {file_handle periph device_id} { proc xdefine_temac_params_canonical {file_handle periph device_id} {
puts $file_handle "\n/* Canonical definitions for peripheral [string toupper [get_property NAME $periph]] */" puts $file_handle "\n/* Canonical definitions for peripheral [string toupper [common::get_property NAME $periph]] */"
set canonical_tag [string toupper [format "XPAR_AXIETHERNET_%d" $device_id]] set canonical_tag [string toupper [format "XPAR_AXIETHERNET_%d" $device_id]]
@ -461,17 +459,17 @@ proc xdefine_axiethernet_config_file {file_name drv_string} {
# ------------------------------------------------------------------ # ------------------------------------------------------------------
proc xdefine_dma_interrupts {file_handle target_periph deviceid canonical_tag dmarx_signal dmatx_signal} { proc xdefine_dma_interrupts {file_handle target_periph deviceid canonical_tag dmarx_signal dmatx_signal} {
set target_periph_name [string toupper [get_property NAME $target_periph]] set target_periph_name [string toupper [common::get_property NAME $target_periph]]
# First get the interrupt ports on this AXI peripheral # First get the interrupt ports on this AXI peripheral
set interrupt_port [get_pins -of_objects $target_periph -filter {TYPE==INTERRUPT&&DIRECTION==O}] set interrupt_port [hsi::get_pins -of_objects $target_periph -filter {TYPE==INTERRUPT&&DIRECTION==O}]
if {$interrupt_port == ""} { if {$interrupt_port == ""} {
puts "Info: There are no AXIDMA Interrupt ports" puts "Info: There are no AXIDMA Interrupt ports"
puts $file_handle [format "#define XPAR_%s_CONNECTED_DMARX_INTR 0xFF" $canonical_tag] puts $file_handle [format "#define XPAR_%s_CONNECTED_DMARX_INTR 0xFF" $canonical_tag]
add_field_to_periph_config_struct $deviceid 0xFF add_field_to_periph_config_struct $deviceid 0xFF
puts $file_handle [format "#define XPAR_%s_CONNECTED_DMATX_INTR 0xFF" $canonical_tag] puts $file_handle [format "#define XPAR_%s_CONNECTED_DMATX_INTR 0xFF" $canonical_tag]
add_field_to_periph_config_struct $deviceid 0xFF add_field_to_periph_config_struct $deviceid 0xFF
return return
} }
# For each interrupt port, find out the ordinal of the interrupt line # For each interrupt port, find out the ordinal of the interrupt line
# as connected to an interrupt controller # as connected to an interrupt controller
@ -479,9 +477,9 @@ proc xdefine_dma_interrupts {file_handle target_periph deviceid canonical_tag dm
set dmarx "null" set dmarx "null"
set dmatx "null" set dmatx "null"
foreach intr_port $interrupt_port { foreach intr_port $interrupt_port {
set interrupt_signal_name [get_property NAME $intr_port] set interrupt_signal_name [common::get_property NAME $intr_port]
set intc_port [get_pins -of_objects $target_periph -filter {TYPE==INTERRUPT&&DIRECTION==O}] set intc_port [hsi::get_pins -of_objects $target_periph -filter {TYPE==INTERRUPT&&DIRECTION==O}]
# Make sure the interrupt signal was connected in this design. We assume # Make sure the interrupt signal was connected in this design. We assume
# at least one is. (could be a bug if user just wants polled mode) # at least one is. (could be a bug if user just wants polled mode)
if { $intc_port != "" } { if { $intc_port != "" } {
@ -489,10 +487,10 @@ proc xdefine_dma_interrupts {file_handle target_periph deviceid canonical_tag dm
foreach intr_sink $intc_port { foreach intr_sink $intc_port {
set pname_type [::hsi::utils::get_connected_intr_cntrl $target_periph $intr_sink] set pname_type [::hsi::utils::get_connected_intr_cntrl $target_periph $intr_sink]
if {$pname_type != "chipscope_ila"} { if {$pname_type != "chipscope_ila"} {
set special [get_property IP_TYPE $pname_type] set special [common::get_property IP_TYPE $pname_type]
if {[string compare -nocase $special "INTERRUPT_CNTLR"] == 0} { if {[string compare -nocase $special "INTERRUPT_CNTLR"] == 0} {
set found_intc $intr_sink set found_intc $intr_sink
} }
} }
} }
@ -503,11 +501,11 @@ proc xdefine_dma_interrupts {file_handle target_periph deviceid canonical_tag dm
add_field_to_periph_config_struct $deviceid 0xFF add_field_to_periph_config_struct $deviceid 0xFF
puts $file_handle [format "#define XPAR_%s_CONNECTED_DMATX_INTR 0xFF" $canonical_tag] puts $file_handle [format "#define XPAR_%s_CONNECTED_DMATX_INTR 0xFF" $canonical_tag]
add_field_to_periph_config_struct $deviceid 0xFF add_field_to_periph_config_struct $deviceid 0xFF
return return
} }
set intc_periph [get_cells -of_objects $found_intc] set intc_periph [hsi::get_cells -of_objects $found_intc]
set intc_periph_type [get_property IP_NAME $pname_type] set intc_periph_type [common::get_property IP_NAME $pname_type]
set intc_name [string toupper [get_property NAME $pname_type]] set intc_name [string toupper [common::get_property NAME $pname_type]]
} else { } else {
puts "Info: $target_periph_name interrupt signal $interrupt_signal_name not connected" puts "Info: $target_periph_name interrupt signal $interrupt_signal_name not connected"
continue continue
@ -526,20 +524,20 @@ proc xdefine_dma_interrupts {file_handle target_periph deviceid canonical_tag dm
set canonical_name [format "XPAR_%s_CONNECTED_DMATX_INTR" $canonical_tag] set canonical_name [format "XPAR_%s_CONNECTED_DMATX_INTR" $canonical_tag]
puts $file_handle [format "#define $canonical_name %d" $tx_int_id] puts $file_handle [format "#define $canonical_name %d" $tx_int_id]
add_field_to_periph_config_struct $deviceid $canonical_name add_field_to_periph_config_struct $deviceid $canonical_name
} else { } else {
set addentry 2 set addentry 2
} }
# Now add to the config table in the proper order (RX first, then TX # Now add to the config table in the proper order (RX first, then TX
if { $intc_periph_type == [format "ps7_scugic"] } { if { $intc_periph_type == [format "ps7_scugic"] } {
set canonical_name [format "XPAR_%s_CONNECTED_DMARX_INTR" $canonical_tag] set canonical_name [format "XPAR_%s_CONNECTED_DMARX_INTR" $canonical_tag]
puts $file_handle [format "#define $canonical_name XPAR_FABRIC_%s_S2MM_INTROUT_INTR" $target_periph_name] puts $file_handle [format "#define $canonical_name XPAR_FABRIC_%s_S2MM_INTROUT_INTR" $target_periph_name]
add_field_to_periph_config_struct $deviceid $canonical_name add_field_to_periph_config_struct $deviceid $canonical_name
set canonical_name [format "XPAR_%s_CONNECTED_DMATX_INTR" $canonical_tag] set canonical_name [format "XPAR_%s_CONNECTED_DMATX_INTR" $canonical_tag]
puts $file_handle [format "#define $canonical_name XPAR_FABRIC_%s_MM2S_INTROUT_INTR" $target_periph_name] puts $file_handle [format "#define $canonical_name XPAR_FABRIC_%s_MM2S_INTROUT_INTR" $target_periph_name]
add_field_to_periph_config_struct $deviceid $canonical_name add_field_to_periph_config_struct $deviceid $canonical_name
} }
if { $addentry == 1} { if { $addentry == 1} {
@ -557,7 +555,7 @@ proc xdefine_dma_interrupts {file_handle target_periph deviceid canonical_tag dm
proc xdefine_temac_interrupt {file_handle periph device_id} { proc xdefine_temac_interrupt {file_handle periph device_id} {
#set mhs_handle [xget_hw_parent_handle $periph] #set mhs_handle [xget_hw_parent_handle $periph]
set periph_name [string toupper [get_property NAME $periph]] set periph_name [string toupper [common::get_property NAME $periph]]
# set up the canonical constant name # set up the canonical constant name
set canonical_name [format "XPAR_AXIETHERNET_%d_INTR" $device_id] set canonical_name [format "XPAR_AXIETHERNET_%d_INTR" $device_id]
@ -567,34 +565,34 @@ proc xdefine_temac_interrupt {file_handle periph device_id} {
# for the interrupt ID based on the interrupt signal name of the TEMAC # for the interrupt ID based on the interrupt signal name of the TEMAC
# #
# First get the interrupt ports on this peripheral # First get the interrupt ports on this peripheral
set interrupt_port [get_pins -of_objects $periph -filter {TYPE==INTERRUPT&&DIRECTION==O}] set interrupt_port [hsi::get_pins -of_objects $periph -filter {TYPE==INTERRUPT&&DIRECTION==O}]
if {$interrupt_port == ""} { if {$interrupt_port == ""} {
puts "Info: There are no AXI Ethernet Interrupt ports" puts "Info: There are no AXI Ethernet Interrupt ports"
# No interrupts were connected, so add dummy entry to the config structure # No interrupts were connected, so add dummy entry to the config structure
puts $file_handle [format "#define $canonical_name 0xFF"] puts $file_handle [format "#define $canonical_name 0xFF"]
add_field_to_periph_config_struct $device_id 0xFF add_field_to_periph_config_struct $device_id 0xFF
} }
# For each interrupt port, find out the ordinal of the interrupt line # For each interrupt port, find out the ordinal of the interrupt line
# as connected to an interrupt controller # as connected to an interrupt controller
set addentry 0 set addentry 0
set interrupt_signal_name [get_property NAME $interrupt_port] set interrupt_signal_name [common::get_property NAME $interrupt_port]
#set interrupt_signal [xget_hw_value $interrupt_port] #set interrupt_signal [xget_hw_value $interrupt_port]
set intc_prt [::hsi::utils::get_sink_pins [get_pins -of_objects [get_cells $periph] INTERRUPT]] set intc_prt [::hsi::utils::get_sink_pins [hsi::get_pins -of_objects [hsi::get_cells $periph] INTERRUPT]]
# Make sure the interrupt signal was connected in this design. We assume # Make sure the interrupt signal was connected in this design. We assume
# at least one is. (could be a bug if user just wants polled mode) # at least one is. (could be a bug if user just wants polled mode)
if { $intc_prt != "" } { if { $intc_prt != "" } {
set found_intc "" set found_intc ""
foreach intr_sink $intc_prt { foreach intr_sink $intc_prt {
set phandle [get_cells -of_objects $intr_sink] set phandle [hsi::get_cells -of_objects $intr_sink]
set pname_type [get_property NAME $phandle] set pname_type [common::get_property NAME $phandle]
if {$pname_type != "chipscope_ila"} { if {$pname_type != "chipscope_ila"} {
set special [get_property IP_TYPE [get_cells $pname_type]] set special [common::get_property IP_TYPE [hsi::get_cells $pname_type]]
if {[string compare -nocase $special "INTERRUPT_CNTLR"] == 0} { if {[string compare -nocase $special "INTERRUPT_CNTLR"] == 0} {
set found_intc $intr_sink set found_intc $intr_sink
break break
} }
} }
} }
@ -602,16 +600,16 @@ proc xdefine_temac_interrupt {file_handle periph device_id} {
puts "Info: Axi Ethernet interrupt not connected to intc\n" puts "Info: Axi Ethernet interrupt not connected to intc\n"
# No interrupts were connected, so add dummy entry to the config structure # No interrupts were connected, so add dummy entry to the config structure
puts $file_handle [format "#define $canonical_name 0xFF"] puts $file_handle [format "#define $canonical_name 0xFF"]
add_field_to_periph_config_struct $device_id 0xFF add_field_to_periph_config_struct $device_id 0xFF
return return
} }
set intc_periph [get_cells -of_objects $found_intc] set intc_periph [hsi::get_cells -of_objects $found_intc]
set intc_periph_type [get_property IP_NAME $intc_periph] set intc_periph_type [common::get_property IP_NAME $intc_periph]
set intc_name [string toupper [get_property NAME $intc_periph]] set intc_name [string toupper [common::get_property NAME $intc_periph]]
} else { } else {
puts "Info: $periph_name interrupt signal $interrupt_signal_name not connected" puts "Info: $periph_name interrupt signal $interrupt_signal_name not connected"
# No interrupts were connected, so add dummy entry to the config structure # No interrupts were connected, so add dummy entry to the config structure
puts $file_handle [format "#define $canonical_name 0xFF"] puts $file_handle [format "#define $canonical_name 0xFF"]
add_field_to_periph_config_struct $device_id 0xFF add_field_to_periph_config_struct $device_id 0xFF
return return
@ -622,7 +620,7 @@ proc xdefine_temac_interrupt {file_handle periph device_id} {
# matches the original interrupt signal we were tracking. # matches the original interrupt signal we were tracking.
if { $intc_periph_type != [format "ps7_scugic"] } { if { $intc_periph_type != [format "ps7_scugic"] } {
set ethernet_int_signal_name [get_pins -of_objects $periph INTERRUPT] set ethernet_int_signal_name [hsi::get_pins -of_objects $periph INTERRUPT]
set int_id [::hsi::utils::get_port_intr_id $periph $ethernet_int_signal_name] set int_id [::hsi::utils::get_port_intr_id $periph $ethernet_int_signal_name]
puts $file_handle "\#define $canonical_name $int_id" puts $file_handle "\#define $canonical_name $int_id"
add_field_to_periph_config_struct $device_id $canonical_name add_field_to_periph_config_struct $device_id $canonical_name
@ -630,7 +628,7 @@ proc xdefine_temac_interrupt {file_handle periph device_id} {
} else { } else {
puts $file_handle [format "#define $canonical_name XPAR_FABRIC_%s_INTERRUPT_INTR" $periph_name] puts $file_handle [format "#define $canonical_name XPAR_FABRIC_%s_INTERRUPT_INTR" $periph_name]
add_field_to_periph_config_struct $device_id $canonical_name add_field_to_periph_config_struct $device_id $canonical_name
set addentry 1 set addentry 1
} }
if { $addentry == 0 } { if { $addentry == 0 } {
@ -642,17 +640,17 @@ proc xdefine_temac_interrupt {file_handle periph device_id} {
proc generate_sgmii_params {drv_handle file_name} { proc generate_sgmii_params {drv_handle file_name} {
set file_handle [::hsi::utils::open_include_file $file_name] set file_handle [::hsi::utils::open_include_file $file_name]
set ips [get_cells "*"] set ips [hsi::get_cells "*"]
foreach ip $ips { foreach ip $ips {
set periph [get_property IP_NAME $ip] set periph [common::get_property IP_NAME $ip]
if { [string compare -nocase $periph "gig_ethernet_pcs_pma"] == 0} { if { [string compare -nocase $periph "gig_ethernet_pcs_pma"] == 0} {
set PhyStandard [get_property CONFIG.Standard $ip] set PhyStandard [common::get_property CONFIG.Standard $ip]
} }
} }
foreach ip $ips { foreach ip $ips {
set periph [get_property IP_NAME $ip] set periph [common::get_property IP_NAME $ip]
if { [string compare -nocase $periph "axi_ethernet_buffer"] == 0} { if { [string compare -nocase $periph "axi_ethernet_buffer"] == 0} {
set phya [is_gige_pcs_pma_ip_present $ip] set phya [is_gige_pcs_pma_ip_present $ip]
if { $phya == 0} { if { $phya == 0} {
@ -681,14 +679,14 @@ proc is_gige_pcs_pma_ip_present {slave} {
set phy_addr 0 set phy_addr 0
set ipconv 0 set ipconv 0
set ips [get_cells "*"] set ips [hsi::get_cells "*"]
set enetipinstance_name [get_property IP_NAME $slave] set enetipinstance_name [common::get_property IP_NAME $slave]
foreach ip $ips { foreach ip $ips {
set periph [get_property IP_NAME $ip] set periph [common::get_property IP_NAME $ip]
if { [string compare -nocase $periph "gig_ethernet_pcs_pma"] == 0} { if { [string compare -nocase $periph "gig_ethernet_pcs_pma"] == 0} {
set sgmii_param [get_property CONFIG.c_is_sgmii $ip] set sgmii_param [common::get_property CONFIG.c_is_sgmii $ip]
set PhyStandarrd [get_property CONFIG.Standard $ip] set PhyStandarrd [common::get_property CONFIG.Standard $ip]
if {$sgmii_param == true || $PhyStandarrd == "1000BASEX"} { if {$sgmii_param == true || $PhyStandarrd == "1000BASEX"} {
set ipconv $ip set ipconv $ip
} }
@ -697,7 +695,7 @@ proc is_gige_pcs_pma_ip_present {slave} {
} }
if { $ipconv != 0 } { if { $ipconv != 0 } {
set port_value [get_pins -of_objects [get_nets -of_objects [get_pins -of_objects $ipconv gmii_txd]]] set port_value [hsi::get_pins -of_objects [hsi::get_nets -of_objects [hsi::get_pins -of_objects $ipconv gmii_txd]]]
if { $port_value != 0 } { if { $port_value != 0 } {
if { [string compare -nocase $enetipinstance_name "axi_ethernet_buffer"] == 0} { if { [string compare -nocase $enetipinstance_name "axi_ethernet_buffer"] == 0} {
set phyaddr [::hsi::utils::get_param_value $ipconv C_PHYADDR] set phyaddr [::hsi::utils::get_param_value $ipconv C_PHYADDR]

View file

@ -32,7 +32,7 @@
# #
# Ver Who Date Changes # Ver Who Date Changes
# -------- ------ -------- ---------------------------------------------------- # -------- ------ -------- ----------------------------------------------------
# 1.00.a asa 05/12/10 First Release # 1.00.a asa 05/12/10 First Release
# 4.0 adk 10/12/13 Updated as per the New Tcl API's # 4.0 adk 10/12/13 Updated as per the New Tcl API's
# 4.1 adk 21/4/14 Fixed the CR:780537 Modified the get_dma_info proc # 4.1 adk 21/4/14 Fixed the CR:780537 Modified the get_dma_info proc
# logic as appropriate(In case of multiple dma's in the # logic as appropriate(In case of multiple dma's in the
@ -117,7 +117,7 @@ proc gen_init_code {swproj mhsinst} {
} }
if {$swproj == 1} { if {$swproj == 1} {
set ipname [get_property NAME $mhsinst] set ipname [common::get_property NAME $mhsinst]
set ifintr [::hsi::utils::is_ip_interrupting_current_proc $mhsinst] set ifintr [::hsi::utils::is_ip_interrupting_current_proc $mhsinst]
if {$ifintr == 1} { if {$ifintr == 1} {
@ -157,9 +157,9 @@ proc gen_testfunc_call {swproj mhsinst} {
return "" return ""
} }
set ipname [get_property NAME $mhsinst] set ipname [common::get_property NAME $mhsinst]
set deviceid [::hsi::utils::get_ip_param_name $mhsinst "DEVICE_ID"] set deviceid [::hsi::utils::get_ip_param_name $mhsinst "DEVICE_ID"]
set stdout [get_property CONFIG.STDOUT [get_os]] set stdout [common::get_property CONFIG.STDOUT [hsi::get_os]]
if { $stdout == "" || $stdout == "none" } { if { $stdout == "" || $stdout == "none" } {
set hasStdout 0 set hasStdout 0
} else { } else {
@ -170,15 +170,15 @@ proc gen_testfunc_call {swproj mhsinst} {
set fifo_deviceid [get_fifo_info $mhsinst "id"] set fifo_deviceid [get_fifo_info $mhsinst "id"]
set fifo_ipname [get_fifo_info $mhsinst "name"] set fifo_ipname [get_fifo_info $mhsinst "name"]
set dma_deviceid [get_dma_info $mhsinst "id"] set dma_deviceid [get_dma_info $mhsinst "id"]
set dma_ipname [get_dma_info $mhsinst "name"] set dma_ipname [get_dma_info $mhsinst "name"]
if {$ifintr == 1} { if {$ifintr == 1} {
set intr_pin_name [get_pins -of_objects [get_cells $ipname] INTERRUPT] set intr_pin_name [hsi::get_pins -of_objects [hsi::get_cells $ipname] INTERRUPT]
set intcname [::hsi::utils::get_connected_intr_cntrl $ipname $intr_pin_name] set intcname [::hsi::utils::get_connected_intr_cntrl $ipname $intr_pin_name]
set intcvar intc set intcvar intc
set proc [get_property IP_NAME [get_cells [get_sw_processor]]] set proc [common::get_property IP_NAME [hsi::get_cells [hsi::get_sw_processor]]]
} }
@ -188,23 +188,23 @@ proc gen_testfunc_call {swproj mhsinst} {
if { $dma == 3 } { if { $dma == 3 } {
set type "SgDma" set type "SgDma"
} }
set testfunc_call "" set testfunc_call ""
# BEGIN: FIFO # BEGIN: FIFO
if { $dma == 1 } { if { $dma == 1 } {
append testfunc_call " append testfunc_call "
{ {
int Status; int Status;
" "
if {${hasStdout} == 1} { if {${hasStdout} == 1} {
append testfunc_call " append testfunc_call "
print(\"\\r\\n Running AxiEthernetPolledExample() for ${ipname}...\\r\\n\"); print(\"\\r\\n Running AxiEthernetPolledExample() for ${ipname}...\\r\\n\");
" "
} }
append testfunc_call " append testfunc_call "
Status = AxiEthernetPolledExample( ${deviceid}, Status = AxiEthernetPolledExample( ${deviceid},
${fifo_deviceid} ); ${fifo_deviceid} );
@ -237,7 +237,7 @@ proc gen_testfunc_call {swproj mhsinst} {
# BEGIN: INTERRUPT # BEGIN: INTERRUPT
if { ${ifintr} == 1 } { if { ${ifintr} == 1 } {
# AXIETHERNET # AXIETHERNET
if { if {
$proc == "microblaze" $proc == "microblaze"
@ -249,7 +249,7 @@ proc gen_testfunc_call {swproj mhsinst} {
set intr_id [string toupper $intr_id] set intr_id [string toupper $intr_id]
# BEGIN: FIFO & INTERRUPT # BEGIN: FIFO & INTERRUPT
if {$dma == 1} { if {$dma == 1} {
# AXIFIFO # AXIFIFO
if { if {
@ -259,7 +259,7 @@ proc gen_testfunc_call {swproj mhsinst} {
} else { } else {
set fifo_intr_id "XPAR_FABRIC_${fifo_ipname}_${intr_pin_name}_INTR" set fifo_intr_id "XPAR_FABRIC_${fifo_ipname}_${intr_pin_name}_INTR"
} }
set fifo_intr_id [string toupper $fifo_intr_id] set fifo_intr_id [string toupper $fifo_intr_id]
append testfunc_call " append testfunc_call "
@ -286,7 +286,7 @@ proc gen_testfunc_call {swproj mhsinst} {
append testfunc_call " append testfunc_call "
if(Status == 0) { if(Status == 0) {
print(\"AxiEthernet Interrupt Test PASSED.\\r\\n\"); print(\"AxiEthernet Interrupt Test PASSED.\\r\\n\");
} }
else { else {
print(\"AxiEthernet Interrupt Test FAILED.\\r\\n\"); print(\"AxiEthernet Interrupt Test FAILED.\\r\\n\");
} }
@ -331,7 +331,7 @@ proc gen_testfunc_call {swproj mhsinst} {
append testfunc_call " append testfunc_call "
if (Status == 0) { if (Status == 0) {
print(\"AxiEthernet Interrupt Test PASSED.\\r\\n\"); print(\"AxiEthernet Interrupt Test PASSED.\\r\\n\");
} }
else { else {
print(\"AxiEthernet Interrupt Test FAILED.\\r\\n\"); print(\"AxiEthernet Interrupt Test FAILED.\\r\\n\");
} }
@ -350,11 +350,11 @@ proc gen_testfunc_call {swproj mhsinst} {
proc get_fifo_info {mhsHandle type} { proc get_fifo_info {mhsHandle type} {
set ipinst_list [get_cells $mhsHandle "*"] set ipinst_list [hsi::get_cells $mhsHandle "*"]
foreach ipinst $ipinst_list { foreach ipinst $ipinst_list {
set coreName [get_property IP_NAME $ipinst] set coreName [common::get_property IP_NAME $ipinst]
set instName [get_property NAME $ipinst] set instName [common::get_property NAME $ipinst]
if {[string compare -nocase $coreName "axi_fifo_mm_s"] == 0} { if {[string compare -nocase $coreName "axi_fifo_mm_s"] == 0} {
@ -370,26 +370,26 @@ proc get_fifo_info {mhsHandle type} {
} }
proc get_dma_info {mhsinst type} { proc get_dma_info {mhsinst type} {
set ipinst_list [get_cells $mhsinst "*"] set ipinst_list [hsi::get_cells $mhsinst "*"]
set p2p_busifs_i [get_intf_pins -of_objects $mhsinst -filter "TYPE==INITIATOR"] set p2p_busifs_i [hsi::get_intf_pins -of_objects $mhsinst -filter "TYPE==INITIATOR"]
# Add p2p periphs # Add p2p periphs
foreach p2p_busif $p2p_busifs_i { foreach p2p_busif $p2p_busifs_i {
set busif_name [string toupper [get_property NAME $p2p_busif]] set busif_name [string toupper [common::get_property NAME $p2p_busif]]
set conn_busif_handle [::hsi::utils::get_connected_intf $mhsinst $busif_name] set conn_busif_handle [::hsi::utils::get_connected_intf $mhsinst $busif_name]
if { [string compare -nocase $conn_busif_handle ""] == 0} { if { [string compare -nocase $conn_busif_handle ""] == 0} {
continue continue
} else { } else {
# if there is a single match, we know if it is FIFO or DMA # if there is a single match, we know if it is FIFO or DMA
# no need for further iterations # no need for further iterations
set conn_busif_name [get_property NAME $conn_busif_handle] set conn_busif_name [common::get_property NAME $conn_busif_handle]
set target_periph [get_cells -of_objects $conn_busif_handle] set target_periph [hsi::get_cells -of_objects $conn_busif_handle]
set target_periph_type [get_property IP_NAME $target_periph] set target_periph_type [common::get_property IP_NAME $target_periph]
if { [string compare -nocase $target_periph_type "tri_mode_ethernet_mac"] == 0 } { if { [string compare -nocase $target_periph_type "tri_mode_ethernet_mac"] == 0 } {
continue continue
} }
set target_periph_name [string toupper [get_property NAME $target_periph]] set target_periph_name [string toupper [common::get_property NAME $target_periph]]
set instName [get_property NAME $target_periph] set instName [common::get_property NAME $target_periph]
if {[string compare -nocase $target_periph_type "axi_dma"] == 0} { if {[string compare -nocase $target_periph_type "axi_dma"] == 0} {
if {[string compare -nocase $type "id"] == 0} { if {[string compare -nocase $type "id"] == 0} {
set deviceid [::hsi::utils::get_ip_param_name $target_periph "DEVICE_ID"] set deviceid [::hsi::utils::get_ip_param_name $target_periph "DEVICE_ID"]