到目前为止,我还没有找到任何类似于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_i
由clk_a
锁存并且out_clk
由clk_b
驱动并且两个时钟设置为:set_clock_groups -asynchronous -group {clk_a}
set_clock_groups -asynchronous -group {clk_b}
因此,在从
clk_a
计时的寄存器到clk_b
计时的寄存器的所有连接之间创建错误的路径set_max/min_delay
将无法工作,因为如果两个时钟位于不同的异步时钟组中,则会被忽略(如Altera所述)。