针对需要在多个时钟周期内稳定的逻辑消除 FPGA 上的时序错误

问题描述 投票:0回答:1

在运行 48 MHz 时钟的 Lattice MachXO2 FPGA 上,我有这样的东西:

always_ff @(posedge clk) begin
  if (some_condition) begin
    // use x to generate y: y <= some_expr_with_x
  end
  if (another_condition) begin
    // assign to x: x <= some_expr_with_w
  end
end

some_expr_with_w
涉及组合逻辑,需要超过 21ns(一个时钟周期)才能稳定。我可以保证
some_condition
仅在
another_condition
之后超过 15 个时钟周期才为真,因此在我们需要使用它时,不存在
x
不稳定的危险。

然而,Diamond Lattice Synplify Pro 抱怨计时错误,因为它不知道两个条件之间有 15 个可用时钟周期。虽然设计效果很好,但我想消除计时错误。我如何告诉 Lattice Diamond 这个逻辑花费超过 21 纳秒的时间是可以的?

我尝试将

MAXDELAY

 和/或 
MULTICYCLE
 时间偏好设置从 
x
y
 为 300 ns,但这似乎并不能解决问题。关于我需要添加的指令的任何指导都会有所帮助。

谢谢你。

fpga lattice-diamond
1个回答
0
投票
添加

MULTICYCLE

 约束可以解决该问题。约束需要从 
w
x
,因为在满足 
x
 后,我们必须留出足够的时间让 
another_condition
 稳定下来,然后才能在 
some_expr_with_x
 中使用它:

MULTICYCLE FROM GROUP "w" CLKNET "clk" TO GROUP "x" CLKNET "clk" 15.000000 X ;
附注我最初的错误是我添加了从 

MUTICYCLE

x
y
 约束,这是不正确的,因为这适用于 
some_expr_with_x
 的计算。

© www.soinside.com 2019 - 2024. All rights reserved.