struct -> how to add to SignalTap ? - struct -> how to add to SignalTap ?
Hi All, Is it possible to add the struct signals to SignalTap? I did a search for the struct signals in the SignalTap GUI, but nothing was returned... Thanks!
Replies:
Re: struct -> how to add to SignalTap ?
Thank you for acknowledge the solution provided. I’m glad that your question has been addressed, I now transition this thread to community support. If you have a new question, Please login to ‘ https://supporttickets.intel.com’ , view details of the desire request, and post a feed/response within the next 15 days to allow me to continue to support you. After 15 days, this thread will be transitioned to community support. The community users will be able to help you on your follow-up questions. Thank you. Best Regards, Richard Tan p/s: If any answer from the community or Intel Support are helpful, please feel free to give best answer or rate 4/5 survey.
Replies:
Re: struct -> how to add to SignalTap ?
OK, you got me there But still, like I said, the filter shows what's tappable in your code.
Replies:
Re: struct -> how to add to SignalTap ?
In fact, the Analyze & Elaborate stage eliminates (throws out) the signals which drive nothing... So you cannot say there is no an optimization in this stage.
Replies:
Re: struct -> how to add to SignalTap ?
That's not what Analyze & Elaborate does. That first stage of the compiler simply checks all the code and builds the project hierarchy. No optimization has been performed yet. When you tap a pre-synthesis signal, the filter is showing what is tappable in the HDL code itself before any optimizations.
Replies:
Re: struct -> how to add to SignalTap ?
In my opinion, the SignalTap is built to tap nets, not signals defined in HDL. So, if two signals are assigned to the same net, the Analyze & Elaborate stage will eliminate one without leaving a choice to SignalTap at all...
Replies:
Re: struct -> how to add to SignalTap ?
Based on your example, I can only guess that physical signal names normally take priority (i0 and i1 are identical to ab.a and ab.b, respectively), but across a hierarchical boundary, if there is no physical signal name, the tool uses the struct because it has no choice. Try adding wires and assign statements inside sub to test this theory.
Replies:
Re: struct -> how to add to SignalTap ?
"why is it still an issue that you can't tap the struct itself" - I don't know why... this is why I'm asking Here is a simple example - the struct named 'ab' could not be seen/tapped in the 'top' hierarchy by SignalTap (only signals i0 and i1 could be tapped/seen): //////////////////////////////////////////////////////////////////////////////////////////////////// package pkg; typedef struct packed { logic a; logic b; } ab_s; endpackage //////////////////////////////////////////////////////////////////////////////////////////////////// module top import pkg::*; ( input i0, input i1 ); ab_s ab; assign ab.a = i0; assign ab.b = i1; sub sub_i ( .ab (ab), .out() ); endmodule //////////////////////////////////////////////////////////////////////////////////////////////////// module sub import pkg::*; ( input ab_s ab, output logic out ); assign out = ab.a^ab.b; endmodule But inside of the 'sub' hierarchy, the signals ab.a and ab.b could be tapped/seen by the SignalTap.
Replies:
Re: struct -> how to add to SignalTap ?
I don't understand. You can tap the exact signals that are in your struct, so why is it still an issue that you can't tap the struct itself? The signals are physical. The struct is for organizing in the code with no specific relation to the hardware. If you go into the Technology Map Viewer, I will bet you will not see the struct names there either, further confirming they are not physical. Signal Tap can only tap actual signals.
Replies:
Re: struct -> how to add to SignalTap ?
no, the issue is still open... The signals, which have been declared as structs, could not be seen by SignalTap ...
Replies:
Re: struct -> how to add to SignalTap ?
So doesn't that solve your problem? They're the same thing.
Replies:
Re: struct -> how to add to SignalTap ?
yes, the right-hand signals could be tapped... but the struct itself cann't ...
Replies:
Re: struct -> how to add to SignalTap ?
Do you able to get the result you wanted by following sstrell's suggestion in tapping the right hand side signals? Best Regards, Richard Tan p/s: If any answer from the community or Intel Support are helpful, please feel free to give best answer or rate 4/5 survey.
Replies:
Re: struct -> how to add to SignalTap ?
Yes, so as I said, why don't you just tap the right hand side signals?
Replies:
Re: struct -> how to add to SignalTap ?
probably I've misled you ... the right-side signals (declared as logic or wire ) do appear in the search, but the left-side signals (declared as struct ) do not appear...
Replies:
Re: struct -> how to add to SignalTap ?
I don't understand. So the right hand side signals from your assignments appear in the Node Finder but you can't tap them? What happens when you try to tap them?
Replies:
Re: struct -> how to add to SignalTap ?
yes.... cannot tap ....
Replies:
Re: struct -> how to add to SignalTap ?
So can't you just tap those? The structure is just providing organization in your code. It's clearly not the physical names of the signals that get synthesized.
Replies:
Re: struct -> how to add to SignalTap ?
yes.... only the struct is not shown ....
Replies:
Re: struct -> how to add to SignalTap ?
Does the filter show the signals on the right side of your assignments like hdmi_rx_de?
Replies:
Re: struct -> how to add to SignalTap ?
yes, I searched for "*hdmi*" and yes I performed the Analysis & Elaboration stage previously
Replies:
Re: struct -> how to add to SignalTap ?
What's your filter for the search? Did you try simply "*hdmi*"? And I'm assuming you've performed at least Analysis & Elaboration on the project.
Replies:
Re: struct -> how to add to SignalTap ?
tried... did not work...
Replies:
Re: struct -> how to add to SignalTap ?
I've never tried this, but maybe the tool just sees them as busses. Can you tap hdmi_rx_if but not the individual bits by unique name?
Replies:
Re: struct -> how to add to SignalTap ?
yes, I used this struct: typedef struct packed { logic clk; logic rst; logic de; logic hsync; logic vsync; } hdmi_if_s; here are the declared signals: hdmi_if_s hdmi_rx_if; hdmi_if_s hdmi_tx0_if; hdmi_if_s hdmi_tx1_if; here are the signal assignments: assign hdmi_rx_if.rst = reset; assign hdmi_rx_if.clk = hdmi_rx_vid_clk; assign hdmi_rx_if.de = hdmi_rx_de; assign hdmi_rx_if.hsync = hdmi_rx_hsync; assign hdmi_rx_if.vsync = hdmi_rx_vsync; assign hdmi_tx0_if.rst = reset; assign hdmi_tx0_if.clk = hdmi_tx0_vid_clk; assign hdmi_tx0_if.de = hdmi_tx0_de; assign hdmi_tx0_if.hsync = hdmi_tx0_hsync; assign hdmi_tx0_if.vsync = hdmi_tx0_vsync; assign hdmi_tx1_if.rst = reset; assign hdmi_tx1_if.clk = hdmi_tx_vid_clk; assign hdmi_tx1_if.de = hdmi_tx_de; assign hdmi_tx1_if.hsync = hdmi_tx_hsync; assign hdmi_tx1_if.vsync = hdmi_tx_vsync; In SignalTap, I searched for the signals with the "SignalTap: pre-synthesis" option, but they did not appear there ...
Replies:
Re: struct -> how to add to SignalTap ?
What is a struct signal? Do you mean like a structure in C code? - 2023-01-04
external_document