Vivado HLS C/RTL联合仿真时间一直增加,无法自动结束问题

用Vivado HLS做了FIFO仿真,并将端口设置为ap_fifo类型,C仿真没有问题,代码如下:

void array_FIFO (int32 *fifo_w ) {
#pragma HLS INTERFACE ap_fifo port=fifo_w
	int i;

	for (i=0;i<1024;i++) {
		fifo_w[i] = i;
	}
}

但C/RTL时间一直增加且无法自动结束,终端提示如下:

// RTL Simulation : "Inter-Transaction Progress" ["Intra-Transaction Progress"] @ "Simulation Time"
////////////////////////////////////////////////////////////////////////////////////
// RTL Simulation : 0 / 1 [0.00%] @ "110000"
// RTL Simulation : 0 / 1 [975609.76%] @ "40000118000"

手动停止仿真后Wave View只有一个周期的波形。

Vivado HLS C/RTL联合仿真时间一直增加,无法自动结束问题_第1张图片

难道是我的端口类型约束有错?但是指针参数明明可以约束为fifo端口的,把指针参数换成数组参数:

void array_FIFO (int32 fifo_w[1204] ) {
#pragma HLS INTERFACE ap_fifo port=fifo_w
	int i;

	for (i=0;i<1024;i++) {
		fifo_w[i] = i;
	}
}

怀疑是fifo深度没有指定,造成仿真一直持续,于是还把参数改为指针类型,在Directive里增加深度:

#pragma HLS INTERFACE ap_fifo depth=1024 port=fifo_w

再次仿真,成功:

Vivado HLS C/RTL联合仿真时间一直增加,无法自动结束问题_第2张图片

但我的问题是,我手动点了停止仿真后,Wave viewer应该显示出已经仿真出来的波形,不应该只显示一个周期的呀,已经仿真完成的波形给吃了吗?

你可能感兴趣的:(vivado,hls,fpga)