作者:Ramsey Wang 来源:易灵思FPGA技术交流
(1)查看综合后的原语
在outflow <project>.map是网表对FPGA资源的映射。比如gbuf,dspt等原语的是怎样适配的,可以从这里找到。下面是一个乘加在原语上的映射情况。
module top(a, b,c, clk, o);
input signed [17:0] a;
input signed [17:0] b;
input signed [17:0] c;
input clk;
output signed [35:0] o;
wire signed [35:0] p;
(* syn_use_dsp = "yes" *) reg [35:0] sum;
assign p = a * b;
always @(posedge clk) begin
sum <= p + c;
end
assign o = sum;
endmodule
(2)latch的检查
如果使用了latch,在<project>.map.out文件中会有提示:
WARNING: latch inferred for net 'c' (VERI-2580)
WARNING: latch inferred for net 'o[1]' (VERI-2580)
latch警告,efinity会用Lut来实现latch效果,而且会非常占用LUT,所以要尽量避免使用它。
(3)编译告警信息列表
在outflow 文件夹中会生成一个EFX.warn.log文件。当我们遇到程序运行异常或者模块被优化时,可以查看该文件的指示信息。
(4)布线资源使用情况。
xxx.map.rpt文件
各个模块布局布线后的资源使用情况 。
(5)时序约束生效检查
在编译完成后outflow文件夹<项目名 >.place.out搜索“SDC”关键字可以查看相关的SDC约束是否被软件忽略。
例如:由于添加了set_false_path之后时序问题依然存在,我就搜索sdc:56,因为我的约束在56行,发现了下面的提示。
WARNING : [SDC D:/FPGA_Prj/03_Ti60F225_DemoBoard/Prj_demo/13_carrychin_demo/carrychain/carrychain_prj_v2/carrychain_prj.pt.sdc:56] Unable to run 'set_false_path' constraint due to warnings found