gpt4 book ai didi

verilog - 重命名的时钟是同步的吗?

转载 作者:行者123 更新时间:2023-12-02 18:59:29 26 4
gpt4 key购买 nike

假设我有一个代码:

wire clk1;
wire clk2;
assign clk1 = Clk;
assign Clk2 = Clk;

现在 clk1 和 clk2 用于为各个模块提供时钟并遍历设计的层次结构。在层次结构深处的某个地方,如果某个模块由 clk1 提供时钟,那么它的输出是否与 module2 中的另一个模块保持同步?

例如

reg r1;
always @ (posedge clk1)
r1 <= rSomething;

reg r2;
always @ (posedge clk2)
r2 <= r1;

此代码有效吗?综合工具(Altera 工具链)是否会保持这两个时钟之间的偏差?或者它只会在命名相同的时钟上保持偏差,并且 clk1 和 clk2 将停止同步,尽管它们具有共同的源?

谢谢

EDIT1:这用于综合,而不是模拟。

EDIT2:更改了第二个代码示例。我试图分配 r2 <= r1,而不是像我们之前的情况那样反过来。

最佳答案

合成器会将您的设计输入转换为代表逻辑结构的内部网表。这通常分两个阶段完成。首先是表示抽象操作的高级行为形式,然后是直接实现目标架构的逻辑原语的技术映射形式。在此转换过程中,clk1clkl2 将被视为在拓扑上等同于 clk,并且它们将被视为一个组合网络。

正常的时钟缓冲区插入过程将考虑统一网络中所有叶节点的偏差。任何时序约束都需要施加在clk上。尝试独立约束 clk1clk2 可能会产生不可预测的结果。

关于verilog - 重命名的时钟是同步的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27968410/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com