cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Observer
Observer
731 Views
Registered: ‎05-22-2018

Vivado waveform view: tcl command to create a virtual bus from slice of an ILA brobe bus

Jump to solution

Within a waveform view showing results from an ILA capture, a bus, let's say sig_a[255:0] is displayed. To create smaller chunks of this large bus one can create a virtual bus by marking the busses signals sig_a[63:0] within the bus and right-click, select new virtual bus, change the virtul buses name to, let's say virt_sig_a_0, and here we are. The bus virt_sig_a_0 now contains exactly the signals that are also present as sig_a[63:0].

Now, I need to do this a lot and like to create a tcl script doing this for me. I did find the add_wave_virtual_bus function, but nothing about how to assign these signals to the virtual bus within the Vivado TCL Command UGs nor while trying different approaches to tackle this by checking properties on multiple object, e.g. ILA probes, signals, the virtual bus itself, the wave config, ...

Usually Vivado kindly tells us the way to go by reporting the tcl equivalent of our GUI interaction, but not in this case.

Can anyone provide a pointer to where to look at? Is this possible at all?

PS: This project uses Vivado 2018.3.

1 Solution

Accepted Solutions
Highlighted
Moderator
Moderator
631 Views
Registered: ‎02-09-2017

Re: Vivado waveform view: tcl command to create a virtual bus from slice of an ILA brobe bus

Jump to solution

Hi @ulmle,

I found an easier option to create a virtual bus (this one is actually called User Defined Probe) and adding a slice of another probe into it. Please see the commands below:

create_hw_probe -map {probe0[7:5]} user_probe[2:0] [get_hw_ilas hw_ila_1]

add_wave -into {hw_ila_data_1.wcfg} -radix hex { {user_probe} }

The first command creates a "virtual probe" and maps the bits 7:5 from the original probe0 into the bits 2:0 of the virtual probe.

The second command just adds this new virtual probe into the canvas.

The result can be seen in the image below:

ILA_create_user_defined_probe.PNG

One observation is, in the command create_hw_probe, instead of using the name of the original bus (in the image above it's design_1_i/Q_0) you use the name of the probe (probe0 in this case).

Pleas let us know if that solves the problem.

Thanks,

Andre Guerrero

Product Applications Engineer

-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------

View solution in original post

4 Replies
Highlighted
Moderator
Moderator
670 Views
Registered: ‎02-09-2017

Re: Vivado waveform view: tcl command to create a virtual bus from slice of an ILA brobe bus

Jump to solution

Hi @ulmle,

I just made a quick test here. I first created my virtual bus with the command:

add_wave_virtual_bus my_virtual_bus

I see it was succesfuly added to the waveform canvas. Next, I use the following command to add waves into the bus:

add_wave -into my_virtual_bus -radix hex { {GPIO_SW_C_IBUF} }

In this case, the signal GPIO_SW_C_IBUF was a probe already existent in the ILA.

You can also rename the wave with the command:

add_wave -name added_wave -into my_virtual_bus -radix hex { {GPIO_SW_C_IBUF} }

Please see the image below for the final result.

ILA_create_virtual_bus.PNG

Please let us know if that helps you.

 

Thanks,

Andre Guerrero

Product Applications Engineer

-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
Highlighted
Observer
Observer
655 Views
Registered: ‎05-22-2018

Re: Vivado waveform view: tcl command to create a virtual bus from slice of an ILA brobe bus

Jump to solution

Hi @anunesgu,

thank you for your reply and your minimal example!

This is actually what I did achieve, but not yet the solution. The key part is to add a slice of a bus to the virtual bus. Please see my screenshot below with what can be done manually. It shows a virtual bus s_pc_numTotalPacketsTxApp_3 containing bits 95:64 of the original bus s_pc_numTotalPacketsTxApp[95:0].

Screenshot_20190801_103516_virtual_bus.png

Probably it is acceptable if another hierarchy is introduced within the virtual bus as shown in your screenshot, but the slicing is essential.

Thanks again!

0 Kudos
Highlighted
Moderator
Moderator
632 Views
Registered: ‎02-09-2017

Re: Vivado waveform view: tcl command to create a virtual bus from slice of an ILA brobe bus

Jump to solution

Hi @ulmle,

I found an easier option to create a virtual bus (this one is actually called User Defined Probe) and adding a slice of another probe into it. Please see the commands below:

create_hw_probe -map {probe0[7:5]} user_probe[2:0] [get_hw_ilas hw_ila_1]

add_wave -into {hw_ila_data_1.wcfg} -radix hex { {user_probe} }

The first command creates a "virtual probe" and maps the bits 7:5 from the original probe0 into the bits 2:0 of the virtual probe.

The second command just adds this new virtual probe into the canvas.

The result can be seen in the image below:

ILA_create_user_defined_probe.PNG

One observation is, in the command create_hw_probe, instead of using the name of the original bus (in the image above it's design_1_i/Q_0) you use the name of the probe (probe0 in this case).

Pleas let us know if that solves the problem.

Thanks,

Andre Guerrero

Product Applications Engineer

-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------

View solution in original post

Highlighted
Observer
Observer
604 Views
Registered: ‎05-22-2018

Re: Vivado waveform view: tcl command to create a virtual bus from slice of an ILA brobe bus

Jump to solution

Hi @anunesgu,

this actually is what I want to do, thank you very much!

I came across the user probes before, but did not realize that the mapping could be modified.

So, I think this is the solution as I was able to reproduce this within my script.

Thank you very much!