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
Explorer
Explorer
3,230 Views
Registered: ‎08-26-2014

How can I implement a IN/OUT vector having different clocks for the data mover and the hardware accelerator?

Jump to solution

Hello,

 

I have a function which uses input and output vectors. I found out that the best HLS implementation was when using a 100MHz clock. However, if I try to set a 100MHz clock for the hardware and a 200MHz clock for the data movers, I get the following error:

 

 

ERROR: [SDSoC 0-0] INOUT direction for Etop of function control_mmcA_upper is not supported for non-AXIMM port!

 

I dug for information and in the end I found out that I had to use the same clock for the hardware accelerator and for the data mover.

 

Does anyone know how can I implement a input/output vector having different clocks for the data mover and the hardware accelerator?

 

Many thanks,

 

Cerilet

0 Kudos
1 Solution

Accepted Solutions
Observer wsun
Observer
5,441 Views
Registered: ‎05-26-2016

Re: How can I implement a IN/OUT vector having different clocks for the data mover and the hardware accelerator?

Jump to solution

The error message is not related to what you want.

 

SDSoC does not support INOUT arrays yet, unless you use "zero_copy" pragma to infer AXIMM interface. However, AXIMM interface is bound to the HLS core, so you can only use one clock for the data mover (the AXIMM interface in this case) and the HLS core.

 

So please change your code to have arrays on interface INPUT only or OUTPUT only.

0 Kudos
2 Replies
Voyager
Voyager
3,205 Views
Registered: ‎06-24-2013

Re: How can I implement a IN/OUT vector having different clocks for the data mover and the hardware accelerator?

Jump to solution

Hey @cerilet

 

Something like this should work:

 

#includesystemc.h 
#includetlm.h 

using namespace tlm; 

SC_MODULE (sc_foo) {  
	sc_in <bool> clock; 
	sc_in <bool> clock2; 
	sc_in <bool> reset;
	
        ...

	void Accel();
	void Mover(); 
	
	SC_CTOR(sc_foo) { 
		SC_CTHREAD(Accel, clock.pos());
		reset_signal_is(reset, true);
		
		SC_CTHREAD(Mover, clock2.pos());
		reset_signal_is(reset, true);
	}
};

 

Best,

Herbert

-------------- Yes, I do this for fun!
Observer wsun
Observer
5,442 Views
Registered: ‎05-26-2016

Re: How can I implement a IN/OUT vector having different clocks for the data mover and the hardware accelerator?

Jump to solution

The error message is not related to what you want.

 

SDSoC does not support INOUT arrays yet, unless you use "zero_copy" pragma to infer AXIMM interface. However, AXIMM interface is bound to the HLS core, so you can only use one clock for the data mover (the AXIMM interface in this case) and the HLS core.

 

So please change your code to have arrays on interface INPUT only or OUTPUT only.

0 Kudos