UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Visitor metzli_12
Visitor
1,514 Views
Registered: ‎03-16-2016

Volatile signals from custom IP block in vivado SDK

Jump to solution

Hi all

I am creating a costum IP block in vivado HLS, in which I have declared a input signal vector as volatile, because I want to access this vector multiple times. This is the headline of my function:

 

void detector_hw(AXI_STREAM& INPUT_STREAM, AXI_STREAM& OUTPUT_STREAM, int cols, int rows, volatile unsigned int features[9])
{

#pragma HLS INTERFACE bram depth=9 port=features
#pragma HLS RESOURCE variable=feature core=RAM_1P_BRAM
#pragma HLS INTERFACE s_axilite port=rows bundle=bus_control
#pragma HLS INTERFACE s_axilite port=cols bundle=bus_control
#pragma HLS INTERFACE s_axilite port=return bundle=bus_control
#pragma HLS INTERFACE axis port=INPUT_STREAM
#pragma HLS INTERFACE axis port=OUTPUT_STREAM
.
.
.

}


Additionally, I want save the different values of this vector (features) in the BRAM. How can I specify in te SDK program the change of memory address every time that my variable is updeted? I am new in vivado and I do not have a very clear idea of how to do it.


Thanks in advance!

0 Kudos
1 Solution

Accepted Solutions
Moderator
Moderator
2,283 Views
Registered: ‎10-06-2016

Re: Volatile signals from custom IP block in vivado SDK

Jump to solution

Hi @metzli_12

 

The way of reading the variable is just using the same pointer that you provided to the accelerator, but the fact is that you don't have any way to syncrhonize your (PS) access with the IP accesses. At least that's my understanding.

 

Regards

Ibai


Ibai
Don’t forget to reply, kudo, and accept as solution.
0 Kudos
5 Replies
Moderator
Moderator
1,461 Views
Registered: ‎10-06-2016

Re: Volatile signals from custom IP block in vivado SDK

Jump to solution

Hi @metzli_12

 

I'm not really familiar with HLS so I might be missing somethin but I did not really understand your question... can you describe your issue/requirement better?


BTW: This is Embedded SDK board so you could have better feedback on the specific HLS forum board.


Ibai
Don’t forget to reply, kudo, and accept as solution.
0 Kudos
Visitor metzli_12
Visitor
1,447 Views
Registered: ‎03-16-2016

Re: Volatile signals from custom IP block in vivado SDK

Jump to solution

Hi ibaie thank you very much for your answer.


Well, I already created my IP block using volatile data type with the objective to access multiple times to my variable "features" (here we can see a small explanation about volatile qualifier https://www.xilinx.com/support/answers/60434.html ), and my IP block seems to be working well. My question is about how to read this variable in vivado SDK? Is there any flag or register that tells me when my variable is updated or ready to be read? or how can I access this variable at each time it is updated?

 

I hope you can help me, because I don't find a lot information about this.
Thank you again.

0 Kudos
Moderator
Moderator
1,432 Views
Registered: ‎10-06-2016

Re: Volatile signals from custom IP block in vivado SDK

Jump to solution

Hi @metzli_12

 

Thanks for the clarification. I just did a quick search in the UG902 regarding the multi-access pointers and as my suspect has been confirmed with in the following statement.

 

Even this C code is problematic. Using a test bench, there is no way to supply anything but
a single value to d_i or verify any write to d_o other than the final write. Although
multi-access pointers are supported, it is highly recommended to implement the behavior
required using the hls::stream class. Details on the hls::stream class are in HLS
Stream Library in Chapter 2.

I mean although HLS by itself allows you to perform a multiple access to the pointer there is no way to indicate/flag/... the processor on each access just to allow to modify it during IP execution.

 

Again, not an expert on HLS but I think that the documentation is clear on it.

 

Regards

Ibai


Ibai
Don’t forget to reply, kudo, and accept as solution.
0 Kudos
Visitor metzli_12
Visitor
1,426 Views
Registered: ‎03-16-2016

Re: Volatile signals from custom IP block in vivado SDK

Jump to solution

Hi

I had already read that information, but I supposed that if vivado offer the possibility of use volatile variables,then there must be a reliable way to read/write them in vivado SDK.

Thanks a lot for your time and patience.

 

0 Kudos
Moderator
Moderator
2,284 Views
Registered: ‎10-06-2016

Re: Volatile signals from custom IP block in vivado SDK

Jump to solution

Hi @metzli_12

 

The way of reading the variable is just using the same pointer that you provided to the accelerator, but the fact is that you don't have any way to syncrhonize your (PS) access with the IP accesses. At least that's my understanding.

 

Regards

Ibai


Ibai
Don’t forget to reply, kudo, and accept as solution.
0 Kudos