07-23-2020 04:38 AM
Hello,
I'm currently developing a TCL library to deal with vivado on CLI mode. Sometimes i work with projects (VHDL) that contains ILA. The steps I use to set/add ILA are the following:
- Add dont_touch and mark_debug attributes to my VHDL code.
- Synthesize the design.
- Open synthesized design and select "set up debug"
- Select all the signals i need and wait to the wizard finish and updates the TCL commands to my ${design_name}_ila.xdc file.
The last step vivado writes the probes like this: set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe5]
connect_debug_port u_ila_0/probe5 [get_nets [list {u_user/u_userctrl/u_ctrl_rp/u_rp_monitor/b2_beam_ra[3]} {u_user/u_userctrl/u_ctrl_rp/u_rp_monitor/b2_beam_ra[2]} {u_user/u_userctrl/u_ctrl_rp/u_rp_monitor/b2_beam_ra[1]} {u_user/u_userctrl/u_ctrl_rp/u_rp_monitor/b2_beam_ra[0]}]]
So when I start to work with my TCL library, the flow is broken and i get that error in the prompt : list element in braces followed by "]]" instead of space
so I have to replace strings from }]] to } ]]
Before I developed that library i had a unique script that do something similar to the library and I didn't have this kind of issue.
Any ideas?
09-07-2020 03:40 AM
Hi @jocorso
thanks for sharing the testcase!
I've been able to reproduce the issue, even with the latest internal alpha version of 2020.2.
Therefore I will file an change request to get this bug fixed.
I cannot give any guarantees when this will be fixed, but I will try to keep you up-to-date.
Best regards
Dries
08-10-2020 09:10 AM
Hi @jocorso
}]] should work just fine.
What message do you get when you execute these commands in the Tcl console and you have the synthesized design open?
Could it be the file standard and carriage return not being set correctly? This can happen when you create your file in Windows but you run the tools in Linux...
Best regards
Dries
08-14-2020 01:29 AM
Hi @driesd
Let's say I run vivado in tcl mode with this command(windows) : %VIVADO_PATH%\bin\vivado -nolog -nojournal -notrace -mode tcl -source ./tcl/lib/vds/vds_start.tcl
and I have this line included at my ila.xdc file: connect_debug_port u_ila_0/probe2 [get_nets [list {u_hal/u_clkmanager/u_freq_monitor/u_freq_cnt/b2_cnt_ra[0]_0[*]} ]]
The TCL library flow works normally.
But if I modify the line (anytime) included at my ila.xdc file as this: connect_debug_port u_ila_0/probe2 [get_nets [list {u_hal/u_clkmanager/u_freq_monitor/u_freq_cnt/b2_cnt_ra[0]_0[*]}]]
The library flow stops with this message:
Please select option: list element in braces followed by "]]" instead of space
Vivado%
So, when i create ILA.xdc file with vivado GUI, I MUST replace all "}]]" by "} ]]"
I have this problem in both OS (windows and linux).
08-14-2020 02:47 AM
Hi @jocorso
I'm still not able to reproduce what you see.
I've created a small testcase using the wavegen example design and I use almost exactly the same syntax as you without issue:
connect_debug_port u_ila_0/probe0 [get_nets [list {uart_rx_i0/uart_rx_ctl_i0/send_resp_type[0]_i_5[*]}]]
I tried with Vivado 2020.1 on both CentOS7 and Ubuntu 18.
I don't think it matters since you can reproduce on both Linux and Windows, but what version of Vivado are you using and what Linux OS does your machine have?
Could you share a testcase?
Please find my 2020.1 testcase in attachment. If you want to use an older Vivado version: it's the wavegen example design. Just use my wave_gen_timing.xdc.
Best regards
Dries
08-14-2020 03:05 AM
Hi @driesd
Some years ago I made one TCL script to handle vivado design flow from a CLI menu. With several options as create project, delete project, synthesize, implement, enable LSF, set incremental compile, etc.
Due to the evolution of this TCL script in different projects (with specific functions) i wanted to unify functions that people creates during these years, and I decided to create a TCL library with namespaces and functions, that calls a CLI menu with that options. This issue appears when we start to use the TCL library.
For company IP reasons, i can't share an example project with the library in that community, but we have an NDA with xilinx so I could share with you in a private way.
The only place in that library I call XDC files is in that procedure.
# ** Procedure to set constraints
#----------------------------------------------------------------------
proc setConstraints { design_name } {
set xdcSuffix { _ILA _PINOUT _TP }
foreach i $xdcSuffix {
set filePath "../cfg/${design_name}${i}.xdc"
if { [file exists $filePath] } {
add_files -fileset [get_filesets constrs_1] $filePath
if { ! [string compare -nocase $i "_PINOUT"] } {
set_property used_in_synthesis false [get_files "${design_name}${i}.xdc"]
}
if { ! [string compare -nocase $i "_ILA"] } {
set_property used_in_synthesis false [get_files "${design_name}${i}.xdc"]
set_property target_constrs_file $filePath [current_fileset -constrset]
}
} else {
puts "The ${design_name}${i}.xdc doesn't exists, please create it"
incr error
return error
}
}
}
Best Regards
08-14-2020 03:31 AM
OK, I've sent you a private message.
Best regards
Dries
09-07-2020 03:40 AM
Hi @jocorso
thanks for sharing the testcase!
I've been able to reproduce the issue, even with the latest internal alpha version of 2020.2.
Therefore I will file an change request to get this bug fixed.
I cannot give any guarantees when this will be fixed, but I will try to keep you up-to-date.
Best regards
Dries