用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只有一个周期的波形。
难道是我的端口类型约束有错?但是指针参数明明可以约束为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
再次仿真,成功:
但我的问题是,我手动点了停止仿真后,Wave viewer应该显示出已经仿真出来的波形,不应该只显示一个周期的呀,已经仿真完成的波形给吃了吗?