第三十一课:Routing + ECO

课程总览与目标

  

Routing主要关注的两个问题:①处理DRC问题;②到这一步,timing应该是可被接受的,但总会有个别path还有violation存在,就在这一步处理;

route_opt命令组成

 

Routing的core command 为route_opt,执行route_opt时,工具会做三步内容:①Global routing;②Track assignment;③Detail Routing;如上图;

在做完route_opt后,理论上所有的net都会连起来,不会存在开路的情况;

在做route_opt时,工具还同时会做一些优化策略:①timing、area、power;②Buffer DRC优化;③物理DRC优化;等;

第一步:Global Route-GR

  

GR会把所有的net分配到具体的金属层以及G-cell中,GR使用一种G-link的方式,得到的是一种虚拟的走线,如上第二张图,只是一根虚拟的线将需要连接的cell连起来,没有实际的宽度,但会记录net的具体走线信息(metal/G-cell等);因此在GR之后Metal traces并未创建;

如果两个连线之间有congestion区域,GR会从旁边绕开进行走线,避开该区域,同时绕线的长度会最小化;GR也会避开PG及blockage位置;

第二步:Track Assignment-TA

 

TA会将每根net分配到特定的track上并且创建实际的metal trace;在创建metal trace时,TA会根据每层metal 的Prefered direction参考走线方向进行布线,并会优化via的数量;

值得注意的是,TA不会check 物理DRC,因此在TA后会出现DRC问题;

第三步:Detail Routing

 

Detail routing会针对上述出现的物理DRC问题,进行修复;上图简单列举了几个例子:

①Notch spacing:如上图,显然在同一层不应该出现横纵两个方向的metal trace方向;

②不太明白;

③对于不同宽度的线,宽线和细线之间的spacing也是不一样的,具体的space和工艺相关;

④保证net spacing均匀,不要忽大忽小;

对于相同rule的violation,如果二者离的也很近的话,工具在报告中会将violation合并成一个;

随堂提问

 

Routing Flow

Routing前状态检查

 

在进行routing前,需要进行状态检查,基本和前面的步骤一样,检查前面几步是否完成,检查timing/congestion/logic DRC等;

具体设置检查

 

前面检查完一些流程后,我们还要对一些具体的内容进行检查,检查设计是否已经准备好做routing了,检查是否还存在ideal net(应该在CTS后全部消除);

我们可以用check_physical_design来检查上述的ideal net是否消除;需要注意,一定要检查一遍Prefered_routing_direction参考布线方向是不是设置了,否则后面会出现很多问题;

Routing Setup

 

包含Common option、global option、detail option等;

设置多线程运行

 

可以自定义使用的CPU核心数,用来提高性能;

采用Arnoldi延时算法

 

前面CTS中也提到过,默认情况下,工具使用的是Elmore算法,我们需要手动改为Arnoldi算法,该算法对net delay的计算精度更高;

Routing command选项

 

对应前面GUI界面设置的option,一共有四种:common、global、track、detail option;相对应的report也是一样;

Common options设置

 

common option可以用来控制前面说的route_opt的三步过程中的一些设置,相关的一些设置如上图;值得注意的是,这里我们可以设置双倍via,以提高良率,并降低via的电阻,减小延时;

操作命令:首先将所有的common option先初始化为默认值,然后再打开redundant_via_insertion;

Global options设置

 

Global options的设置只会影响global routing那一步;一般来说都是用的默认设置,如有有需要在进行修改,命令也是先恢复默认值再设置参数;

Track options设置

 

Track options的设置很简单,只会影响track assignment的控制,选项也只有两项,timing driven/crosstalk driven,一般情况下默认即可;

Detail route options设置

 

Detail route options的设置用来控制detail route,控制选项如上,一般来说,当我们前面选择了双倍via后,这里建议开启via and wire opt;

Antenna:天线效应,后面会详细说明;

Antenna Violations天线效应

 

天线效应:当我们将栅极引出pin后,后续在金属层的刻蚀过程中会形成一些带电粒子,随着与栅极相连接的金属面积不断增大,电荷发生积累,到达极限时就会击穿栅氧层,从而损伤功能,因此栅极上面连接的金属层面积是有上限的,即Antenna Rule,这个rule由工艺厂商提供,我们在做routing时将Antenna Rule source进来即可;

计算公式:如上图,不进行深入探讨;

天线效应的修复

  

Routing对于天线效应的修复主要是通过layer jumping来实现,如上图,通过金属层跳层后,与gate直连的金属面积大大降低;

命令操作:首先将工艺厂商提供的antenna rule source进来,然后在进行detail_options时,加上-antenna true,打开antenna fix功能即可;但需要主要,routing阶段修复antenna只会执行一次,主要是为了兼顾run time,完成后可能还会存在一些antenna violation,后续在chip finish阶段在进行修复;

改变参考绕线方向

  

如上图所示的情景:在两块blockage中间存在一个可以布线的channel,位于M4,该channel两侧存在两个需要连线的cell,但是该channel与M4的参考布线方向垂直,默认情况下,工具是不会从该channel布线的,而是会从两侧的blockage绕过去布线,这样就会使线长增大,延时增加,同时影响了blockage周围的congestion;

此时,要想让工具从中间直接穿过去布线,就需要改变该区域的参考布线方向,通过create_route_guide & -switch_preferred_direction 指定一个区域,改变该区域的参考布线方向,然后工具就会直接穿过布线了;

定义routing Blockages

 

需要注意的是,我们在routing中定义blockage时,用的名称必须是blockage layer名称,而不是TF文件中的名称,如上图的案例:metal1Blockage/via1Blockage;

双倍Via设置

 

 

如上图,我们在设置双倍via时,可以直接读取TF文件中的via definition,然后得到一个优化的via mapping table;当然,也可以自己定义via的属性;

我们可以在common_options & route_options设置,设置完成后,我们就可以执行RVI(redundanr via insertion)了;

优先route Clock Net

 

如果前面的clock_opt没有把clock net route的话,那么在routing阶段我们要先把clock net布线;当然,一般情况下,在CTS阶段就已经做好clk net route 了;

基本的Zroute flow

 

这里的Zroute 和route类似,是ICC最新的一种绕线引擎;

基本的步骤就是先进行setup,然后看clk net有没有route,没有就补上;然后就是route signals,最后就是opt优化;

核心command:route_opt

  

核心command:route_opt 及后面跟的一些命令选项;一般说来,我们在第一遍做route_opt时,只做initial_route_only,只对signal net进行绕线,做完以后所有的signal net将全部连接;但由于只做了signal net route,做完后肯定会产生一些timing及逻辑/物理DRC相关的violation,后续需要进一步优化;

Post Route优化举例

 

优化时,我们也有多种选项,可以针对功耗进行优化;如果存在DRC,也可以切换timing与logic DRC的优先级,因为工具默认timing是第一优先级的;如果有特定的优化需求,如size/hold time/wire等,都有针对性优化的命令选项;

双倍via插入report

 

在插入双倍via后,Zroute会产生一个转换报告,我们可以查看每一层metal的via转换率及整个设计的转换率等;

我们也可以通过report_design -physical来得到routing summary;

物理DRC violation检查

 

前面我们做完核心route_opt -initial route only及opt优化后,会产生一些DRC问题,在此我们对物理DRC进行check,命令:verify_zrt_route;check后如发现存在问题,①我们可以用route_zrt_detail -incremental直接对物理DRC进行修复,注意,这里的-incremental含义是基于前面的route_opt后的结果进行修复的,②如果一遍不行,我们也可以设置fix interation修复次数,让工具多运行几次进行fix;route_zrt_detail -incremental是route后对物理DRC修复的常用命令;

③另外,更有效地方法是通过error id,定位到相应的shape,将有DRC问题的net remove掉,然后再重新进行route,这种方法更加有效;

如果上述三种都无法修复物理DRC(通常最后都是short问题),那么最后就只能人工去看layout到底是什么原因;

verify_zrt_route命令分析

 

verify_zrt_route命令只会检查signal and clock routing的物理DRC问题,并不会检查PG net及用户自定义的wire shape存在的问题;

零星timing violation修复

 

前面我们提过,Routing阶段主要关注的问题有两个:一是DRC问题,这个我们前面几页讲了如何check及fix;

二是零星存在部分path的timing问题,我们可以通过report_constraint -all命令结合focul_opt(可以查一下manpage)命令来进行修复;首先,用report_constraint -all命令抓出所有存在violation的path,得到这些path的endpoint并输出一个文件,然后focul_opt可以读取该文件,然后对setup、hold及DRC进行修复;

功能ECO

  

我们说的ECO,一般有两种类型:根据Placement是否fixed可以分成两种;

同样的,根据ECO的目的不同也可以分为两种:Function ECO,这种一般是芯片的某些功能没有达到要求而进行ECO,这种ECO基本对应Freeze silicon ECO,由于所有的cell都已经fix了,因此只能通过前面留下来的一些冗余cell进行ECO;另一种是利用ECO来fix timing,一般在PT阶段进行ECO,称为PT ECO,对应Non-freeze silicon ECO,由于cell并未进行fix,因此允许新加一些cell进去进行ECO,然后 重新做ECO place & route;

注意,ECO都是在Routing后进行的;

Non-Freeze ECO flow

 

Non-Freeze ECO流程,一般我们做完routing后,如果function/时序没有满足要求,可以利用ECO流程修复function时序;

首先用Star RC抽取routing后的RC寄生参数,给到PT工具进行静态时序分析,利用PT工具进行时序分析,得到write_change文件,将该文件存为ECO.tcl;

然后,将ECO.tcl文件重新source到PR工具中,update design,再做一遍STA,看是否满足时序要求;

最后,重新做ECO后的placement & routing;

Freeze ECO

 

对于Freeze ECO,我们在placement后,就需要将spare cell引进来(只是需要在placement后引入spare cell);

如果netlist中存在spare cell,那么我们可以直接用这些spare cell,首先给这些cell打上标签,然后将这些cell均匀的分散在整个layout上,再做后面的eco placement;

如果netlist中不存在spare cell,我们只能在placement后插入spare cell;

需要告诉工具,set_dont_touch这些spare cell,并对这些cell位置设置soft_fixed,可以轻微的挪动;

Protecting spare cell

 

前面说过,对于spare cell需要dont_touch,以防止ICC在优化时移除这些未连接的cell;同时要将这些cell设置为soft fixed,目的是为了防止coarse placement时被移动,而在CTS & Routing时又要可以进行轻微移动;

Freeze ECO flow

 

对于Freeze ECO flow,我们在routing后,dump导出一份Post-PR netlist(注意,这里导出的netlist已经是前面插入了spare cell的netlist并spread & dont_touch & soft_fixed) ,然后经过用户修改后,得到ECO netlist,再将ECO netlist导入到PR中,重新做ECO后的placement & routing;

ECO Route command

 

如上图,ECO route和正常的route执行的步骤基本类似;

全文Summary

 

Summary;

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 车辆路径问题是指在给定一定数量的车辆和多个客户需求的情况下,如何合理安排车辆的路径,以最小化总路程或时间,并满足所有客户需求的问题。车辆路径问题在物流和运输领域具有重要的应用价值。 车辆路径问题存在一些挑战和问题。首先,问题的规模庞大,需要考虑多个车辆和客户的需求,而且需要在有限的时间内完成配送任务。其次,车辆之间的路径选择和顺序安排会相互影响,需要找到最优的方案。此外,问题中还可能存在各种限制条件,如车辆容量限制、时间窗口限制等,这进一步增加了问题的复杂度。 针对车辆路径问题,有许多方法和算法可以应用。其中最常用的方法之一是基于启发式算法的求解方法,如遗传算法、模拟退火算法和禁忌搜索算法等。这些算法通过模拟自然界的进化、退火和搜索机制,寻找最优的路径方案。另外,还有一些精确算法,如分枝定界法和动态规划法,可以找到问题的最优解。此外,还有一种称为近似算法的方法,通过牺牲一定的精确度,来降低问题求解的时间复杂度。 车辆路径问题在物流和运输领域有广泛的应用。例如,在城市物流中,合理安排货物配送路径可以降低货物运输成本和时间,提高效率。在邮递员或快递员的配送中,合理安排路径可以减少行驶里程,提高配送速度。此外,车辆路径问题还可以应用于公共交通、出租车调度等领域,以优化交通运输系统的效率。 综上所述,车辆路径问题是一个重要的优化问题,具有广泛的应用领域。通过合理的问题建模和求解方法,可以找到最优的路径方案,降低成本、提高效率,并优化交通运输系统。 ### 回答2: 车辆路径规划是指在给定路网和一系列配送点的情况下,通过合理安排车辆的路径和停靠顺序,使得整个配送过程的效率最大化,车辆的行驶距离最短,从而降低企业的运营成本。 车辆路径规划问题涉及以下几个方面的问题。首先,路网信息的获取和处理是车辆路径规划的基础。通过持续更新和维护路网信息,包括道路网络、交通流信息以及道路状态等,可以更加准确地计算路径和行驶时间,并进行优化。 其次,车辆路径规划涉及到配送点的需求和时间窗口问题。不同配送点的送货量和时间窗口要求不同,需要在满足需求的前提下合理安排车辆的停靠顺序和时间,使得整个配送过程能够高效地完成。 再次,车辆路径规划考虑到车辆的容量限制和时间限制。车辆的容量限制是指车辆能够携带的货物数量有限,需要在满足配送点需求的同时合理利用车辆的容量。时间限制是指车辆在每日工作时间内完成所有配送任务,需要在满足时间窗口要求的同时合理安排车辆的路径,避免超时或延误。 车辆路径规划的方法主要包括精确算法和启发式算法。精确算法适用于小规模的问题,通过穷举所有可能的路径组合,找到最优解。而启发式算法则适用于大规模问题,通过一系列的启发式策略和规则,寻找接近最优解的解法。 车辆路径规划的应用广泛,特别是在物流配送、快递运输、公共交通等领域。通过合理安排车辆的路径,可以提高运输效率,减少成本和时间,并提升配送服务的质量。另外,随着物流行业的发展,车辆路径规划也涉及到更多的环境保护和能源节约因素,如减少二氧化碳排放、优化车辆的燃料消耗等。因此,车辆路径规划不仅在商业领域有重要意义,也对社会和环境产生积极影响。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值