平方根倒数算法
平方根倒数算法
1/\sqrt{x}求一个数的平方根倒数对于计算机来说求一个数的平方根一般有两种方式,二分法和牛顿迭代法
二分法
EXP表示精度,从0-num不断开始计算mid的平方,直到left>right,此时返回right的值即为所求的平方根,其中注意边界条件:
当mid mid = num时,此时left需要加上EXP,往后的循环中mid mid 都会大于num,所以right还会不停减小,直到right < left,返回right,这时right已经在精度范围内
1234567891011121314double Sqrt(double num) { double left = 0, right = num; while (left <= right) { double mid = left + (right - left) / 2; if (mid * mid <= num) left = mid + EXP; else ...
Git小case
实习中使用git经验
类似的应用类的工具,最好是在实践应用当中积攒相关经验,有了两端实习经历,发现在不同的实习单位,对于git的使用规范都有一定的要求,并且不同单位可能要求也有所不一样。
第一家单位在对代码仓库进行管理的时候,因为团队的人数不多,在远程的分支不会很多,本地的分支不会轻易的往远程进行推送,更多的是,如果有新的feature,会由系统管理员开启一个分支,而参与到这个feature开发的人员使用同一个分支来完成,通常参与到同一个feature开发的人员不会很多,也就是2-5人,所以会共同在这一个分支上开发。开发流程就是,先拉取,后推送,如果有冲突,直接在本地自行merge解决,涉及到其他开发人员的共同review关联代码,当完成一个feature以后,将分支合入主线。
而另一家单位,由于团队人员比较多,代码模块也比较大,所以开发人员在开发的过程中,每天都会先从feature的分支中切出一个自己的分支,会在自己的分支上进行开发,开发完以后,再将自己分支合入到feature,而合入的过程也并不是简单粗暴的使用git merge,而是使用git cherry-pick -i将自己分 ...
GAMES101现代计算机图形学入门-02
计算机图形学02
Transform(变换),图形的变换
12345为什么学习变换2维变换:旋转、缩放、切变齐次坐标 Homogeneous coordinates组合变换3维变换
二维变换将矩阵和变换联系起来
1、缩放
将坐标在向量左边乘一个对角矩阵
2、反射对称
3、切变(Shear Matrix)
水平方向坐标发生改变,竖直方向不变,水平的移动大小,按照Y的当前坐标成正比
4、旋转
.PNG)
通过矩阵乘积可以将一个输入图形的坐标转化为想要的输出矩阵的坐标,这样的变换都称为线性变换
齐次坐标(homogeneous coordinates)
平移操作无法使用线性变化即矩阵的乘法来获得,所以引入齐次坐标,增加一个维度
齐次坐标的矩阵操作,可以叫做仿射变换
增加维度以后,通过与新增加列的运算就可以达到平移的变换
Q:Why?将二维的点,增加一个1,将二维的向量,增加一个0
1、通过增加的维度可以标识当前的坐标表示点还是表示向量。可以保证向量具有平移不变性
2、最后一个维度的运算正好表示运算结果的性质
3、点+点,得到的结果为两个点的终点,因为第三维为2, ...
GAMES101现代计算机图形学入门-01
计算机图形学01
应用场景:电影,动画,可视化,家具,模拟,虚拟现实(VR),GUI(图形用户接口),字体
好的画面:足够亮(全局光照)
12341、光栅化 Resterization2、曲线曲面(几何) Curves and Meshes3、光线追踪 Ray Tracing4、动画/模拟 Animation/Simulation
计算机图形学 VS 计算机视觉
MODEL,计算机画(图形学)
正向箭头:将三维空间的图形在二维中展示出来,特指图像渲染
自我箭头:MODEL的自我渲染,与图像无关
IMAGE,计算机看(计算机视觉)
反向箭头:从图形中推导和识别出图像的特征
自我箭头:依赖深度学习对图像进行处理
作业相关
1231、作业链接:http://games-cn.org/forums/topic/allhw/2、作业使用的系统:smartchair3、Use IDE:集成开发环境
线性代数——A Swift and Brutal Introduction to Linear Algebra
数学:线性代数,微积分,统计,物理:光学,力学,信号处理,数值分析
向量V ...
iEDA项目代码实践
iEDA工程代码实践—布局合法化(LG)
开源项目iEDA链接:https://gitee.com/oscc-project/iEDA.git
一、理论知识布局合法化是全局布局以后的一个过程,在全局布局过后,规划版图中的宏单元会放置在相应的位置并保持不再移动,于此同时,对于标准单元的规划,也会通过一些相关算法完成大致位置的摆放,这些摆放是基于相关优化目标下进行的,例如线长,面积等,但是在全局布局中并不会考虑标准单元之间的非法情况,即标准单元重叠的问题,因此在布局合法化中,需要完成的任务就是在尽可能的不破坏全局布局的布局结构的情况下,使得所有标准单元不再重叠。核心算法用到的是Abacus算法和Tetris算法。
二、Abacus算法
同一时间只放置一个单元
算法伪代码
.ppvdvgbuwvmy{}
核心代码
123451、根据单元的x坐标进行排序2、对于每一个排序好的单元,按照顺序取出每一个单元3、遍历第一行,找出当前行中放置该单元后能够使得cost最小的位置4、按照第3步的方式遍历每一行,找出全局中能够放置当前单元并使得cost最小的位置5、放置该单元
placeRow解析
...
EDA基础知识总结
一、布局布局算法:二次线长布局算法+力矢量布局设计目标:调整不同元胞在元胞中的摆放位置,使得元胞在版图中的连线最短,同时确保在布局中没有重叠
二次线长布局分为两个阶段
第一阶段:依据元胞的中心对元胞进行布局,从而对二次线长函数最小化
第二阶段:将元胞中集中在许多元胞重叠的大的结群打散,从而使所有单元原来的重叠消除
12输入:线网连接,限制的版图区域输出:所有元胞的x坐标和y坐标
数据结构设计1、元胞可以抽象成一个含有x,y坐标的结构体
2、网表抽象为二维map,记录不同元胞之间的连线情况,同时x,y代表元胞在map中所处的位置信息
算法主要思想第一阶段:全局布局(二次线长布局)
在全局布局的过程中,将元胞的坐标抽象成为中心点的坐标,不考虑其面积、大小以及布局的合法化,仅仅是以最优化模块之间的线长为目标。
123456789已知线网的的连接,限制的版图区域,求不同元胞在版图中摆放的位置,使得所有元胞在版图中的连线最短。求:所有的元胞的x坐标和y坐标。1、列出所有连接的元胞线网的X的总线长L(p):所有的x距离的差的平方2、分别对所有参数中的x求偏导,并令偏导为03、列出方程组,解 ...
VLSI超大规模集成电路物理设计
第一章 绪论电子设计自动化(EDA)EDA(Electronic Design Automation),全称电子设计自动化,是用来辅助超大规模集成电路设计生产的工业软件,涵盖电路芯片设计、制造、封装、测试整个流程。随着芯片设计的复杂程度不断提升,基于先进工艺节点的集成电路规模可达到数十亿个半导体器件,不借助EDA已经无法完成芯片设计。
EDA工具是集成电路设计和制造流程的支撑,是集成电路设计方法学的载体,也是连接设计和制造两个环节的纽带和桥梁。
采用软件来实现自动化
EDA将设计者的需求分为电子系统层次结构中的多个级别,包括集成电路、多芯片模块和印制电路板
EDA工具总是面向整个设计过程的自动化,并将设计步骤链接成一个完整的设计流。
VLSI设计流程
系统规范—架构设计—功能和逻辑设计—电路设计—物理设计—物理验证和签收—制造—封装和测试—芯片
物理设计关键步骤还可以细分
划分—芯片规划—布局—时钟树综合—布线—时序收敛
系统规范
定义系统的总体目标和高级需求:功能、性能、物理尺寸、生产技术
架构设计
模拟和混合信号模块集成
存储管理——串行或者并行——寻址方案
计算核的类型核 ...
集成电路静态时序分析学习笔记
第一章 引论
集成电路:在一块很小的硅单晶片上,利用半导体工艺制作出许多二极管、晶体管以及电阻、电容等,并连接成能完成特定电子技术功能的电子电路。
静态时序分析技术静态时序分析既要检验门级电路的最大延迟、以保证电路在指定的频率下能够满足建立时间的要求,同时要检验门级电路的最小延迟、以满足保持时间的需求。
静态时序分析优缺点
优点
分析执行速度快
不需要测试向量
对于有时序路径的时序,测试覆盖率可以近乎达到100%
能够完成动态仿真所不能实现的复杂分析
缺点
不能验证设计的功能
智能验证同步时序电路的时序特性
不能自动识别设计中的特殊路基
第二章 静态时序分析的基础知识逻辑门单元
反相器:根据输入数据的逻辑电平进行逻辑取反的求值运算,并通过输出导出求值结果。
逻辑门延时:逻辑单元自身逻辑求值的时间。信号线延时:逻辑信号从逻辑门单元的输出端口开始在互连线上传播到下一级逻辑输入端口的延时。
门单元的时序计算参数组合逻辑门单元相关的时序参数主要包括信号转换延时和逻辑门延时
1、信号转换延时
输入端口或输出端口的信号电平由高到低或由低到高所需要的时间即为信号转换延时。
可以调整 ...
Modern C++学习笔记
Effective Modern C++学习笔记
重点掌握auto、智能指针、移动构造、lambda
第一章、类型推导条款1、模板类型推导12345678910111213141516情况一、按值传递,传入副本template<typename T>void f(T param)情况二、引用传递,传入地址template<typename T>void f(const T& param)情况三、指针传递template<typename T>void f(T* param)万能引用,即也可以引用右值情况四、万能引用,如果是右值,则传入的是右值的地址template<typename T>void f(T&& param)
当向引用型别的形参传入const对象时,他们期望该对象保持其不可该修改的属性,即const引用
因此向持有T&型别的模板传入const对象时安全的
当使用万能引用时,型别推导规则会区分实参是左值还是右值,如果是左值就是单个引用情况“&”,如果是右值则是“&& ...