cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
Explorer
Explorer
3,594 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
Observer
5,805 Views
Registered: ‎05-26-2016

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.

View solution in original post

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

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
Observer
5,806 Views
Registered: ‎05-26-2016

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.

View solution in original post

0 Kudos