innovus如何分步长func和dft时钟
在Innovus工具中,分步处理功能时钟(func clock)和DFT时钟(如扫描测试时钟)需要结合设计模式(Function Mode和DFT Mode)进行约束定义、时钟树综合(CTS)和时序分析。跟随分步操作下吧:
2.5GHz数字后端实战课!过年大促!
景芯SoC【设计】实战课
景芯SoC【验证】实战课
景芯SoC【DFT】实战课
景芯SoC【后端】实战课
【劲爆】芯片全流程实战
1. 约束定义与模式分离
a. 创建多模式约束(MMMC)
- 在SDC约束文件中,为Function Mode和DFT Mode分别定义时钟:
# Function Mode
create_clock -name func_clk -period 10 [get_ports clk]
# DFT Mode(扫描测试时钟)
create_clock -name scan_clk -period 20 [get_ports scan_clk]
- 使用set_case_analysis区分模式:
# Function Mode
set_case_analysis 0 [get_port test_mode]
# DFT Mode
set_case_analysis 1 [get_port test_mode]
b. 配置多模式多角(MMMC)
- 在Innovus中加载不同模式的约束文件,并创建Analysis View:
create_analysis_view -name func_view -mode func_mode -corner ssg0p81v125c
create_analysis_view -name dft_view -mode dft_mode -corner ssg0p81v125c
# 关联SDC到对应模式
read_sdc -mode func_mode func_mode.sdc
read_sdc -mode dft_mode dft_mode.sdc
set_analysis_view -setup {func_view} -hold {func_view} # 功能模式分析
set_analysis_view -setup {dft_view} -hold {dft_view} # DFT模式分析
2. 分步时钟树综合(CTS)
set_analysis_view -setup func_view
ccopt_design -clock func_clk # 功能时钟优化
set_analysis_view -setup dft_view
ccopt_design -clock scan_clk # DFT时钟优化
(c) 处理时钟冲突
若功能时钟和DFT时钟共用时钟树分支(如MUX输出),需定义排除关系:
# 在功能视图中排除DFT时钟优化
set_ccopt_property -exclude_clock scan_clk -analysis_view func_view
# 在DFT视图中排除功能时钟优化
set_ccopt_property -exclude_clock func_clk -analysis_view dft_view
3. 多模式时序分析与验证
(a) 功能模式时序检查
set_analysis_view -setup {func_view} -hold {func_view}
timeDesign -expandedViews -analysis_view func_view
report_timing -view func_viee
(b) DFT模式时序检查
set_analysis_view -setup {dft_view} -hold {dft_view}
timeDesign -expandedViews -analysis_view dft_view
report_timing -view dft_view
(c) 跨模式检查
确保时钟切换信号(如test_mode)的时序稳定:
check_timing -override_defaults mode_switch
4. DFT时钟特殊处理
(a) 扫描链时钟分组
隔离功能时钟与DFT时钟的物理路径:
set_clock_groups -physically_exclusive -group func_clk -group scan_clk
(b) 低功耗DFT时钟
若DFT时钟频率较低,需单独设置过渡时间约束:
set_clock_transition -clock scan_clk -max 0.5
(c) 时钟MUX稳定性
确保时钟选择信号(test_mode)的路径满足建立/保持时间:
set_false_path -from [get_ports test_mode] -to [get_clocks func_clk]
set_false_path -from [get_ports test_mode] -to [get_clocks scan_clk]
5. 最终验证
(a) 时钟树报告
report_ccopt -analysis_view func_view
report_ccopt -analysis_view dft_view
(b) DRC/LVS检查
verify_drc -mode all -limit 1000
verify_connectivity -type all
(c) 形式验证(Formality)
确保功能模式与DFT模式逻辑等价。
注意特殊DFT时钟处理
- 扫描链时钟(Scan Shift/Scan Capture):
- 在DFT模式下,扫描链时钟通常需要更低频率,需单独约束。
- 使用set_clock_groups隔离功能时钟和测试时钟:
set_clock_groups -physically_exclusive -group {func_clk} -group {scan_clk}
- 时钟MUX处理:
- 确保时钟选择信号(如
test_mode)在布局布线后稳定,避免毛刺。
其他关键注意事项
1. 模式切换信号:确保test_mode等控制信号在物理实现中布局稳定。
2. 功耗分析:DFT模式下可能功耗更高,需单独分析IR Drop。
3. DRC/LVS:时钟MUX和DFT逻辑需通过物理验证工具(如Pegasus)检查。
通过分场景约束、分步CTS和多模式时序分析,可高效管理功能时钟与DFT时钟的冲突问题。