到目前为止,我还没有找到任何类似于 Xilinx 的 RLOC 约束对 Altera FPGA 的方法。
有人知道如何做到这一点吗?
例如,在同一个或相邻的 LAB 中放置两个 FF。
到目前为止,我还没有找到任何类似于 Xilinx 的 RLOC 约束对 Altera FPGA 的方法。
有人知道如何做到这一点吗?
例如,在同一个或相邻的 LAB 中放置两个 FF。
经过查阅 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
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 所述)。(* altera_attribute = "-name SDC_STATEMENT \"set_false_path -to [get_registers {*synchronizer*out_sync_reg[0]}]\"" *)
。通常不建议在两个时钟域之间设置全局false path,因为它可能掩盖错误。请参见此答案。 - Chiggs