2012.4 - Vivado HLS - 大型乘法器:XST DSP使用与报告的DSP不匹配,时序失败

描述

以下用于7系列的Vivado HLS代码使用两个DSP,使用Vivado Synthesis满足时序要求(低于4 ns)。

但是,当针对早期的系列FPGA(如Virtex-6)时,使用的综合工具是XST,综合网表/实现使用四个DSP并且不满足时序(超过5 ns)。

有什么问题?

#include“mult.h”
void mult(in_a_t in_a,in_b_t in_b,out_p_t out_p [1])
{
out_p [0] = in_a * in_b;
}

withmult.h: -

#include <ap_int.h>
typedef ap_int <18> in_a_t;
typedef ap_int <42> in_b_t;
typedef ap_int <60> out_p_t;
void mult(in_a_t in_a,in_b_t in_b,out_p_t out_p [1]);

这是由于XST和Vivado Synthesis如何从生成的RTL推断DSP之间的差异。

这可以通过以下C代码解决XST:

ap_uint <17> x = in_b;
ap_int <42-17> y = in_b >> 17;
out_p [0] = in_a * x +((in_a * y)<< 17);

在Vivado HLS中使用此手动分解可提供更好的XST性能,因为直接在硬件中支持17的移位并且将有效地实现。

这是XST的一个问题 - 给出相同的RTL等效代码,XST将生成相同的四个DSP。

XST的此问题将无法解决。

自己尝试使用附带的包含此示例的zip。

1.在Vivado HLS命令提示符下,使用PATH类型中提供的Xilinx工具:

vivado_hls run_hls_vanilla.tcl

这将在Virtex-6和Virtex-7 FPGA上运行默认的“vanilla”代码;您可以使用run_hls_workaround.tcl再次运行VHLS

2.比较结果:导出过程的结果是

PROJ_NAME \ SOL_NAME \ IMPL \报告\ RTL_LANG \ TOP_NAME_export.rpt

所以,例如:

mult_vanilla \ solution_v6 \ IMPL \报告\的Verilog \ mult_export.rpt

您可以运行此命令

diff mult_vanilla \ solution_v6 \ impl \ report \ verilog \ mult_export.rpt mult_vanilla \ solution_v7 \ impl \ report \ verilog \ mult_export.rpt -y

(请注意:diff是在Xilinx工具启用的命令行工具集中 - 而不是Vivado HLS命令提示工具)

diff mult_vanilla \ solution_v6 \ impl \ report \ verilog \ mult_export.rpt mult_vanilla \ solution_v7 \ impl \ report \ verilog \ mult_export.rpt -y

实现工具:Xilinx ISE14.4 |实施工具:Xilinx Vivado v2012.4
器件目标:xc6vsx315tff1759-1 |器件目标:xc7vx330tffg1761-1
报告日期:2月11日星期一15:21:38 GMTST 2013 |报告日期:2013年2月11日星期一15:32:19 GMTST 2013
<

#===资源使用===#===资源使用===
SLICE:15 | SLICE:19
LUT:33 | LUT:13
FF:83 FF:83
DSP:4 | DSP:2
BRAM:0 BRAM:0
SRL:9 | SRL:0
#===最后时间===#===最后时间===
需要CP:需要4.000 CP:4.000
CP达到:5.423 | CP达到:2.015
时间没有达到|时间安排满足

diff mult_workaround \ solution_v6 \ impl \ report \ verilog \ mult_export.rpt mult_workaround \ solution_v7 \ impl \ report \ verilog \ mult_export.rpt -y

实现工具:Xilinx ISE14.4 |实施工具:Xilinx Vivado v2012.4
器件目标:xc6vsx315tff1759-1 |器件目标:xc7vx330tffg1761-1
报告日期:2月11日星期一15:21:40 GMTST 2013 |报告日期:2013年2月11日星期一15:33:00 GMTST 2013
<

#===资源使用===#===资源使用===
SLICE:21 |切片:25
LUT:48 | LUT:39
FF:111 FF:111
DSP:2 DSP:2
BRAM:0 BRAM:0
SRL:0 SRL:0
#===最后时间===#===最后时间===
需要CP:需要4.000 CP:4.000
CP达到:2.116 | CP达到:2.222
时间遇到时间满足

附件

相关附件

名称文件大小文件类型
AR54111_VHLS_mult_XST_workaround.zip 1 KB 压缩
编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-07-31 08:38:08 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它