数字IC设计
SDC约束文件写法详解:从入门到实战
详细介绍SDC时序约束文件的写法,包括时钟定义、输入输出延迟、时钟组、伪路径等常见约束的使用场景和语法。
SDC约束文件写法详解:从入门到实战
什么是SDC?
SDC(Synopsys Design Constraints)是芯片设计中用于描述时序约束的标准格式。它定义了设计的时钟频率、I/O时序、异常路径等信息,是逻辑综合和布局布线(P&R)的关键输入。
1. 时钟定义
基本时钟
tcl
create_clock -name clk -period 10 -waveform {0 5} [get_ports clk]-name:时钟名称-period:时钟周期(单位默认为ns)-waveform:波形上升沿和下降沿的时间点
生成时钟
tcl
create_generated_clock -name clk_div2 -source [get_ports clk] \
-divide_by 2 [get_pins div2_reg/Q]2. 时钟不确定性
tcl
set_clock_uncertainty -setup 0.1 [get_clocks clk]
set_clock_uncertainty -hold 0.05 [get_clocks clk]3. I/O 延迟
tcl
set_input_delay -clock clk 2.0 [get_ports data_in]
set_output_delay -clock clk 2.5 [get_ports data_out]4. 时钟组与伪路径
tcl
# 物理互斥的时钟组
set_clock_groups -physically_exclusive \
[get_clocks clk1] [get_clocks clk2]
# 伪路径
set_false_path -from [get_ports rst_n] -to [get_ports data_out]5. 实战建议
- 先大后小:先定义顶层时钟,再逐步细化I/O约束
- 保守设置:初版约束可以偏保守,流片前再收紧
- 与后端对齐:input/output delay的值需要与后端工程师确认
- 使用工具检查:用check_timing检查约束完整性
推荐使用 ICHDL SDC约束生成器 在线快速生成SDC模板。