集成电路物理设计学习笔记
第一章、集成电路物理设计方法数字集成电路设计流程三个I年代,发明,实施和整合
Innovation:布局布线的基本算法、时序分析和逻辑综合的发明
Implementation:开始于FPGA中门阵列的实现,ASIC设计中同等高度标准逻辑单元库的设计
Integration:模块化
芯片的物理实施重点解决的问题
对于深亚微米芯片
解决时序驱动设计
防止工艺天线效应
进行信号完整性分析
对于纳米的设计,需要多考虑的问题
功耗分析和低功耗设计,并要统一考虑它的功能验证,逻辑综合和形式验证
实施纳米设计中的光学近似检查(OPC)和移相掩膜(PSM),增加设计产额和可制造性设计
统计静态时序分析,多端角分析
展平式物理设计
标准逻辑门单元库的简历。采用自下向上的方法,设计晶体管-仿真-建立版图-对逻辑门单元仿真建模
硅虚拟原型设计
与展平化的物理设计流程区别
布图阶段,考虑将整个设计进行分割
布线时用了快速近似的试验布线法
在做RC提取时,可以用集总电容模型
层次化物理设计
芯片设计的最终检查标准之一为是否实现了时序收敛
自上而下的层次化物理设计:将设计分为数个分割块 ...
A-Star算法模拟实现
A star算法模拟实现内容:已知如下图地图,黑色表示障碍物无法通行,要求实现避障算法寻找从红色起点出发到达绿色终点的最优路径。
要求:
(1) 对图中的地图进行建模,抽象成类,对数据进行封装;
(2) 思考寻路算法的实现,对问题进行拆解,对算法实现也要求抽象接口类;
(3) 使用给定的C++工程模板,按照模板编写CMakeLists.txt,以及Google Test单元测试,DoxyGen注释的使用。
数据结构设计
拿到题目最开始的想法就是想静态的实现对地图的绘制,然后对Astar算法进行复习,通过思考过后,觉得map形状,起始点,终点以及障碍,都是可以由用户通过交互的方式来完成的,进而选择将一些必要的数据聚合在类里面封装起来,本次实验一共设计了两个类,分别为Point(用于存储点的信息),Map(用于存储地图的相关信息,同时前端界面的拓展)
1、点的坐标抽象成一个结构体Xy结构体存储的是点的位置坐标,x表示横坐标,y表示纵坐标,初始值都设置为0。
12345struct Xy{ int x = 0; int y = 0;};
2、地图上的每一个 ...
Cmake学习笔记
CMake说明cmake的定义 ——-高级编译配置工具
当多个人用不同的语言或者编译器开发一个项目,最终要输出一个可执行文件或者共享库(dll,so等等)需要用到—-CMake
所有操作都是通过编译CMakeLists.txt来完成的—简单
官网 www.cmake.org
CMake安装http://www.cmake.org/HTML/Download.html 可以下载安装
CMake一个HelloWord1、写一个HelloWord
1234567#main.cpp#include <iostream>int main(){std::cout << "hello word" << std::endl;}
2、写CMakeLists.txt
1234567891011#CMakeLists.txtPROJECT (HELLO)SET(SRC_LIST main.cpp)MESSAGE(STATUS "This is BINARY dir " ${HELLO_BINARY ...
C++ Primer Plus学习笔记7-13章
第七章 函数-C++的编程模块函数的基本概念和应用:
12345具体应用按值传递,按地址传递函数在数组中的应用函数在结构体中的应用函数在string中的应用
1、使用C++函数三部曲提供函数定义:根据返回值来定义函数,在函数中用return返回(函数通过将返回值复制到指定的CPU寄存器或内存单元中将其返回)。
提供函数原型:函数原型描述了函数到编译器的接口,将函数的返回值的类型以及参数的类型和数量告诉编译器。
调用函数:传入实参调用函数。
2、在函数中声明的变量在函数中声明的变量包括参数都是该函数私有的,在函数调用时,计算机为这些变量分配内存,函数结束时,计算机将释放这些变量使用的内存。
3、函数与数组在将数组作为函数参数传递的时候,既可以用int arr[],也可以用int * arr。
4、指针和const常量指针和指针常量
方法1:让指针指向一个常量对象,防止该指针来修改所指向的值
1234// 防止pt修改指向的值,但不能防止修改pt指针// 可以使用age来修改自身的值int age = 18;const int * pt = &age;
const 变量的地址可以 ...
PyTorch使用方法
PyTorch基础语法Pytorch是Facebook主导开发的,基于Python的科学计算包,主要有一下两个特点:
比NumPy更灵活,可以使用GPU的强大计算能力
开源高效的深度学习研究平台
张量
PyTorch中的Tensors可以使用GPU计算
12345678910111213141516171819202122232425import torch# 可以返回填充了未初始化数据的张量torch.empty(5, 3)# 创建一个随机初始化矩阵torch.rand(5, 3)# 创建一个0填充的矩阵,指定数据类型为long:torch.zeros(5, 3, dtype=torch.long)# 创建 Tensor 并使用现有数据初始化:x = torch.tensor([5.5, 3])x#根据现有张量创建新张量。这些方法将重用输入张量的属性,除非设置新的值进行覆盖x = x.new_ones(5, 3, dtype=torch.double) # new_* 方法来创建对象x# 覆盖 dtype,对象的 size 是相同的,只是值和类型发生了变化x = torch ...
分布式系统学习笔记
概述分布式系统的定义
分布式系统是若干独立计算机的集合,这些计算机对于用户来说,像是单个相关系统
重要特性
各种计算机之间的差别以及计算机之间的通信方式的差别对用户是隐藏的
用户看不到分布式系统的内部组织结构
用户和应用程序无论在何时何地都能够以一种一致和同意的方式与分布式系统进行交互
分布式系统的拓展或者升级应该时相对比较容易的
分布式系统的目标
使资源可访问(资源共享)
透明性
开放性(openess)
根据一系列准则来提供服务,这些准则描述了所提供服务的语义和语法。
在分布式系统中,服务通常时通过接口指定的,接口时通过接口定义语言来描述的。
开放的分布式系统应该时可扩展的。
完整性:完成接口实现不可少的内容都已经规定好了
中立性:开发人员能够添加针对特定实现的细节
互操作性:来自不同厂商的系统或组件的两种实现能够在何种程度上共存并且协同工作
可移植性:如果分布式系统A开发了某个应用,并且另一个分布式系统B与A具有相同的接口,该程序在不做修改在B上执行的可行程度
可扩展性(scale in distributed system)scalablity
可 ...
人工智能实验-基于LSTM+CTC的验证码
实验4-基于LSTM+CTC的验证码1、实验目的
会利用循环网络模型解决序列数据的相关问题
2、实验内容
使用循环网络,自主实现效验码中多个数字字符的识别,并使用深度学习框架完成模型的训练
3、实验步骤
实验一共分为两个实践,第一个实践是CAPTCHA识别实践,第二个实践是基于LSTM+CTC的验证码识别是实践,本次实验第一个实践在CPU上完成,第二个实践则在GPU上完成
3.1 CAPTCHA识别实践
获取数据集
tqdm用于显示进度条,captcha用于生成验证码数据集,一共生成100000个验证码图片
1234567891011121314151617181920212223242526272829# 获取数据集from captcha.image import ImageCaptchafrom tqdm import tqdmimport randomimport osH, W, C = 100, 120, 3N_LABELS = 10D = 4def generate_captcha_images(datasets_path, num_images, width=2 ...
人工智能实验-花卉图像分类实验
实验二、花卉图像分类实验一、实验目的
1、掌握如何使用MindSpore进行卷积神经网络的开发
2、了解如何使用MindSpore进行花卉图片分类任务的训练
3、了解如何使用MindSpore进行花卉图片分类任务的测试
二、实验步骤
华为云环境的配置
使用ModelArts,并建立Notebook
进入ModelArts
点击管理控制台
创建Notebook
本次实验选择的是以下配置
mindspore1.7.0-cuda10.1-py3.7-ubuntu18.04
GPU: 1*V100(32GB)|CPU: 8核 64GB
在华为的GPU上运行
创建过后便可从列表中进行相关操作
实验步骤
导入相关函数
1234567891011121314151617181920from easydict import EasyDict as edictimport globimport osimport numpy as npimport matplotlib.pyplot as pltimport mindsporeimport mindspore ...
人工智能实验-基于tensorflow的猫狗分类
实验三、基于tensorflow的猫狗分类一、实验目的
掌握如何使用tensorflow/pytorch编程实现模型,并会使用JupyterNotebook或Pycharm完成项目
二、实验内容
完成猫狗分类的模型的编码实现和模型训练
三、实验步骤
导入需要的函数包
12345678910import numpy as npimport pandas as pdfrom tensorflow.keras.preprocessing.image import ImageDataGenerator, load_imgfrom tensorflow.keras.utils import to_categoricalfrom sklearn.model_selection import train_test_splitimport matplotlib.pylab as pltimport randomimport os
定义常量
12345FAST_RUN = FalseIMAGE_WIDTH = 128IMAGE_HEIGHT = 128IMAGE_SIZE = (IMAGE_WID ...