在 Lattice Verilog FPGA 设计中,我有两个 PLL 生成的时钟,频率相同,为 125MHz (8ns),但第二个时钟与第一个时钟相移 90°:
wire clk;
wire clk90; //clk90 is clk with phase at 90°
pllm pllm_inst(.CLKI(oscInternal), .CLKOP(clk), .CLKOS(clk90));
reg [63:0] wbuf;
always @(posedge clk) begin
wbuf <= wbuf + 1;//Fake logic
end
wire [31:0] sdram_dq_tx;
ODDRXE ODDRXE00_inst(.D0(wbuf[0]), .D1(wbuf[16]), .SCLK(clk90), .RST(1'b0), .Q(sdram_dq_tx[0]));
...
设计非常拥挤,我得到所有 wbuf 的以下 HOLD 错误:
Error: The following path exceeds requirements by 1.585ns
Logical Details: Cell type Pin type Cell/ASIC name (clock net +/-)
Source: FF Q sdram_inst/wbuf[0] (from clkop +)
Destination: FF Data in sdram_inst/ODDRXE00_inst (to clkop2 +)
Delay: 0.380ns (34.5% logic, 65.5% route), 1 logic levels.
Constraint Details:
0.380ns physical path delay sdram_inst/SLICE_1029 to ddr_Dq[0]_MGIOL exceeds
-0.011ns DO_HLD and
0.000ns delay constraint less
-1.976ns skew less
0.000ns feedback compensation requirement (totaling 1.965ns) by 1.585ns
我如何将两个时钟之间的这条路径限制在彼此成 90° 的位置,以关闭我的设计时序?强制 wbuf 保持 2ns(8ns 的 90°)是否有意义,我如何通过时序约束来实现?