Jump to content
mohitnegi

data structure with link list

Recommended Posts

AFAIK for synthesis you need to stick to fixed size arrays. I would suggest you read up what memory templates vendors recommend before you start coding. You can read the synthesis guides for Vivado, Fossy and probably some others on the web.  Be prepared to instantiate some VHDL/Verilog code if you need more complex multi port memory models.

Good luck,

Hans.
www.ht-lab.com

Share this post


Link to post
Share on other sites

AFAIK for synthesis you need to stick to fixed size arrays. I would suggest you read up what memory templates vendors recommend before you start coding. You can read the synthesis guides for Vivado, Fossy and probably some others on the web.  Be prepared to instantiate some VHDL/Verilog code if you need more complex multi port memory models.

Good luck,

Hans.

www.ht-lab.com

 

Hans is absolutely right. As a linked list cannot be implemented in hardware, they cannot be used in synthesis.

In a similar vein, using SC_SPAWN, SC_JOIN macros to instantiate/close dynamic processes is also unwise

as dynamic processes can never be implemented in real hardware.

Share this post


Link to post
Share on other sites

hey guys ,,

 

similarily are both SC_THREAD and SC_MODULe synthesizable ???

if yes how does a infinite while loop works on SC_THREAD ....

 

and another ques is it advisable to use dynamic senstivity in process for synthesis....

 

thanks

Mohit Negi

Share this post


Link to post
Share on other sites

Hi Mohit,

 

This is described in section 9.4 of the SystemC Synthesizable Subset document:

 

SC_THREAD is non-synthesizable. SC_THREAD is blocking and can contain wait()
statements that makes the process to wait on any signals in the sensitivity list. This also means
an SC_THREAD process can be broken into stages by wait() statements. The non-blocking
property of SC_METHOD makes it possible for synthesizers to synchronize input,
computation and output. However in SC_THREAD this synchronization relationship is
broken because it is hard for the synthesizer to synchronize inputs specified in wait()
statements at different stages. Such input signal could be a clock or a reset. Without the
support of reset_signal_is() in SC_THREAD it is hard for a synthesizer to synthesize the
behaviour properly.

 

Both Fossy and Vivado do not support SC_THREAD, not sure about the high-end Mentor's Catapult-C and Forte Cynthesizer which might support some constructs.

 

Regarding Dynamic Sensitivity, everytime you see the word Dynamic think about how this would translate to hardware. Leaving Dynamic Reconfigurable Hardware to one side in general everything you code must be static.

 

Regards,

Hans.

http://www.ht-lab.com

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×