我怎样才能实现类似于Xilinx' Altera FPGA中的RLOC?

时间:2014-08-19 17:53:00

标签: constraints fpga xilinx intel-fpga

到目前为止,我还没有找到任何与Xilinx对Altera FPGA的RLOC约束类似的方法。

有谁知道这样做的方法?

例如,将两个FF放在相同或相邻的LAB中

2 个答案:

答案 0 :(得分:3)

所以回答我自己的问题,经过一些Altera手册和一些试验和错误的咨询后,我发现这几乎是我想做的。

module synchronizer (input wire dat_i,

                     input wire out_clk,
                     output wire dat_o);

   (* altera_attribute = "-name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2; -name SYNCHRONIZER_IDENTIFICATION \"FORCED IF ASYNCHRONOUS\"" *)
   logic [1:0]                   out_sync_reg;

   always_ff@(posedge out_clk) begin
      out_sync_reg <= {out_sync_reg[0],dat_i};
   end

   assign dat_o = out_sync_reg[1];

endmodule

我通过将全局同步器检测设置为关闭来测试这一点,并观察到TimeQuest找到并分析了亚稳态的正确路径。

即使dat_iclk_a锁定而out_clkclk_b驱动,并且两个时钟设置为:

,这也很有效
set_clock_groups -asynchronous -group {clk_a}
set_clock_groups -asynchronous -group {clk_b}

因此,在clk_aclk_b提供时钟的寄存器的所有连接之间创建错误路径

set_max/min_delay不会工作,因为如果两个时钟位于不同的异步时钟组中,它会被忽略(如Altera所述)。

答案 1 :(得分:1)

Altera不支持RLOC样式限制。显然这与底层物理架构有关。我相信它们在芯片测试期间过度配置ALM并熔断列,以提高产量,因此相对位置约束不会像预期的那样转换为给定的物理设备。

如果您担心同步链放置,可以使用SYNCHRONIZATION_REGISTER_CHAIN_LENGTHSYNCHRONIZER_IDENTIFICATION QSF settings启用同步链检测(另请参阅this answer)。

如果您只想确保特定的时序属性,请在路径上使用set_max_delayset_min_delay时序约束。