想象一下,我们有一个简单的fpga代码,我想知道是否有任何方法可以在综合后观看特定lookUp表的内容,实际上那些将在SRAM中写入的数据
module test8(a,b,c
);
input a ;
input b ;
output c;
assign c = a&b;
endmodule
答案 0 :(得分:3)
可能性取决于FPGA供应商的工具。
某些工具具有GUI平面视图,其中可以找到使用过的LUT,然后这些LUT可以为LUT的存储器内容附加相关代码。在Altera Queatus Chip Planner中,它可能看起来像:
另一种选择是生成完整设计的网表,通常可以从FPGA工具中写入,然后该网表将包含LUT以及LUT内容的代码。在Altera Quartus生成的Verilog网表中,它可能看起来像:
...
// Location: LABCELL_X10_Y34_N0
cyclonev_lcell_comb \c~0 (
// Equation(s):
// \c~0_combout = ( \a~input0 & ( \b~input0 ) )
.dataa(gnd),
.datab(gnd),
.datac(!\b~input0 ),
.datad(gnd),
.datae(gnd),
.dataf(!\a~input0 ),
.datag(gnd),
.cin(gnd),
.sharein(gnd),
.combout(\c~0_combout ),
.sumout(),
.cout(),
.shareout());
// synopsys translate_off
defparam \c~0 .extended_lut = "off";
defparam \c~0 .lut_mask = 64'h000000000F0F0F0F;
defparam \c~0 .shared_arith = "off";
// synopsys translate_on
...
请注意,GUI视图显示AND门不是仅使用一个简单的LUT实现的,因为只要遵守任何时序和其他要求,工具就可以自由地实现它。 p>
但最后,设计人员通常会忽略有关LUT编码的具体实现和注意事项......除非是在特殊的调试情况下。
答案 1 :(得分:1)