← 返回博客列表
数字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. 实战建议

  1. 先大后小:先定义顶层时钟,再逐步细化I/O约束
  2. 保守设置:初版约束可以偏保守,流片前再收紧
  3. 与后端对齐:input/output delay的值需要与后端工程师确认
  4. 使用工具检查:用check_timing检查约束完整性

推荐使用 ICHDL SDC约束生成器 在线快速生成SDC模板。

Clock Waveform (period = 10ns, duty cycle = 50%)0ns5ns10nsRising EdgeFalling Edge

觉得有用?分享给你的同事和朋友。