Timing Analyzer 有助于轻松地使用 Synopsys® Design Constraint (SDC) 命令来约束复杂的时钟结构,如多路复用时钟。三个示例电路以及用于约束这些电路的相应 SDC 命令如下所示。
假设 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}
假设 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}
在此示例中,必须使用 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}