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

devtools/2024/9/19 23:15:49/ 标签: 算法, GR, GlobalRouting, FastRoute, EDA

文章目录

    • 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 等数据结构,以及计算某些参数(如数据库链接、伸缩偏移量等)。

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


http://www.ppmy.cn/devtools/6513.html

相关文章

【Xilinx】时序约束学习 TIMING-1: 时钟修改块上的时钟波形无效

在 <cell_type> 输出 <pin_name> 上指定的时钟 <clock_name> 的时钟波形无效&#xff0c; 与时钟修改块 (CMB) 设置不匹配。该时钟波形为 <VALUE>。期望的波形为 <VALUE>。 描述 Vivado Design Suite 会根据 CMB 设置和传入主时钟的特性&#xf…

Java的垃圾回收机制

Java垃圾回收机制是Java平台内存管理的重要组成部分&#xff0c;它负责自动回收不再使用的对象所占用的内存&#xff0c;从而防止内存泄漏和内存溢出。这一机制大大简化了Java程序员的内存管理任务&#xff0c;使程序员能够更专注于业务逻辑的实现。下面将详细解释Java垃圾回收…

利用大语言模型,矢量数据库实现数据库的智能搜索

目的 数据库使用SQL 语言查询数据&#xff0c;数据库的记录中要有一个关键字段&#xff08;通常称为主键字段&#xff0c;它的值在数据库列表中是唯一的&#xff09;,数据记录是结构化的. 如果你需要根据数据记录的内容来查询数据记录&#xff0c;就需要通过Select 语句在数据库…

无法连接到MongoDB Atlas 的Cloud Database

打开Mongodb网页: 选择允许任何地址连接 连接成功

负载均衡集群——HAProxy

目录 1 HAProxy介绍 2 功能简介 3 实验组网介绍 4 实验步骤 4.1 通过 HAProxy 实现简单负载均衡调度功能 步骤 1 安装 HAProxy 步骤 2 修改配置 HAProxy 文件 4.2 HAProxy 监控页面配置 步骤 1 修改 HAProxy 配置文件 步骤 2 查看监控页面 3.3 HAProxy 日志相关配置 …

什么是神经网络和机器学习?【云驻共创】

什么是神经网络和机器学习&#xff1f; 一.背景 在当今数字化浪潮中&#xff0c;神经网络和机器学习已成为科技领域的中流砥柱。它们作为人工智能的支柱&#xff0c;推动了自动化、智能化和数据驱动决策的进步。然而&#xff0c;对于初学者和专业人士来说&#xff0c;理解神经…

论文笔记:Are Human-generated Demonstrations Necessary for In-context Learning?

iclr 2024 reviewer 评分 6668 1 intro 大型语言模型&#xff08;LLMs&#xff09;已显示出在上下文中学习的能力 给定几个带注释的示例作为演示&#xff0c;LLMs 能够为新的测试输入生成输出然而&#xff0c;现行的上下文学习&#xff08;ICL&#xff09;范式仍存在以下明显…

微服务面试题

这里写目录标题 1.微服务是什么2.你知道哪些RPC架构3.SpringCloud和Dubbo有什么区别4.SpringCloud由什么组成5.Eureka包含几个组件6.Eureka的工作原理7.说一下什么是Eureka的自我保护机制8.什么是CAP原则9.都是服务注册中心&#xff0c;Eureka比Zookeeper好在哪里10.Ribbon的作…

请陪伴Kimi和GPT成长

经验的闪光汤圆 但是我想要写实的 你有吗&#xff1f; 岁数大了&#xff0c;希望如何学习新知识呢&#xff1f;又觉得自己哪些能力亟需补强呢&#xff1f; 看论文自然得用Kimi&#xff0c;主要是肝不动了&#xff0c;眼睛也顶不住了。 正好昨天跟专业人士学会了用工作流的办法跟…

EI Scopus双检索 | 2024年清洁能源与智能电网国际会议(CCESG 2024)

会议简介 Brief Introduction 2024年清洁能源与智能电网国际会议(CCESG 2024) 会议时间&#xff1a;2024年 11月27-29日 召开地点&#xff1a;澳大利亚悉尼 大会官网&#xff1a;CCESG 2024-2024 International Joint Conference on Clean Energy and Smart Grid 由CoreShare科…

Springboot项目中Controller层的单元测试

源码展示&#xff1a; 原来的controller类&#xff1a; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.*;RestController RequestMapping("/web") Slf4j Service public clas…

Taro-vue微信小程序用户隐私保护

Taro-vue微信小程序用户隐私保护 一、在 微信公众平台的【设置】- 【服务内容与声明】 &#xff0c;设置用户隐私保护指引&#xff0c;添加项目需要的接口权限。 【用户隐私保护指引】提交之后&#xff0c;官方会进行审核。审核通过之后&#xff0c;对应的接口权限才会生效。 …

js设置:root得样式

在CSS中&#xff0c;:root 是一个伪类选择器&#xff0c;它匹配文档树的根元素。在HTML文档中&#xff0c;根元素通常是 <html> 元素。:root 选择器常用于定义CSS变量&#xff08;也称为自定义属性&#xff09;&#xff0c;以便在整个文档范围内使用这些变量。 关于“水…

Automated CNN approach

图1有点简单 作者未提供代码

【MySQL】表的增删改查

目录 前言&#xff1a; 新增&#xff08;Create&#xff09;&#xff1a; 查询&#xff08;Retrieve&#xff09;&#xff1a; 别名&#xff1a; 去重&#xff1a;DISTINCT 排序&#xff1a;ORDER BY &#xff1a; 条件查询&#xff1a;WHERE &#xff1a; 分页查询&am…

acwing算法提高之图论--无向图的双连通分量

目录 1 介绍2 训练 1 介绍 本博客用来记录无向图的双连通分量的相关题目。 以下所有概念都是针对无向图而言的。 桥&#xff1a;本质是边&#xff0c;去掉它&#xff0c;图就不连通了。这样的边叫作桥。 边双连通分量&#xff1a;不包含桥的连通块&#xff0c;且边的数目最大…

速盾:cdn可以加速哪些服务器

CDN&#xff08;Content Delivery Network&#xff0c;内容分发网络&#xff09;是一种通过将网站的静态资源部署到全球各地的服务器上&#xff0c;以提供更快速、更可靠的访问体验的技术。CDN可以加速许多类型的服务器&#xff0c;包括但不限于以下几种&#xff1a; 静态资源服…

【考研高数】学习笔记分享

派大星说数学&#xff08;导学部分&#xff09; 关于做题 测试 答疑阶段 直播 群内 高中基础知识导学 一、数与式 述了课程学习和因式分解、分式拆解等知识点。学生应了解课程内容&#xff0c;带着疑问听课&#xff0c;不要抄笔记&#xff0c;导学课和基础课都有测验&…

Java,Python和Go语言语法差异对比

前段时间一直在找工作&#xff0c;比较颓废&#xff0c;很长时间都没有更新博客了&#xff0c;最近公司的项目需要用到Python语言和Go语言&#xff0c; 所以又重新学习了一下Python语言和Go语言&#xff0c;现在做一些总结&#xff0c;方便以后复习使用&#xff0c;同时也给其他…

web大型工程项目架构以及搭建

一、项目结构 ├── public/ ├── config/ │ └── proxy.js # 本地代理配置 ├── src/ │ ├── assets/ │ ├── components/ │ ├── configs/ │ │ ├── index.js # 应用配置 │ │ ├…