cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
ejcspii
Visitor
Visitor
2,048 Views
Registered: ‎05-25-2018

ERROR: [XFORM 203-801]

I'm trying to get the single complex FFT example supplied with HLS to work. I managed to get past the broken tcl script that accompanies it. However, synthesis (of the unmodified, Xilinx-supplied example!) fails as follows under 2017.4:

 

INFO: [XFORM 203-1101] Packing variable 'in' (src/fft_top.cpp:123) into a 32-bit variable.
INFO: [XFORM 203-1101] Packing variable 'out' (src/fft_top.cpp:124) into a 32-bit variable.
INFO: [XFORM 203-712] Applying dataflow to function 'fft_top' (src/fft_top.cpp:122), detected/extracted 3 process function(s):
     'dummy_proc_fe'
     '_codeRepl__proc'
     'dummy_proc_be'.
INFO: [HLS 200-111] Finished Pre-synthesis Time (s): cpu = 00:00:22 ; elapsed = 00:00:12 . Memory (MB): peak = 489.848 ; gain = 141.785 ; free physical = 24720 ; free virtual = 61404
WARNING: [XFORM 203-631] Renaming function 'hls::fft<config1>' to 'fft<config1>' (/opt/Xilinx/Vivado/2017.4/common/technology/autopilot/hls_fft.h:1490)
ERROR: [XFORM 203-801] Interface mode 'ap_auto' on the actual argument 'fft_status.data.V' (src/fft_top.cpp:136) is incompatible with the mode 'ap_fifo' on the formal argument 'fft_status.data.V' for function '_codeRepl__proc' . Please consider to duplicate the function to avoid mode conflicts.
ERROR: [XFORM 203-801] Interface mode 'ap_auto' on the actual argument 'fft_config.data.V' (src/fft_top.cpp:135) is incompatible with the mode 'ap_fifo' on the formal argument 'fft_config.data.V' for function '_codeRepl__proc' . Please consider to duplicate the function to avoid mode conflicts.
ERROR: [HLS 200-70] Failed building synthesis data model.

 

Did anyone encounter the same?

 

BTW the testbench coming with this example needs an overhaul, too. It is mixing C and C++ I/O, to name one issue.

0 Kudos
3 Replies
ejcspii
Visitor
Visitor
2,023 Views
Registered: ‎05-25-2018

Follow-up: as the rror message suggests,

#pragma HLS INTERFACE ap_fifo port=config solves the problem but I'm still unsure why it arises.
0 Kudos
ejcspii
Visitor
Visitor
1,972 Views
Registered: ‎05-25-2018

Hello,

 

May I ask if there is an official position as to why an "official" example is not working as expected, and what is the best remedy to the problem?

Thanks,
Peter

 

0 Kudos
weixiao
Visitor
Visitor
1,382 Views
Registered: ‎02-14-2019

void dummy_proc_fe(
bool direction,

config_t* config,
// cmpxDataIn in[FFT_LENGTH],
float in_re[FFT_LENGTH],
float in_im[FFT_LENGTH],
cmpxDataIn out[FFT_LENGTH])
{
int i;
#pragma HLS interface ap_fifo port=config
config->setDir(direction);
config->setSch(0x2AB);
for (i=0; i< FFT_LENGTH; i++){
// out[i] = in[i];
out[i].real(in_re[i]);
out[i].imag(in_im[i]);
}
}

void dummy_proc_be(
status_t* status_in,
bool* ovflo,
cmpxDataOut in[FFT_LENGTH],
float out_re[FFT_LENGTH],
float out_im[FFT_LENGTH]
/*cmpxDataOut out[FFT_LENGTH]*/)
{
int i;
#pragma HLS interface ap_fifo port=status_in
for (i=0; i< FFT_LENGTH; i++){
// out[i] = in[i];
out_re[i] = in[i].real();
out_im[i] = in[i].imag();
}
*ovflo = status_in->getOvflo() & 0x1;
}

You can add the red statements in your void Function 
thanks,
Jeff

0 Kudos