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: 
8,641 Views
Registered: ‎11-12-2013

Enforcing parallelism from existing software design

Jump to solution

As part of a larger project we have defined a parallel design, which we want to translate into an FPGA design.

 

The Vivado tools are aimed at parallelizing sequential code, but we want to ahcieve the parallelization already described from our design. We are well aware that the synthesization process parallelizes the code, but is it possible to write C-code in a specific way that enforces our existing design?

 

For the interested: This task is part of a larger project, in which we have defined a large CSP network which we want to automatically translate into hardware.

 

Thanks in advance

/Frisch

0 Kudos
1 Solution

Accepted Solutions
Adventurer
Adventurer
13,019 Views
Registered: ‎12-18-2012

Re: Enforcing parallelism from existing software design

Jump to solution

You can run multiple copies of the identical functions or different functions within a top function. Given correct directives and if the tasks are not interdependent vivado should be ab le schedule them in parallel. The top fuction would just be the wrapper for the indivudual tasks. 

 

0 Kudos
8 Replies
Xilinx Employee
Xilinx Employee
8,638 Views
Registered: ‎07-11-2011

Re: Enforcing parallelism from existing software design

Jump to solution

Hi,

 

Vivado HLS can be one option for your need, please go throug below UG for more details..

 

http://www.xilinx.com/support/documentation/sw_manuals/xilinx2013_3/ug902-vivado-high-level-synthesi...

 

Hope this helps.

 

 

Regards,

Vanitha.

---------------------------------------------------------------------------------------------
Please do google search before posting, you may find relavant information.
Mark the post - "Accept as solution" and give kudos if information provided is helpful and reply oriented
0 Kudos
8,630 Views
Registered: ‎11-12-2013

Re: Enforcing parallelism from existing software design

Jump to solution

Thank you for your swift response.

 

However, after briefly looking through the document, we still find that all parallelization are based on sequential C/C++ programs. Instead we want to define several 'top-level' processes.

 

A simple example could be a Producer process, generating data for a Consumer process -- both of which are executed in parallel. This is easy to do sequentially and then have Vivado HLS parallelize it during synthesization, but as we want to enforce our existing design we want to define the C/C++ code with multiple parallel 'top-level' processes. 

 

Is this doable and if so, where can we find an example of this?

Thanks again

/Frisch

0 Kudos
Xilinx Employee
Xilinx Employee
8,621 Views
Registered: ‎07-11-2011

Re: Enforcing parallelism from existing software design

Jump to solution

Hi,

 

I do not think HLS can have multiple top level processes at once, moved it appropriate board where it can be answered better.

 

 

 

Regards,

Vanitha.

---------------------------------------------------------------------------------------------
Please do google search before posting, you may find relavant information.
Mark the post - "Accept as solution" and give kudos if information provided is helpful and reply oriented
0 Kudos
Adventurer
Adventurer
13,020 Views
Registered: ‎12-18-2012

Re: Enforcing parallelism from existing software design

Jump to solution

You can run multiple copies of the identical functions or different functions within a top function. Given correct directives and if the tasks are not interdependent vivado should be ab le schedule them in parallel. The top fuction would just be the wrapper for the indivudual tasks. 

 

0 Kudos
8,579 Views
Registered: ‎11-12-2013

Re: Enforcing parallelism from existing software design

Jump to solution

Thank you.

 

As a follow up: what is the easiest way to assert that Vivado HLS scheduled the tasks the way we intended it to?

0 Kudos
Adventurer
Adventurer
8,575 Views
Registered: ‎12-18-2012

Re: Enforcing parallelism from existing software design

Jump to solution

Well you can always see that from the perfomance of the synthesized design. If you now what to expect you can immetately conlcuded things on the scheduling just by the latency. Additionally HLS includes a scheduling graph viewer to see exactly how the tool scheduled the various operations and how long they take. 

 

Xilinx Employee
Xilinx Employee
8,572 Views
Registered: ‎08-17-2011

Re: Enforcing parallelism from existing software design

Jump to solution

Something that you need to read about in UG902 is the DATAFLOW pipelining.

 

And another comment is that if the functions that you want to run in parallel are completely independant, then they should be made independant.. so they can be used really independantly in the system.

- Hervé

SIGNATURE:
* New Dedicated Vivado HLS forums* http://forums.xilinx.com/t5/High-Level-Synthesis-HLS/bd-p/hls
* Readme/Guidance* http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369

* Please mark the Answer as "Accept as solution" if information provided is helpful.
* Give Kudos to a post which you think is helpful and reply oriented.
0 Kudos
8,568 Views
Registered: ‎11-12-2013

Re: Enforcing parallelism from existing software design

Jump to solution

Thank you both :)

 

You gave us some valuable hints and some food for thought and our project is coming along beautifully.

We appreciate the fast responses a lot.

0 Kudos