- 博客(50)
- 收藏
- 关注
原创 anaroute项目结构
包含API接口相关代码,包括pybind11对c++接口的python封装,如。:包含DRC(Design Rule Check)相关的代码,如。: 包含详细的布线算法和管理器,如。:包含与LEF文件格式相关的代码,如。:包含与电路网络相关的数据结构,如。:包含各种数据结构的实现,如。:包含几何数据结构和算法,如。:包含全局布线相关代码,如。:包含全局定义和配置,如。:包含图算法相关代码,如。:包含外部库的头文件,如。:包含解析器模块,如。:包含写入器模块,如。:包含数据库模块,如。
2024-10-12 10:48:35
408
原创 GlobalRouting - FastRoute代码框架和功能(三)
根据分析,FastRoute程序的整体功能为实现针对电路设计的布局引擎,从而辅助设计人员快速布线电路。文件名功能Box.h定义代表矩形框的Box类定义代表坐标的Coordinate类包装整个数据库的类文件实现FastRoute的主要算法、配置选项、容量调整和容量约束等Grid.h定义一个代表电路布局的网格模型Grid类Net.h定义代表网络的Net类Netlist.h定义代表整个网表的Netlist类Pin.h定义代表引脚的Pin类。
2024-04-20 10:34:00
875
原创 GlobalRouting - FastRoute布线算法运行流程(二)
算法生成较小重量生成树(RSMT),该算法首先将网络中的每个 PIN 抽象成一个点,然后根据这些点之间的联系生成一种最小的树形链接方式,使得网络中各个节点之间的链路之和最小。“gen_brk_RSMT”的函数,其参数是congestionDriven,reRoute,genTree,newType和noADJ。最后,函数将打印出一些数据,例如生成RSMT的数量,总线长以及其他一些信息。函数,该函数使用调整的权重因子来考虑当前网络的拥塞情况,以生成一个更好的 RSMT。函数的前五个参数都是类型为。
2024-04-20 10:24:30
1357
原创 ubuntu18.04上安装ROS机器人操作系统
一、 版本选择ubuntu不同系统版本支持的Ros版本有所差异,需要选择对应的版本。我的系统是ubuntu18.04故使用Melodic版本。ubuntu18.04 --> Melodic二、安装步骤1. 检查Ubuntu软件和更新源软件和更新--> 所有选项都勾上--> 软件源下拉框选择阿里源2. 设置Ros的下载资源2.1 设置中科大源:sudo sh -c '. /etc/lsb-release && echo "deb http://mirror
2022-05-17 22:13:31
814
原创 g++常用命令
g++常用命令常用命令默认生成a.outg++ test.cpp指定生成可执行文件g++ test.cpp -o test.out生成调试和警告信息 g++ -g -Wall test.cpp -o test.out编译选项option功能举例输出格式-E预处理宏替换、头文件展开、去掉注释g++ -E test.cpp -o test.i*.i-S生成汇编文件g++ -S test.i -o test.s*. s-c生
2021-03-23 13:08:32
3771
原创 gdb命令
g++ 简单编译指令g++ -g -std=c++11 main.cpp -o main.outgdb main.out常用的指令如下:1. 运行指令:命令功能run®运行到第一个断点处,再次执行r时将从头开始continue©继续执行到下一个断点处,或运行结束next(n)单步跟踪执行,遇到函数调用时不进入函数,直接跳过step(s)单步调试,如果遇到函数调用,将进入到函数内部until(u)在一个循环体内单步跟踪时,可以运行程序直到退出
2021-03-22 18:18:28
238
原创 数据结构之递归
递归递归的定义递归的作用递归的应用线性递归递归分析递归跟踪递推方程递归模式多递归基递归消除二分递归递归的定义递归是函数和过程调用的一种你特殊形式,允许函数和过程进行自我调用。递归有直接和间接两种形式:· 直接: 在函数中进行自我调用· 间接:某方法首先调用其他方法,再辗转的通过其他方法的相互调用,最终调用起始方法自身递归的作用对实际问题中反复出现的结构和形式高度概括,并从本质层面加以描述和刻画,导出高效的算法。从程序结构来看可以避免复杂的分支以及嵌套循环,从而更简明的描述实现算法,减少
2021-03-22 15:35:00
248
原创 时间复杂度
常见的时间复杂度复杂度名称具体表示常数O(1)对数O(log n)线性时间复杂度O(n)平方O(n^2)立方O(n^3)指数O(2^n)阶乘O(n!)常见的空间复杂度原则1、数组:2、递归深度:
2021-03-22 15:34:40
83
原创 c++笔记----面向对象抽象继承与动态绑定
面向对象一、核心思想 面向对象程序设计的核心思想: 数据抽象,继承和动态绑定。· 数据抽象:将类的接口与实现分离· 继承: 定义相似类型以及对其相似关系建模· 动态绑定:一定程度上忽略相似类型的区别,而以统一的方式使用它们的对象二、继承2.1 基类负责定义再层次关系中所有类共同拥有的成员定义:基类中类型是否相关有两种类型的成员函数需要定义,以及相关的访问控制:①、动态绑定: 类型相关的虚函数定义,类型在程序运行时动态绑定,接受的参数必须是一个对象的引用或者指针类型, virtu
2021-03-22 15:31:12
112
原创 c++笔记----拷贝控制
拷贝控制本章笔记将记录,类在控制拷贝,赋值、移动和销毁的时候都干些什么。学习的重点主要关注以下五个个与拷贝控制有关的特殊的成员函数:拷贝构造函数拷贝赋值运算符移动构造函数移动赋值运算符析构函数拷贝控制操作的定义:当类需要进行构造,赋值,析构的时候需要进行的操作叫做拷贝控制操作。一、 拷贝、赋值和销毁本小节主要关注拷贝构造函数,拷贝赋值运算符和析构函数的相关特性,以及使用这些拷贝控制操作的时机。当我们没有显示的定义这5个特殊的拷贝控制函数时,编译器时常会隐式的帮我们定义好这些拷贝控制函
2021-03-22 15:30:49
118
原创 c++笔记----构造(析)函数能否调用虚函数
构造函数能够调用虚函数吗?在构造函数中调用示例代码class base{public: base(){func()} virtual void func(){cout<<1<<endl};};class derive{public: derive():base(),data(2){} virtual void func(){cout << data << endl;};private: int data;};int m
2021-03-22 15:30:04
130
原创 c++笔记----this指针
this指针this是一个特殊的指针1. 指向调用该成员函数的那个对象。2. 是一个隐含每一个非静态成员函数的特殊指针。对象调用成员函数1. 编译器先将对象的地址赋予this指针2. 通过this指针调用成员函数ps: 每次适用成员函数时,都隐式的使用了this指针this指针的隐式声明1. 创建对象时,this将被隐式声明为 className *const this; · this时常量指针,this不能被改变。2. 对于类中的const成员,this指针类型为
2021-03-22 15:29:23
164
原创 c++笔记----static
static关键字作用修饰普通变量1. 修改变量的存储区域和生命周期,使变量存储在静态存储区,在main函数 运前就分配了空间。2. 如果有初始值就初始化它,如果没有初始值,系统用默认值初始化它修饰普通函数1. 表明函数作用范围,仅在定义函数的文件内才能适用。2. 在多人开发项目时,为了防止与他人命名空间里的函数重名,可以将函数定义为static。修饰成员变量1. 修饰成员变量使所有的对象只保存一个该变量,2. 不需要生成对象就可以访问该对象修饰成员函数
2021-03-22 15:27:39
82
原创 c++笔记----new和malloc的区别
new和malloc的区别属性new/delete是操作符是c++关键字,需要编译器支持。malloc/free是库函数,需要头文件支持返回类型new:内存分配成功后返回的是对象类型的指针,类型严格与对象匹配,无需类型转换;是类型安全的malloc: 内存分配成功后返回void* 指针,需要通过强制类型转换将void*转换为需要的类型;分配失败new:抛出bad_alloc异常malloc: 返回NULL重载C++允许重载new/delete操作符,特
2021-03-22 15:26:54
95
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人