热度 9| ||
天气:晴
对于后端实现来说,尤其是高性能芯片,时钟树综合的质量的重要性不言而喻。在经过不少特殊case的实战应用之后,回过头来再看clock tree的实现过程,又多了一些感悟,所以打算完整梳理一遍clock tree syntesis的流程,作为笔记记录下来,常用常新。
个人经验来看,在做clock tree的时候,会遵循以下几个步骤:
1. 了解时钟结构,画时钟结构图(或前端提供框架,后端确认细节)--clock structure diagram
2. 了解design的基本要求,规划clock tree的config文件 -- cts_config.tcl
3. 生成clock spec,浏览spec,确认特殊点(如果有)的spec是否符合预期 --clock.spec
4. 是否需要特殊的用户配置--user_define_cts.tcl
5. 确定cts策略ccopt_design/ clock_design,以及是否开useful skew
6. trial run,double confirm时钟树的实现是否符合预期,然后进行分析,debug
时钟结构单独整理,今天从基本配置开始梳理,基本配置分为主要几点,NDR配置,buffer list指定,cts相关mode指定:
NDR部分:
add_ndr, 创建几种需要的ndr rule,指定线宽和线间距;
create_route_type,创建route type,指定绕线层和对应的ndr;
分别指定top,trunk,leaf的route type
set_db cts_route_type_top xxxNDR
set_db cts_route_type_trunk xxxNDR
set_db cts_route_type_leaf xxxNDR
Buffer list部分:
set_db cts_buffer_cells [list ] 指定buffer的list
set_db cts_inverter_cells [list ] 指定inverter的list
set_db cts_clock_gating_cells [list ] 指定gate的list
set_db cts_logic_cells [list ] 指定逻辑单元的list
CTS mode部分:
set_ccopt_mode -cts_target_skew 0.075
set_ccopt_property max_fanout 32
set_ccopt_property max_tansition 0.050
set_db design_top_routing_layer 7
set_db design_top_routing_layer 2
以及useful skew,top、bottom route layer,mix buffer,target skew、skew band size等等,根据design的需要来设置,这块内容比较多,不同的mode会影响工具再cts过程中的行为,后面单独做笔记。不同的mode也会互相影响,这里要注意一个mode优先级的概念,熟悉具体命令的作用以及优先级,防止互相冲突,也有利于debug问题。
下一节笔记整理clock tree过程中的具体step,以及debug的常用思路。