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

有人知道这样做的方法吗?

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

最佳答案

因此,在咨询了一些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


我通过将全局同步器检测设置为off进行了测试,并观察到TimeQuest找到并分析了亚稳的正确路径。

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

set_clock_groups -asynchronous -group {clk_a}
set_clock_groups -asynchronous -group {clk_b}


因此,在从clk_a计时的寄存器到clk_b计时的寄存器的所有连接之间创建错误的路径

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

09-12 10:23