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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/1267.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习--CNN卷积神经网络(附图)

框架 让我们先看一下CNN的框架 卷积层中后是ReLu激活函数 ,然后是深化池,之后是全连接,最后进行Softmax进行归一化。 所以,我们先逐一了解一下它们各个部分 全连接层 全连接层也称感知机,BP神经网络 全连接层&…

cpp中的右值引用()及其相关拓展知识

cpp中的右值引用 右值引用(rvalue reference)是 C11 引入的一个新特性,用于表示对临时对象(右值)的引用。右值是指那些无法被修改的临时对象,比如函数返回的临时对象、移动语义中的源对象等。右值引用的语…

机器学习常用评价指标的公式和含义

在机器学习中,特别是在分类任务中,评价模型性能常用以下指标。这些指标主要基于混淆矩阵,该矩阵记录了实际类别与模型预测类别的对应情况。下面是这些指标的定义和计算公式: 1. TP(True Positives): - …

seatable部署之后network error【seatable】

这里写自定义目录标题 问题汇总 问题汇总 seatable服务部署后,组件显示正常运行,创建表单,显示Network error 点击错误信息,查看其跳转至另一个页面

最大子数组和(贪心)

53. 最大子数组和 - 力扣(LeetCode) 题目描述 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 样例输入 示例…

AI大模型探索之路-实战篇1:基于OpenAI智能翻译助手实战落地

文章目录 前言一、需求规格描述二、系统架构设计三、技术实施方案四、核心功能说明五、开源技术选型六、代码实现细节1.图形用户界面(GUI)的开发2.大型模型调用的模块化封装3.文档解析翻译结果处理 总结 前言 在全球化的浪潮中,语言翻译需求…

节点加密技术:保障数据传输安全的新利器

随着信息技术的快速发展,网络数据的安全传输问题日益凸显。节点加密技术作为一种新兴的加密手段,正逐渐成为保障数据传输安全的重要工具。本文将探讨节点加密技术的原理、应用及其优势,并分析其未来的发展趋势。 节点加密技术的原理 节点加密…

(OSKS)代币:狂热的Meme币投资者指南

你那位对加密货币几乎一窍不通的朋友却是富豪。为什么?因为他们买了一枚硬币,上面有一只戴着帽子的狗。 帽子一直戴着,所以价格一直在上涨。该Meme币即将成为拉斯维加斯球体的主流,这要归功于社区筹集了 650,000 美元的酷炫资金来…

Redis集合[持续更新]

Redis(全称:Remote Dictionary Server 远程字典服务)是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。 数据结构 1. string 字符串 字符串类型是 Redis 最…

Unity实现动态数字变化

最近的项目需要动态显示数字,所以使用Text组件,将数字进行变化操作过程记录下来。 一、UI准备 1、新建一个Text组件 2、新建C#脚本 3、将Text挂载到脚本上 二、函数说明 1、NumberChange 方法 NumberChange 方法接收四个参数:初始数字 in…

项目管理-项目范围管理

目录 一、概述 二、范围计划的编制 2.1 项目中包含的范围 2.1.1 产品范围 2.1.2 工作范围 2.1.3 总结 2.2 范围计划编制的成果 2.2.1 范围管理计划 2.2.1.1 概述 2.2.1.2 内容 三、创建工作分解结构 3.1 概述 3.2 WBS目的和用途 3.3 WBS分层结构 3.3.1 分层结构图…

第三届上海市算法竞赛T1评测队列

题目描述 在一次算法比赛中,有 n 个程序提交到了竞赛平台上,测试每个程序需要两步:先编译,然后运行。 竞赛平台有两台服务器,一台只负责编译,另一台只负责运行,编译第 i 个程序的时间为 ai​&…

C/C++位运算符

位运算是指按二进制进行的运算[more] 在程序中,常常需要处理二进制位的问题。C/C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。 在实际应用中,建议用unsigned整型操作数&…

Java获取文件路径

第一种: File f new File(this.getClass().getResource("/").getPath()); System.out.println(f);结果: C:\Users\xiaob\javasrc\project\request-pro\target\classes 获取当前类的所在工程路径; 如果不加“/” File f new File(this.getClass().getR…

[Android]SharedPreferences可视化管理key-value数据存储

1.定义 PrefsManager 创建一个用于管理 SharedPreferences 的单例工具类,并使用泛型方法来简化对不同类型数据的存取操作,该类提供了泛型的 get 和 set 方法来处理各种数据类型。 import android.content.Context import android.content.SharedPrefer…

C# 下记录(Record)详解

在C# 9.0中,引入了一个新的关键字:record。record关键字用于定义记录类型,这是一种不可变的数据结构,用于表示具有明确字段名称和类型的数据集。本文将详细介绍C#中record类型的使用和特点,以及如何通过记录记录器&…

【云计算】云数据中心网络(六):私网连接

《云网络》系列,共包含以下文章: 云网络是未来的网络基础设施云网络产品体系概述云数据中心网络(一):VPC云数据中心网络(二):弹性公网 IP云数据中心网络(三)…

深度学习基础——卷积神经网络的感受野、参数量、计算量

深度学习基础——卷积神经网络的感受野、参数量、计算量 深度学习在图像处理领域取得了巨大的成功,其中卷积神经网络(Convolutional Neural Networks,CNN)是一种非常重要的网络结构。本文将介绍卷积神经网络的三个重要指标&#…

网络安全产品---扛DDOS产品

DDOS攻击 what 分布式拒绝服务攻击(Distributed Denial of Service attack) how 攻击者通过控制大量的网络设备(傀儡机),向攻击目标(例如网站、Web服务器、网络设备等)发出海量的、但并不是…

SQLite R*Tree 模块(三十三)

返回:SQLite—系列文章目录 上一篇:SQLite FTS3 和 FTS4 扩展(三十二) 下一篇:SQLite轻量级会话扩展(三十四) 1. 概述 R-Tree 是一个特殊的 专为执行范围查询而设计的索引。R-树最常见的是 用于地理空间系统,其中…