Coding Lane

Rest at the end, not in the middle.

Calibrator模块重构文档

1 开发背景 在我司的EDA产品矩阵中,本人正参与开发的软件(后文称为A软件)正在扮演越来越重要的角色。虽然用于检测成品芯片热点缺陷的后段校准器已在多家厂商开始试用,但前中段工艺流程在芯片制造环节中仍然至关重要。因此有必要开发A软件的前中段校准器,形成完成的前-中-后段工艺全流程仿真工具。 2 涉及修改的主要模块 由于之前开发后段模块时,做了很多特殊场景的判断,因此前段校准器模块的改动具有相...

大文件读取性能优化

1 背景 文件读写(本文只说明读操作,写操作类同)涉及到I/O操作,而频繁的I/O操作会给系统增加负担,导致性能变差。 对于文本文件(text stream),通常用读取行的形式进行解析,这在文件较小时(几十MB左右)性能瓶颈不明显;但对于大文件(百MB~几十GB)的解析时,性能会急剧下降,延时卡顿显著。 基于上述现象,可对大文件采用内存映射和并发读的方式进行性能优化处理。 2 方案设计 功...

文件加密

1 开发背景概述 用户期望CMP软件支持结果加密。 2 加密方法 2.1 加密算法对应的第三方库调研 块加密算法比较流行的是 AES 算法,而ChaCha20-Poly1305是一种流加密算法。AEAD(Authenticated Encryption with Associated Data)加密模式集加密与认证于一体,极大地简化了加密流程,成为目前最受欢迎的加密模式: 传统加密模式(左...

基于CNN的CMP仿真数据建模

1 模型开发背景 机器学习是一种基于数据驱动的人工智能(AI)技术,在各个领域都取得了显著的成果。在基于半导体DFM领域的仿真计算部分,传统的物理模型依赖于开发者结合实际的芯片生产场景,手动计算公式,编写代码规则和逻辑完成建模,但这种方法在处理复杂、不确定或高度变化的wafer data情况下存在较强的局限性。因此业界迫切需要一种只专注于输入/输出的高效模型,能更好地对给定的wafer da...

fftw3集成方法

1 fftw3简介 fftw是业界最常用的fft计算库。由MIT开发和维护,采用mit license,有较高的数值精度和稳定性,同时允许商业使用。 fftw3官网:https://www.fftw.org/ fftw3最新稳定版本:3.3.10 2 fftw3编译安装 1. 下载源码 访问网址:https://www.fftw.org/download.html 下载v3.3.10安装包...

模拟退火算法

1 模拟退火物理背景介绍 金属退火是将金属加热到一定温度,保持足够时间,然后以适宜速度冷却(通常是缓慢冷却,有时是控制冷却)的一种金属热处理工艺。而模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。 如上图,处在低温状态时,固体中分子具有...

CNN基础相关

1 CNN背景与特点 卷积神经网络的特点是:一个或一组恰当的卷积核可以对图像进行各种变化,变化后的图像会突出一些特征,而这些特征恰好是在一些领域中,我们识别图像的关键所在。 !todo

C++Windows/Linux侧编译表现不一致问题汇总

1 背景介绍 C++ 是一种广泛使用的编程语言,常用于开发应用程序、系统软件和嵌入式系统等领域。然而,在不同的操作系统(如Windows和Linux)上进行C++编译时,可能会出现表现不一致的问题。这些问题源于操作系统之间的差异,包括操作系统内核、系统调用、文件路径分隔符、标准库实现以及编译器本身的差异。这些差异可能导致在一个平台上正常工作的代码在另一个平台上出现错误或产生不一致的结果。 ...

单元测试框架——Googletest

Googletest概述 GoogleTest(简称 GTest) 是 Google 开源的一个跨平台的(Liunx、Mac OS X、Windows等)的 C++ 单元测试框架,可以帮助程序员测试 C++ 程序的结果预期(如正常运行、出现bug等)。

智能指针小结

智能指针概述 从较浅的层面看,智能指针是利用了一种叫做RAII(资源获取即初始化)的技术对普通的指针进行封装,这使得智能指针实质是一个对象,行为表现的却像一个指针。 智能指针的作用是防止忘记调用delete释放内存和程序异常地进入catch块忘记释放内存。另外指针的释放时机也是非常有考究的,多次释放同一个指针会造成程序崩溃,这些都可以通过智能指针来解决。 智能指针都需要引入&...

树逻辑专题

234树 234树的节点有三种情况: 1个val值 2个节点(和普通二叉树一致) 2个val值 3个节点 3个val值 4个节点 当节点数超过4时,会发生“节点上溢”现象,上溢后就可以继续插入新元素啦。 B树 B树(B-tree)是一个一般化的二叉查找树(binary search tree),是一种自平衡的树,能够保持数据有序。B树可以拥有多于2个子节点。这种数据结构能够让...

一些有趣的C++代码书写方法

本节内容参考: 【墨鳌】【C++ 编码小技巧】 一、max 和 min 连续取极值 栗子:求 a,b,c,d 的最小值,最大同理。 家常版本: int getMin(int a,int b,int c,int d){ return min(min(a,b),min(c,d)); } 我们只需要在普通的 min() 函数内嵌套一个花括号即可,直接扩展成了多元素最小值。 int...