描述
以下用于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 | 压缩 |
没有回复内容