自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(226)
  • 收藏
  • 关注

原创 Molding和Pkg的区别

Molding 是一种封装工艺,用于将芯片及内部连接用材料包覆成型。PKG 是一个已经完成所有封装工艺的成品芯片,可供系统安装和使用。

2025-05-09 14:49:10 260

原创 3.CFD 计算过程概述:CFD 工作原理

2-5、某型注射器的内流场网格划分_哔哩哔哩_bilibili

2025-05-05 16:18:15 175

原创 2.CFD 计算过程概述:Fluent在散热计算中的优势

2025-05-05 15:24:45 219

原创 1.CFD 计算过程概述:有限元仿真与CFD介绍

XX。

2025-05-05 10:52:32 211

原创 13.多边形的三角剖分 (Triangulation) : Triangulation

目录1.Existence2.Ear-cutting3.Two-Ear Theorem4.Well-Order5. Ear Candiadte6.Induction7.Well-Order(Again)8.Properties只讨论简单多边形外边界逆时针进行,内部hole顺时针进行描述。这样做能够保证无论是沿着外边界还是内边界行径,这个多边形内部总是在左手边convex:在里面表现为吐reflex:在里面表现为土empty:表示里面没有包含多边形其它的点dirty: 包含多边形其它的点至少存在2只耳朵等价

2025-05-02 10:16:13 310

原创 12.多边形的三角剖分 (Triangulation) : Fisk‘s proof

有边相连的顶点,颜色必须不同。正交多边形:所有画廊要么是水平,要么是垂直的。RGB任何一个颜色都足以覆盖整个多边形。如果存在空洞,就没有办法进行三染色了。引入内对角线,得到三角剖分。

2025-05-01 23:15:16 341

原创 11.多边形的三角剖分 (Triangulation) : 画廊问题

任意给定一个多边形P, 如果要足以用一些点(哨兵)将其覆盖的话,这个哨兵的几何最少能够达到多少?假设存在一个艺术馆,里面存在很大艺术品需要看管,那最少需要多少个哨兵才能覆盖呢?任何一个多边形都可以分解为多把扇子,而且不会超过 n/3 把。上述多边形,凸包,星形多边形只需要一个哨兵就可以了。如果是n个点组成的多边形,最多需要n个摄像头。不能,因为绿色的点只用一个哨兵覆盖不到。这是一个NP hard 的问题。红色为哨兵,黄色为覆盖的部分。怎么给出画廊的最优的方案?是否可以用更少的哨兵呢?

2025-05-01 22:43:17 386

原创 10.Geometric Intersection: Edge Chasing

两个凸多边形所表现的差,可以分解为月牙形的形状。

2025-05-01 11:04:42 162

原创 9.Geometric Intersection: Detection Intersection between convex polygons

如果medium edge 不能立即判断是否存在交点,可以排除黄色部分的线。如果medium edge 不能立即判断是否存在交点,可以排除黄色部分的线。任何凸多边形可以分为两段,一段单调递增,一段单调递减。将任何一对凸多边形的相交转换为两对单调链的相交检测问题。在非空交集任意取一个x,然后向左和向右发出一条射线。只需要关心如何有效判定两个凸多边形是否存在交集。直接通过medium edge 找到相交点。

2025-05-01 10:25:14 159

原创 8.Geometric Intersection: Segement Insertion Report

到达黄色交点的时候会导致上下两条蓝色的线变为紧邻,需要做相交测试。Step2: 加塞新的事件。上面这种情况会导致效率非常低。上述情况并没有在课堂上讨论。一些可能出现的特殊情况。

2025-04-29 10:21:33 281

原创 7.Geometric Intersection: Interval

To-Left test,一对线段有交集,当且仅当其中任何一条线段的两个端点,都位于另一个所在直线的异侧。通过IEU 规约,求解Interval intersection detection 算法复杂度。1.Status structrure: 竖直方向,一些列的活跃线段。IID的输出如果存在交集,那么IEU的输出就存在重复出现的数字。如果存在交集,必然会有两个连续的 LL 或者 RR。2.Event Queue: 水平方向,存储事件。先进行筛选,再做有目的性的比对。有没有更加简洁的方法呢?

2025-04-26 16:41:27 382

原创 6.Geometric Intersection (几何求交)- Preliminary

难度由易到难。

2025-04-26 14:18:47 219

原创 5.凸包-Divide-and-conquer

在凸包中也使用这种思想。

2025-04-20 15:54:23 213

原创 4.凸包-Graham Scan

根据角度进行排序。

2025-04-20 11:24:47 316

原创 3.凸包-Lower Bound

使用Reduction,知道一个算法复杂度的参考左边的A问题已经研究的非常透彻。右边B问题未知,难度也未知通过建立关系,A的任何一个输入都可以转换为B的一个输入。B问题无论用任何的算法,只要能够算出一个输出,可以立即将其转换为A的输出。转换过程都不能超过线性的时间。

2025-04-20 09:59:23 186

原创 2.凸包优化求解

典型的减而治之算法就是插入排序方法在未排序中选择一个元素,插入到已经排序号的序列中。

2025-04-19 16:42:10 354

原创 1.凸包、极点、极边基础概念

如果是极点那么久不可能在一个三角形的内部,所以采用排除法,剩下的就是极点。更加聪明的做法,如果一个点位于三条直线的left,那么它一定位于三角形内。上述问题可以进行一个抽象,抽象为一个color space。这些钉子可以转换到坐标轴中,横纵坐标表示颜色的比例。极点上存在一条直线,使得所有的点落在它的一侧。因为这种颜色大不了不用,但也不可能是负的。遍历所有可能的三角线组合,排除非极点。极边:所有的点落在同一侧,就是极边。凸包就是上面蓝色皮筋围出来的范围。极边的算法效率高于极点的算法效率。

2025-04-17 22:46:06 465

原创 1.设计模式简介

每一个设计模式描述了一个在外面周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必重复劳动。

2025-04-14 22:26:44 357

原创 GDB: coredump

or#-c指定转储的core文件# 进入后输入bt查看调用栈bt #显示所有帧栈bt 10 #显示前面10个帧栈(感觉没啥用)bt -10 #显示后面10个帧栈(感觉没啥用)bt full #显示帧栈以及局部变量效果如下:这篇文章主要讲GDB和coredump两个方面。

2025-03-29 17:40:09 1097

原创 BSCAN2-4:Process DFT Specification and Extract ICL

下一步是处理在上一步中创建、编辑和验证的DFT(Design for Test)规范。此步骤将创建并插入DFT规范中所有组件的硬件。使用命令生成并。对于Tessent BoundaryScan,TAP控制器和 boundary scan cells 将被插入。由于 bundary scan 连接到TAP,而TAP是一个IJTAG节点,因此使用IJTAG。以下示例生成并插入设计中由DFT规范请求的硬件。以下示例生成由DFT规范请求的硬件,但不将硬件插入设计中。

2025-03-19 10:29:01 352

原创 BSCAN2-3:Create DFT Specification

在设计流程的下一步是。使用命令可以根据之前在步骤中定义的 DFT 需求,创建一个默认的 DFT 规范。你可以使用命令来报告这个默认的 DFT 规范。有多种方法可用于编辑或配置 DFT 规范,以满足你的特定需求。

2025-03-18 18:34:05 427

原创 BSCAN2-2:Specify and Verify DFT Requirements

测试访问端口(TAP)需要四个必需的引脚(TDI、TCK、TMS 和 TDO),这些引脚必须连接到芯片级的pad IO macro。:如果需要为 TDI、TMS、TCK 和 TDO 指定内部引脚,并且这些引脚连接到芯片级的焊盘 IO macro,则需要两次插入过程。以下示例展示了在嵌入式边界扫描中,如何提供一个需要插入边界扫描单元的pad I/O 端口的 Tcl 列表,并将设计级别设置为子模块级别。TAP 引脚可以在约束文件(dofile)中指定,也可以在引脚顺序文件中定义。

2025-03-18 18:16:54 1041

原创 BSCAN2-1:load design

扫描链从引脚顺序文件第一行中列出的端口所创建的单元开始,接着是第二行中列出的端口所创建的单元,依此类推。

2025-03-18 11:22:22 981

原创 BSCAN1:Intruoduction to Tessent Boundary Scan

由于表面贴装器件(SMD)的普及,印刷电路板(PCB)的在线测试(In-circuit test)已经变得不那么有效。边界扫描(Boundary Scan)技术提供了在线测试的优势,而无需物理访问电路板上的电气网络。通过添加边界扫描逻辑,您可以检测到大多数电路板制造过程中的故障:错误的元件缺失的元件方向错误的元件引脚卡住、短路或开路的元件焊接失败(Failed wire bonds)

2025-03-18 10:39:49 836

原创 第7章 站在对象模型的尖端3: RTTI

运行时类型识别(RTTI)允许程序员查询对象的实际类型,以及将基类的指针或引用转换为派生类的指针或引用。这里的type是所有类型的基类,fct代表单一函数类型,而gen代表可以被重载的函数类型。当尝试将 type* 指针转换为 fct* 时,如果该指针实际上指向的是 gen 对象,那么使用 static_cast 将导致未定义行为,因为 gen 和 fct 的内存布局可能不同。

2025-03-16 20:13:51 769

原创 第7章 站在对象模型的尖端2: 异常处理

如果在 catch 块内部再次抛出异常(例如 throw或者 throw e),那么原始的异常对象会被复制,并且新的副本会被传递给下一个匹配的 catch 子句。当一个异常被抛出时,异常处理机制需要确定异常对象的实际类型,这样才能找到匹配的catch子句。如果catch子句中有throw语句来重新抛出异常,那么原来的异常对象会被复制,新的副本将被传递给下一个catch子句。在这种情况下,p是原始异常对象的引用,任何虚函数调用都会基于exVertex的实际类型,对p的修改会传递到下一个catch子句。

2025-03-16 19:48:15 1019

原创 第7章 站在对象模型的尖端1: Template

template functions的实例化:目前有两个策略,一个是编译时期策略,另一个是链接时期策略。但这两个策略都有一个共同的缺点:当template实例被产生出来时,有时候会大量增加编译时间。总结因为模板类型不确定,所以对一个模板类型的变量赋初值可能会是错误的。因为模板类型不确定,所以并不是所有运算符都会支持。模板最后应该以分号结束。因为,在模板类中,所有关于类型的检查会延迟到实例化之后才会发生。

2025-03-16 19:15:00 636

原创 第6章 执行期语义学3:临时对象

s+t 产生的临时对象如果在调用 printf 之前就被摧毁,那么经由 conversion 运算符交给他的地址就是不合法的,真正的结果视底部的delete运算符在释放内存时的进取性而定。临时对象的被摧毁,应该是对完整表达式(full-expression)求值过程中的最后一个步骤。4. 两个临时对象,为了放置上述第一个和第二个临时对象,为的是完成第三个临时对象。完整表达式中,每一个式子产生的临时对象都应该在这个完整表达式被求值之后才能销毁。3. 一个临时对象,放置上述两个临时对象的相减的结果;

2025-03-16 12:10:24 908

原创 第6章 执行期语义学2:new 和 delete 运算符

但是事实上它是由两个步骤完成的通过适当的 new运算符函数实例,配置所需要的内存。*pi = 5;delete运算符的情况类似delete pi;当写下上面这句代码时,如果pi的值是0,C++语言会要求delete运算符不要有操作。我们在看看一个class object 吧而 destructor 的应用也极为类似如果在考虑异常捕获的情况下,我们需要将destructor放在一个try区段中。异常处理会调用delete运算符,然后再一次抛出异常。

2025-03-15 22:21:42 591

原创 第6章 执行期语义学1:对象的构造和析构

我们通过几个例子来看看一般的构造函数和析构函数是怎么安插的吧如上所示,每当一个对象被定义的时候,编译器就会显式插入一个该对象的构造函数,当该对象所在的作用为即将结束的时候,编译器就会自动为它安插一个析构函数。

2025-03-15 21:13:03 672

原创 第5章 构造、析构、拷贝语义学4:析构函数语义学

一个object的声明结束于 destructor 开始执行时,由于每个base class destructor都被调用,所以derived object实际上变成了一个完成的object。与构造函数相比,即使拥有虚函数或者虚拟继承,不满足上述两个条件,编译器是不会合成析构函数的。如果有任何 virtual base classes 拥有 destructor,而目前讨论这个class是最尾端(most-derived)的class,那么它们会以原来构造顺序相反的顺序依次被调用。

2025-03-15 17:32:57 225

原创 第5章 构造、析构、拷贝语义学3:对象复制语意学

如果不对class point提供copy assignment operator,光是依赖默认的memberwise copy,编译器不会产生出一个实例,因为此class已经有了bitwise copy语意,所以implicit copy assignment operator被视为毫无用处,根本不会合成出来。当一个class声明了任何virtual function(一定不要拷贝右端class object的vptr地址,因为他可能是一个derived class object)时。

2025-03-15 17:10:11 337

原创 第5章 构造、析构、拷贝语义学2: 继承情况下的对象构造

只有当一个完整的class object被定义出来(例如 Point3d origin)时,它才会被调用,如果object只是某个完整的object的subobject,他就不会被调用还可以把constructor一分为2,一个针对一个完整的object,一个针对subobject,完整的object无条件调用virtual base constructor,设定vptrs,subobject不调用virtual base constructor,也可能不设定vptrs。

2025-03-15 16:50:11 1017

原创 第5章 构造、析构、拷贝语义学1: “无继承”情况下的对象构造

🍉重点:const与virtualpublic:private:一般而言,类的data members应该被初始化,并且只在constructor中或者类的其他member functions中指定初值。其他任何操作都将破坏封装性,使class的维护和修改更加困难。不将一个函数声明为const,意味着此函数不能够获得一个const reference或const pointer。将一个函数声明为const,意味着不能对data members进行更改。

2025-03-15 14:27:21 656

原创 第4章 Function 语意学3: 函数效能、Member Functions、inline

取一个 nonstatic member function 的地址,如果该函数是 nonvirtual,则得到的结果是它在内存中真正的地址。然而这个值需要被绑定于某个 class object 的地址上,才能够通过它调用该函数。所有的 nonstatic memberfunctions都需要对象的地址 (以参数 this 指出).回顾一下,一个指向 member function 的指针,其声明语法如下。

2025-03-11 20:58:20 691

原创 第4章 Function 语意学2: Virtual Member Functions

每一个 class 有一个virtual table,内含该 class 之中有作用的 virtual function 的地址;然后每个 object有一个 vptr,指向 virtual table 的所在。

2025-03-06 22:21:52 593

原创 第4章 Function 语意学1: Member的各种调用方式

C++ 的设计准则之一就是:nonstatic member function 至少必须和一般的nonmember function 有相同的效率。那么选择 member function 不应该带来什么额外负担。这是因为编译器内部已将member 函数实体”转换为对等的“nonmember 函数实体。现在这个函数已经被转换好了,而其每一个调用操作也都必须转换。

2025-03-06 21:47:37 709

原创 第3章Data语义学4:成员的效率

但这里如果直接操作,因为int Base2::*bmp 只是一个offset,而derived地址下依次是Base1和Base2,根据offset,正好找到 Basel::val1 , 而非程序员所以为的 Base2::val2。例如,假设我们有以下代码:其功能是希望通过成员指针 int Base2::*bmp 访问派生类 Derived 的某基类成员Base2::val2。由于被继承的 data members 是直接存放在 class object 之中,所以继承的引入不会影响这些代码的效率。

2025-03-05 20:14:19 299

原创 第3章Data语义学3:继承 与 Data Member

在 C++ 继承模型中,一个 derived class object 所表现出来的东西,是其自己的 members 上其 base class(es) meinbers 的总和。至于 derived class members和 base classies) members 的排列次序并未在 C++ Standard 中强制指定:理论上编译器可以自由安排之。

2025-03-04 21:52:01 928

原创 第3章Data语义学2:Data Member的布局与存取

最终空间结构为,x y z 被顺序存储freeList 和 chunksize被存放另外的静态空间(static segment)中。因为,Nonstatic data members 在 class obect 中的排列顺序将和其被声明的顺序一样,任何中间静态变量都不会被放进对象布局之中。当出现继承关系时(access sections,即private、protect、public等),

2025-03-04 21:15:45 813

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除