GlobalRouting - FastRoute布线算法运行流程(二)

2024-04-21 11:20

本文主要是介绍GlobalRouting - FastRoute布线算法运行流程(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 1. 运行步骤

  • FT::run

1. 运行步骤

首先生成2D的布线,然后进行层分配以及生成3D的布线,最后计算结果并返回。具体流程如下:

  1. 读取查找表flut, POST9.dat, POWV9.dat
  2. 使用查找表生成RSMT,将多pin线网拆分为2pin线网
  3. 进行第一遍2D布线
  4. 优化RSMT,建立各节点之间的MST,并进行第二遍2D布线,最后进行螺旋布线
  5. 将2D布线结果转化为maze格式
  6. 进行层分配
  7. 进行第一次3D布线,不包含via fill
  8. 如果还有资源,进行多次LV,直到达到资源上限
  9. 进行第二次3D布线,不包含via fill
  10. 如有必要,再进行第三次3D布线,不包含via fill
  11. 进行via fill,并获取总长度和总via数
  12. 返回结果并释放空间
  • gen_brk_RSMT
gen_brk_RSMT(Bool congestionDriven, Bool reRoute, Bool genTree, Bool newType, Bool noADJ)

“gen_brk_RSMT”的函数,其参数是congestionDriven,reRoute,genTree,newType和noADJ。
~~~    此函数的目的是使用FLUTE算法或带有拥塞驱动的FLUTE算法计算用于生成RSMT的系数;生成RSMT,并将其存储在seglist中。如果reRoute参数已启用,则会尝试重新路由非降级网络,并将seglist传递给用于路由的新routeL函数。最后函数会打印出RSMT的数量、总线长以及其他一些信息。

该函数具体实现是:

  1. 遍历每个网络,计算用于FLUTE算法或具有拥塞驱动的FLUTE算法的系数(coeffV)。如果启用congestionDriven,则coeffV需要根据网络的拥塞情况进行调整。

  2. 如果reRoute被激活,则尝试路由非降级的网络。

  3. 使用FLUTE或具有拥塞驱动的FLUTE算法生成RSMT。如果启用congestionDriven,则需要针对网络的拥塞情况选择FLUTE算法。

  4. 将RSMT存储在seglist中。如果发现两个分支之间的距离小于等于1,请将其视为树的路线段。

  5. 将seglist的内容传递给用于路由的新routeL。如果reRoute被激活,则会对已知路由的网络进行更新。

代码中还包含一些变量,例如wl,记录所有网络的总线长。最后,函数将打印出一些数据,例如生成RSMT的数量,总线长以及其他一些信息。

用于在电路布线中生成较小重量生成树(RSMT)的函数。 函数的前五个参数都是类型为 Bool 的布尔值,它们控制不同的选项,如是否启用拥塞驱动、是否需要重新路由等。下面是这些参数的意义:

  • congestionDriven:如果为真,则启用拥塞驱动模式以生成 RSMT。
  • reRoute:如果为真,则尝试重新路由 RSMT,以减少目标函数(如全局路径长度)。
  • genTree:如果为真,则为每个网络生成完整的 SP-tree,并将其保存在 sttrees 数组中。
  • newType:如果为真,则使用新的 RTP(rectangle-based triangulated path)算法来重新路由 RSMT。
  • noADJ:如果为真,则使用更低的权重因子来生成 RSMT,这有助于避免屏蔽效应(shielding effect)。

接下来是该函数的主体部分:
它使用 FLUTE 算法生成较小重量生成树(RSMT),该算法首先将网络中的每个 PIN 抽象成一个点,然后根据这些点之间的联系生成一种最小的树形链接方式,使得网络中各个节点之间的链路之和最小。

在函数的主体中,首先遍历每个网络,并为其找到 RSMT。如果指定了拥塞驱动选项,则将网络的拥塞率与由“coeffADJ”计算的加权系数一起传递给“FLUTE”算法。如果不启用拥塞驱动模式,则仅传递给该算法一个默认值系数。

在生成 RSMT 过程中,如果指定了拥塞驱动选项,则使用 fluteCongest() 函数,该函数使用调整的权重因子来考虑当前网络的拥塞情况,以生成一个更好的 RSMT。

如果指定了重新路由选项,则会执行重新路由,以尝试进一步减少布线长度。

代码中还定义了一些辅助函数来更新网络中的 RSMT、SegL 等数据结构,以及计算某些参数(如数据库链接、伸缩偏移量等)。

总体而言,该函数的目标是优化电路布线,它使用了多个算法和数据结构来完成这个目标。代码中的每个部分都被设计为模块化的,这使得用户可以很容易地调整相关参数或替换算法以获得更好的性能。

这篇关于GlobalRouting - FastRoute布线算法运行流程(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/922959

相关文章

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

MySQL 临时表与复制表操作全流程案例

《MySQL临时表与复制表操作全流程案例》本文介绍MySQL临时表与复制表的区别与使用,涵盖生命周期、存储机制、操作限制、创建方法及常见问题,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小... 目录一、mysql 临时表(一)核心特性拓展(二)操作全流程案例1. 复杂查询中的临时表应用2. 临时

MySQL 升级到8.4版本的完整流程及操作方法

《MySQL升级到8.4版本的完整流程及操作方法》本文详细说明了MySQL升级至8.4的完整流程,涵盖升级前准备(备份、兼容性检查)、支持路径(原地、逻辑导出、复制)、关键变更(空间索引、保留关键字... 目录一、升级前准备 (3.1 Before You Begin)二、升级路径 (3.2 Upgrade

Spring Boot 中的默认异常处理机制及执行流程

《SpringBoot中的默认异常处理机制及执行流程》SpringBoot内置BasicErrorController,自动处理异常并生成HTML/JSON响应,支持自定义错误路径、配置及扩展,如... 目录Spring Boot 异常处理机制详解默认错误页面功能自动异常转换机制错误属性配置选项默认错误处理

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

Spring Boot从main方法到内嵌Tomcat的全过程(自动化流程)

《SpringBoot从main方法到内嵌Tomcat的全过程(自动化流程)》SpringBoot启动始于main方法,创建SpringApplication实例,初始化上下文,准备环境,刷新容器并... 目录1. 入口:main方法2. SpringApplication初始化2.1 构造阶段3. 运行阶