How to implement ILA in Vivado with ruckus

  • Add a “post_synthesis.tcl” to your target’s vivado directory. Here’s an example

  • Here the basic format of the TCL script

    • Add the ruckus helper functions

    ##############################
    # Get variables and procedures
    ##############################
    source -quiet $::env(RUCKUS_DIR)/vivado_env_var.tcl
    source -quiet $::env(RUCKUS_DIR)/vivado_proc.tcl
    
    • Use a “return” if you want to bypass this TCL script

    ######################################################
    # Bypass the debug chipscope generation via return cmd
    # ELSE ... comment out the return to include chipscope
    ######################################################
    #return
    
    • This script gets called after “synth_1” and will open up the synth_1 design

    ############################
    ## Open the synthesis design
    ############################
    open_run synth_1
    
    • Define “ilaName” variable and create the ILA core

    ###############################
    ## Set the name of the ILA core
    ###############################
    set ilaName u_ila_0
    
    ##################
    ## Create the core
    ##################
    CreateDebugCore ${ilaName}
    
    • Define the record depth and other Vivado properties that you want for the ILA core

    #######################
    ## Set the record depth
    #######################
    set_property C_DATA_DEPTH 1024 [get_debug_cores ${ilaName}]
    
    • Define the clock’s netname

    #################################
    ## Set the clock for the ILA core
    #################################
    SetDebugCoreClk ${ilaName} {<clock_netname>}
    
    • Define the probes’ netname

    #######################
    ## Set the debug Probes
    #######################
    
    ConfigProbe ${ilaName} {<probe_netname>}
    ConfigProbe ${ilaName} {<probe_netname>}
    ...
    ...
    ...
    ConfigProbe ${ilaName} {<probe_netname>}
    
    • Write the debug probes into the synth_1 design before impl_1

    ##########################
    ## Write the port map file
    ##########################
    WriteDebugProbes ${ilaName}
    
    • Ruckus will automatically copy the ILA file (.ltx) to the target’s image directory at the end of the build if it exists.