Timing Analyzer 时钟多路复用器示例

author-image

作者

Timing Analyzer 有助于轻松地使用 Synopsys® Design Constraint (SDC) 命令来约束复杂的时钟结构,如多路复用时钟。三个示例电路以及用于约束这些电路的相应 SDC 命令如下所示。

图 1.显示了由 clk 端口计时的简单寄存器到寄存器电路。

假设 clk 端口由一个片外多路复用器驱动,此多路复用器在两个时钟之间进行选择,一个时钟的周期为 10 ns,另一个时钟的周期为 8 ns。以下 SDC 命令展示了如何将多个时钟分配到 clk 端口。它还展示了如何添加异常,指示 FPGA 中的两个时钟永远不会同时处于活动状态。

# 在端口上创建两个时钟
create_clock -name clk_100 -period 10 [get_ports clk]
create_clock -name clk_125 -period 8 [get_ports clk] -add
# 将这两个时钟设置为互斥性时钟
set_clock_groups -exclusive -group {clk_100} -group {clk_125}

图 2.显示了 FPGA 上采用时钟多路复用器的简单寄存器到寄存器电路,它有两个时钟端口:clkA 和 clkB。

假设 clkA 端口由周期为 10 ns 的时钟驱动,clkB 端口由周期为 8 ns 的时钟驱动。以下 SDC 命令展示了如何分配时钟。此示例与上一个示例类似,区别在于将时钟分配到单独的端口。

# 在每个端口上创建一个时钟
create_clock -name clk_100 -period 10 [get_ports clkA]
create_clock -name clk_125 -period 8 [get_ports clkB] -add
# 将这两个时钟设置为互斥性时钟
set_clock_groups -exclusive -group {clk_100} -group {clk_125}

图 3.显示了 FPGA 上采用链路时钟多路复用器的更复杂时钟电路。

在此示例中,必须使用 set_clock_groups 命令指示时钟 A 和 D、A 和 B、C 和 D 以及 B 和 C 永远不会同时处于活动状态。

create_clock -name A -period 10 [get_ports clkA]
create_clock -name B -period 8 [get_ports clkB]
create_clock -name C -period 8 [get_ports clkC]
create_clock -name D -period 10 [get_ports clkD]
# 切割时钟之间的路径
set_clock_groups -exclusive -group {A C} -group {B D}