FPGA如何在综合后推断设计中的VHDL常量

How FPGA inferrs the VHDL constatns in the Design after synthesis

合成后我无法识别 FPGA 中的 VHDL 常量。 Post 综合后,我能够在网表中识别我的逻辑。但不适用于 Constant 参数。是否真的会在 FPGA 中推断常量?

合成器简化了您的设计。
合成器减少了逻辑方程以删除常量并使用更少的 LUT。
所以你的常量包含在 LUT 中。

举个例子,当你写的时候:

constant C_CONSTANT : std_logic_vector(3 downto 0) := "1111"
...
if a = C_CONSTANT then
  b <= '1';
else
  b <= '0';
end if;

逻辑方程为:

   b = eq(a(0),C_CONSTANT(0)).eq(a(1),C_CONSTANT(1)).eq(a(2),C_CONSTANT(2)).eq(a(3),C_CONSTANT(3))  
=> b = (a(0).C_CONSTANT(0) + /a(0)./C_CONSTANT(0)).(a(1).C_CONSTANT(1) + /a(1)./C_CONSTANT(1)).(a(2).C_CONSTANT(2) + /a(2)./C_CONSTANT(2)).(a(3).C_CONSTANT(3) + /a(3)./C_CONSTANT(3))
=> b = (a(0).1 + /a(0).0).(a(1).1 + /a(1).0).(a(2).1 + /a(2).1).(a(3).1 + /a(3).0)
=> b = a(0).a(1).a(2).a(3)

常量因逻辑简化而消失。合成器为您提供完全相同的结果:
LUT 的这个事实 table :