时序约束和ASYNC_REG并没有真正相互干扰。
因此,工具没有将两个同步器FF打包到同一切片中的事实与约束无关......
该错误表示“约束或不匹配的控制信号”。
这里所指的约束是放置约束(LOC或BEL约束),而不是时序约束。
因此,除非你有LOC约束,否则问题很可能是第二部分 - 不匹配的控制信号。
为了将两个触发器打包到同一个切片中,它们必须具有相同的控制集。
这意味着他们必须使用相同的时钟,重置和ce。
由于它们应该是同步器,因此它们可能共享相同的时钟。
此外,应始终启用同步器,因此它们可能共享相同的CE(常量为“1”)。
所以最后一个是重置 - 他们都使用相同的重置吗?
如果ASYNC_REG触发器不能放在同一个切片中(并且你得到这个消息),那么工具会将它们放在相邻的切片中,这就是他们所做的(X7Y152和X7Y153)。
这不一定是个问题 - 两个FF仍然很接近,因此可能很好地作为同步器链,但我们总是希望它们在一起(如果可能的话)(所以看看控制集)。
至于set_clock_groups - 正如@muzaffer所提到的,我总是避免使用set_clock_groups(或者时钟之间的set_false_path,这基本上是一回事)。
很明显,域之间有时钟交叉 - 如果要交叉的数据不是“没有延迟要求的缓慢变化的单比特信号”,那么您的时钟域交叉(CDC)威廉希尔官方网站
需要约束。
使用set_clock_groups(或时钟之间的set_false_path)声明域false之间的所有路径。
由于这些限制是最高优先级,因此现在不可能限制您的CDC。
Avrum
以上来自于谷歌翻译
以下为原文
The timing constraints and the ASYNC_REG do not really interfere with each other. So the fact that the tools are not packing the two synchronizer FFs into the same slice has nothing to do with the constraints...
The error says "constraints or mismatched control signals". The constraints it is referring to here is placement constraints (LOC or BEL constraints), not timing constraints. So unless you have LOC constraints, the problem is likely the second part - mismatched control signals.
In order for two flip-flops to be packed into the same slice, they must have the same control set. This means they must use the same clock, reset and ce. Since these are supposed to be synchronizers, they presumably share the same clock. Furthermore, synchronizers should always be enabled, so they probably share the same CE (which is the constant '1'). So the last one is the reset - do they both use the same reset?
If the ASYNC_REG flip-flops cannot be placed in the same slice (and you get this message), then the tools will place them in adjacent slices, which is what they have done (X7Y152 and X7Y153). This is not necessarily a problem - the two FFs are still close together and hence are probably fine as a synchronizer chain, but we always prefer them to be together if possible (so take a look at the control set).
As for the set_clock_groups - as @muzaffer mentioned, I always avoid set_clock_groups (or set_false_path between clocks, which is essentially the same thing). It is clear that you have clock crossing between the domains - if the data to be crossed is anything other than a "slow changing single bit signal with no latency requirement" then your clock domain crossing (CDC) circuit needs constraints. Using the set_clock_groups (or set_false_path between clocks) declares all paths between the domain false. Since these constraints are the highest priority, it is now impossible to constrain your CDCs.
Avrum
时序约束和ASYNC_REG并没有真正相互干扰。
因此,工具没有将两个同步器FF打包到同一切片中的事实与约束无关......
该错误表示“约束或不匹配的控制信号”。
这里所指的约束是放置约束(LOC或BEL约束),而不是时序约束。
因此,除非你有LOC约束,否则问题很可能是第二部分 - 不匹配的控制信号。
为了将两个触发器打包到同一个切片中,它们必须具有相同的控制集。
这意味着他们必须使用相同的时钟,重置和ce。
由于它们应该是同步器,因此它们可能共享相同的时钟。
此外,应始终启用同步器,因此它们可能共享相同的CE(常量为“1”)。
所以最后一个是重置 - 他们都使用相同的重置吗?
如果ASYNC_REG触发器不能放在同一个切片中(并且你得到这个消息),那么工具会将它们放在相邻的切片中,这就是他们所做的(X7Y152和X7Y153)。
这不一定是个问题 - 两个FF仍然很接近,因此可能很好地作为同步器链,但我们总是希望它们在一起(如果可能的话)(所以看看控制集)。
至于set_clock_groups - 正如@muzaffer所提到的,我总是避免使用set_clock_groups(或者时钟之间的set_false_path,这基本上是一回事)。
很明显,域之间有时钟交叉 - 如果要交叉的数据不是“没有延迟要求的缓慢变化的单比特信号”,那么您的时钟域交叉(CDC)威廉希尔官方网站
需要约束。
使用set_clock_groups(或时钟之间的set_false_path)声明域false之间的所有路径。
由于这些限制是最高优先级,因此现在不可能限制您的CDC。
Avrum
以上来自于谷歌翻译
以下为原文
The timing constraints and the ASYNC_REG do not really interfere with each other. So the fact that the tools are not packing the two synchronizer FFs into the same slice has nothing to do with the constraints...
The error says "constraints or mismatched control signals". The constraints it is referring to here is placement constraints (LOC or BEL constraints), not timing constraints. So unless you have LOC constraints, the problem is likely the second part - mismatched control signals.
In order for two flip-flops to be packed into the same slice, they must have the same control set. This means they must use the same clock, reset and ce. Since these are supposed to be synchronizers, they presumably share the same clock. Furthermore, synchronizers should always be enabled, so they probably share the same CE (which is the constant '1'). So the last one is the reset - do they both use the same reset?
If the ASYNC_REG flip-flops cannot be placed in the same slice (and you get this message), then the tools will place them in adjacent slices, which is what they have done (X7Y152 and X7Y153). This is not necessarily a problem - the two FFs are still close together and hence are probably fine as a synchronizer chain, but we always prefer them to be together if possible (so take a look at the control set).
As for the set_clock_groups - as @muzaffer mentioned, I always avoid set_clock_groups (or set_false_path between clocks, which is essentially the same thing). It is clear that you have clock crossing between the domains - if the data to be crossed is anything other than a "slow changing single bit signal with no latency requirement" then your clock domain crossing (CDC) circuit needs constraints. Using the set_clock_groups (or set_false_path between clocks) declares all paths between the domain false. Since these constraints are the highest priority, it is now impossible to constrain your CDCs.
Avrum
举报