riple

Stay Hungry, Stay Foolish.

TimeQuest就一定要搞定——由QSF生成SDC

0
阅读(2788)

QSF是Quartus Settings File的缩写,包含了一个Quartus工程的所有约束,包括工程信息、器件信息、引脚约束、编译约束和用于Classic Timing Analyzer的时序约束。

SDC是Synopsys Design Constraints的缩写,该文件用于TimeQuest Timing Analyzer的时序约束和定制报告。

在TimeQuest中把Classic Timing Analyzer的约束语句转换为SDC是很容易的。在Constraints菜单下,执行Generate SDC File from QSF即可。

以Quartus II安装路径下的\qdesigns\fir_filter项目为例,QSF文件中关于时序约束的语句如下:

# 约束clk为100MHz的时钟。
set_global_assignment -name FMAX_REQUIREMENT "100 MHz" -section_id clocka
set_instance_assignment -name CLOCK_SETTINGS clocka -to clk

# 约束clkx2为clk的二倍频时钟,相位偏移0.5ns
set_global_assignment -name BASED_ON_CLOCK_SETTINGS clocka -section_id clockb
set_global_assignment -name DIVIDE_BASE_CLOCK_PERIOD_BY 2 -section_id clockb
set_global_assignment -name OFFSET_FROM_BASE_CLOCK "500 ps" -section_id clockb
set_instance_assignment -name CLOCK_SETTINGS clockb -to clkx2

# 约束所有从clk到clkx2的时序路径为Multicycle,取值2
set_instance_assignment -name MULTICYCLE 2 -from clk -to clkx2

由该组QSF约束转换得到的SDC约束如下:

# Original Clock Setting Name: clocka
create_clock -period "10.000 ns" \
-name {clk} {clk}
# Original Clock Setting Name: clockb
create_generated_clock -multiply_by 2 -offset "0.500 ns" \
-source clk \
-name {clkx2} \
{clkx2}
# ** Multicycles
# QSF: -name MULTICYCLE 2 -from clk -to clkx2
set_multicycle_path -end -setup -from [get_clocks {clk}] -to [get_clocks {clkx2}] 2
set_multicycle_path -end -hold -from [get_clocks {clk}] -to [get_clocks {clkx2}] 1

从上面的例子可以看出,SDC比QSF简洁了些,在Multicycle的约束上也清晰明确了些。

Baidu
map