一、cadence PDK 自学笔记-心法
我这边ADS /Cadence PDK基本大部分都是自学完成的。
当然也非常感谢我的前同事周**的帮忙,教了我很多基础的。另外也感谢我现在同事,李**和程*的帮忙,学习了很多cad的视角。
其实对于自学写PDK的小伙伴,一般都要如何学习呢?
我总结了我几次完成的学习流程:(以cadence PDK为例)
- 首先,自学最重要的是一个成就感的搭建,所以需要先确定以PCell为起点去编写结构。并且,需要了解一下,pdk的所有代码文件的结构是什么。
- 对于cadence来说,首先学会如pcDenfinePCell写一个矩形就行了,这样就跑通一个流程了。
- 学习skill的语法,将如何设置变量,如何输入输出,如何判断,如何循环,以及一些数据转换的函数,了解完之后就对skil有个大概的了解了。
- 试着将矩形组合不同的层结构,搭建一些简单的图形。这个时候看看via、圆形、弧形、多边形、path线用哪些函数?
- 学会根据简单的参数,写一个基础的cdf参数。这个时候,可以dump一下别家pdk的cdf的参数,去抄一下别人的面板。
- 在cdf的基础上,写一个简单的callback回调。用encrypt的方式,得到一个解码的lie文件,可以查看一下别人写callback的逻辑。并且,理解callback和cdf与pcell之间的关系。
- 修改cdf面板中仿真的部分,增加netlist的部分进入cell中
- 看看能不能修改libInit去自动载入脚本
- 学习一下如何encode代码,然后用libInit去兼容
- 怎么增加sch,ivpcell,等等仿真器的设置,以及界面的设置,各种调用设置
- 这个时候,可以开始学习DRC的部分,主要是了解单层的规则,比如同层间距,宽度,密度的相关函数;以及双层的规则,如enc、异层间距、内接、外接等等规则函数。
- 之后看看别家的PDK中的DRC,了解DRC工具间不同的语法,大概的通用结构,然后确定自己的语法结构和规则。之后,试着复现一下别家的DRC文件。
- 而后可以了解LVS的规则,都有哪些识别Pin的,哪些是器件识别结构定义的,不同的器件之间又是如何区分的用什么层结构区分的,哪些结构上不能放哪些结构的等等
- 之后看别家的LVS规则,照着抄一遍,就知道别人在面对一些规则问题的处理手法。
- 学习别家的文档体系的构成,都有哪些种类的文件,分别是起到什么作用的,各自又有什么区别。试着自己确定一个文档的格式,并且按照自己的格式,将自己pdk的一些内容整理上去。
- 直接去做某一家业界一线在用pdk的复刻版本,基本上大部分问题你就都能自我学会了。
以veriloga为例,其实和学习pdk的步骤是差不多的,最重要几个节点就是必须了解清楚需要做的东西的结构,使用的工具的语法,然后试着用软件跑通一个编译的流程后,接着去做一些小东西,之后再查阅一些基础功能集合,再去想办法搜集一些资料,帮助自己继续自学,了解透彻handbook上的函数,之后再进行深入的case编写,一边写一边学。
自学的流程其实都差不多的,不过需要时间和毅力去做这个事情,也要相信自己一定可以做成。
(对于垃圾人的pua可以不用管,因为用pua的人本身就是弱者,这种弱者并不仅仅是能力上的,更是意识上的。对所有自学的人来说,什么都不可怕,最怕就是不相信自己,心气一丢,万事皆休。)
我曾经学习电路的时候,摸爬滚打,遇到了一堆的坎坷,也没人跟我讲如何设计,出现了一些我觉得有问题的设计方法,我自己不知道问题出在哪里,感觉自己设计的时候没有章法。然后就被煞笔领导pua过,觉得我学的很慢,但是问他问题他又不给你教导,所以我就在错误的道路上越走越远。
为了摆脱这种局面,我后来找了一堆的研究生毕业文献,专门找那些逻辑讲得清晰详细的,将哪些只会放几个书上公式和各种不靠谱图片的垃圾文献都丢了,然后专门抽空去过了一遍基础课。我原以为自己会用非常长的时间,原计划是三个月。但是,后来我发现开始做起来,就没那么难了。
学习基础课的时间大概两个礼拜就完成了,需要真正学会的东西不太多。一边做一边消化。
最后发现,垃圾领导给我指的方向是错的。难怪我前面几个月一直走弯路到怀疑人生,感觉自己效率low到爆炸。
从那以后我就知道了,大部分人甚至是领导可能都没有我专业,甚至还要防备领导把自己带错方向。从那以后,我把畏惧心放下来了,开始相信自己的判断,质疑领导的判断,结果发现自己的路几乎都是走的正确的,连判断都是正确的。
应该说,从真正相信自己的那一刻起,我就几乎没有做出过错误的决策。
学习也是如此,心不静的话,书在面前也学不会,其实,我发现真正的捷径都在那些你非常害怕并且觉得头皮发麻,疯狂说不行,不可能的地方。
把上面的小任务当成十个项目目标,3-4天一个小目标,1-2个月内基本就能直接写出pdk了。
如果卡壳了(卡壳是很正常的),大概要摸爬滚打了解各种边角的知识,抓住框架是什么,才能继续下去,没有人引导的时候,最长我卡过半年。每个人都会卡壳,我也不例外,要学会面对卡壳,就像面对工程难题一样。
习惯于挑战难题,并相信自己能够挑战难题是优秀工程师的基础素质,所以就从学习这件小事开始做起吧。
相关文章:

一、cadence PDK 自学笔记-心法
我这边ADS /Cadence PDK基本大部分都是自学完成的。 当然也非常感谢我的前同事周**的帮忙,教了我很多基础的。另外也感谢我现在同事,李**和程*的帮忙,学习了很多cad的视角。 其实对于自学写PDK的小伙伴,一般都要如何学习呢&…...

防御保护--NAT策略
目录 NAT策略 NAT类型 server-map表 P2P --- peer to peer 网络类型 编辑 目标NAT--服务器映射 双向NAT 编辑 多出口NAT NAT策略 静态NAT --- 一对一 动态NAT --- 多对多 NAPT --- 一对多的NAPT --- easy ip --- 多对多NAPT 服务器映射 源NAT--基于源IP地址进行转…...

【C++】C++入门 — 指针空值nullptr
C入门 指针空值 指针空值 在良好的C/C编程习惯中,声明一个变量时最好给该变量一个合适的初始值,否则可能会出现 不可预料的错误,比如未初始化的指针。如果一个指针没有合法的指向,我们基本都是按照如下 方式对其进行初始化: voi…...

Vue3+Koa2实现图片上传(不再畏惧)
大家好,我是勇宝,一个热爱前端的小学生,年关将至,提前祝大家新年快乐。今天呢,我们就来好好的啃一啃图片上传,从一个前端开发者的角度来探讨一下图片上传前后端到底都做了哪些事情。 文章目录 一、技术摘要…...

wsl-ubuntu 安装 nginx
wsl-ubuntu 安装 nginx 1. 安装 nginx2. 确认 nginx 启动状态3. 重启 nginx4. 停止 nginx 1. 安装 nginx sudo apt install nginx2. 确认 nginx 启动状态 systemctl status nginx3. 重启 nginx systemctl restart nginx4. 停止 nginx systemctl stop nginx完成!…...

重学Ajax
摘要:AJAX是一个在前端的应用非常广泛技术,为什么还要谈它呢?么得办法之前学的不全面,再收拾收拾。水平有限,欢迎指正! AJAX(全称:Asynchronous JavaScript and XML)是一…...

springboot3+vue3支付宝交易案例-结算支付
springboot3vue3支付宝交易案例-结算支付!今天下午整理了一下结算的内容。遇到了很多问题。汇总分享给大家。 第一个问题:支付宝结算后,返回的交易编码,和交易时间,交易状态,都应该使用varchar来存。 第二…...

c语言 ceil() 函数
ceil()是C语言中的一个数学函数,用于向上取整。它的函数原型定义在math.h头文件中。 ceil()函数的作用是返回一个大于或等于给定参数的最小整数值,即将参数向上取整到最接近的整数。返回值的数据类型为double。 以下是ceil()函数的函数原型:…...

virtualBox虚拟机安装ubuntu后的必要配置
1. 使能双向copy 粘贴功能。在device menu的 shared clipboard项, 选bidirectional. 2.启用共享文件夹。 在device 菜单的 shared folder 项配置, (对于日期乱码问题和命令行打不开的问题请见ubuntu18.04安装后时间日期乱码及terminal打不开解决方法_电脑日期变成…...

《Pandas 简易速速上手小册》第6章:Pandas 时间序列分析(2024 最新版)
文章目录 6.1 时间序列数据基础6.1.1 基础知识6.1.2 重点案例:股票市场分析6.1.3 拓展案例一:温度变化分析6.1.4 拓展案例二:电商平台日销售额分析 6.2 日期与时间功能6.2.1 基础知识6.2.2 重点案例:活动日志分析6.2.3 拓展案例一…...

滇西科技师范学院食堂大宗物资采购项目(冰冻制品类)招标公告
滇西科技师范学院食堂大宗物资采购项目(冰冻制品类)招标公告 (招标编号:YDZOH20240158) 项目所在地区:云南省,临沧市,市辖区 一、招标条件 本滇西科技师范学院食堂大宗物资采购项目(冰冻制品类)已由项目审批/核准/备案机关批准,项目资金来源为…...

(2024,SaFaRI,双三上采样和 DFT,空间特征和频率特征)基于扩散模型的图像空间和频率感知恢复方法
Spatial-and-Frequency-aware Restoration method for Images based on Diffusion Models 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 3. 方法 3.1 修改数据保真度 3.2 …...

【Linux】环境基础开发工具的使用之gcc详解(二)
前言:上一篇文章中我们讲解了Linux下的vim和yum的工具的使用,今天我们将在上一次的基础上进一步的讲解开放工具的时候。 💖 博主CSDN主页:卫卫卫的个人主页 💞 👉 专栏分类:Linux的深度刨析 👈 Ὂ…...

go语言-用channel控制goroutine的退出
用channel控制goroutine的退出 本文简要介绍了,如何用channel控制goroutine的退出的基本方法 for-range主动停止goruitine package mainimport ("fmt""sync""time" )/* Go并发编程模型:主动停止goroutine 方法一&#…...

强大的虚拟机Parallels Desktop 19 mac中文激活
Parallels Desktop是一款功能全面、易于使用的虚拟机软件,它为用户提供了在Mac电脑上同时运行多个操作系统的便利。 软件下载:Parallels Desktop 19 mac中文激活版下载 Parallels Desktop 19 mac具有快速启动和关闭虚拟机的能力,让用户能够迅…...

单元测试框架深入(一):单元测试框架深入
一、一个简单的例子 1、引入Maven依赖:JUnit框架和Surefire插件 2.在src/test/java目录下新建名字以“Test”结尾的测试类,并用Test注释测试方法 3.运行单元测试用例 或用mvn命令运行单元测试: 二、单元测试基础之单元测试框架:J…...

苏门X学士常识学习
前言 苏轼(1037年—1101年)是北宋的文坛领袖,很喜欢奖掖后进。其门下最有名的是“苏门四学士”,另外还有“苏门六学士”和“苏门后四学士”之说。 一、苏门四学士 苏轼在《与李昭玘书》中说: 轼蒙庇粗遣࿰…...

MD5算法:高效安全的数据完整性保障
摘要:在数字世界中,确保数据完整性和安全性至关重要。消息摘要算法就是一种用于实现这一目标的常用技术。其中,Message Digest Algorithm 5(MD5)算法因其高效性和安全性而受到广泛关注。本文将详细介绍MD5算法的优缺点…...

JavaScript基础五对象 内置对象 Math.random()
内置对象-生成任意范围随机数 Math.random() 随机数函数, 返回一个0 - 1之间,并且包括0不包括1的随机小数 [0, 1) 如何生成0-10的随机数呢? Math.floor(Math.random() * (10 1)) 放大11倍再向下取整 如何生成5-10的随机数&…...

curl之网络接口
Curl_cftype 连接接口定义 struct Curl_cftype {const char *name; /* name of the filter type */int flags; /* flags of filter type */int log_level; /* log level for such filters */Cu…...

Pytest中doctests的测试方法应用
在 Python 的测试生态中,Pytest 提供了多种灵活且强大的测试工具。其中,doctests 是一种独特而直观的测试方法,通过直接从文档注释中提取和执行测试用例,确保代码示例的正确性。本文将深入介绍 Pytest 中 doctests 的测试方法,包括基本用法和实际案例,以帮助你更好地利用…...

Android 8.1 铃声音量通话音量同步调节
Android 8.1 铃声音量通话音量同步调节 最近收到客户反馈,想要实现铃声音量通话音量同步调节,具体修改参照如下: /frameworks/base/core/java/android/preference/SeekBarVolumizer.java if (defaultUri null) {if (mStreamType AudioMan…...

C++——字符串string
C——字符串string C语言中对字符串的表示通常用指针,新手会面临内存泄漏或者段错误等众多问题。 在 C 中, string 类是标准库的一部分,用于表示和操作字符串。它是对传统的 C 风格字符串(以空 字符 ‘\0’ 结尾的字符数组&…...

HBuilder使用[微信小程序开发者工具] 显示 × initialize报错
解决办法 我们先要单独打开 微信开发者工具 点击设置里面的安全,把服务器端口打开 然后再回到我们的HBuilder使用重新打开打开 成功打开...

洛谷P8599 [蓝桥杯 2013 省 B] 带分数
[蓝桥杯 2013 省 B] 带分数 题目描述 100 100 100 可以表示为带分数的形式: 100 3 69258 714 100 3 \frac{69258}{714} 100371469258。 还可以表示为: 100 82 3546 197 100 82 \frac{3546}{197} 100821973546。 注意特征:带分…...

grafana安装DevOpsProdigy KubeGraf 1.5.2
安装DevOpsProdigy KubeGraf需要安装kube-state-metrics 官方地址:https://github.com/kubernetes/kube-state-metrics/tree/release-2.10/examples/standard 查看k8s版本和kube-state-metrics对应版本: [rootmaster1 kube-state-metrics]# ll 总用量 …...

大数据 - Hadoop系列《三》- MapReduce(分布式计算引擎)概述
上一篇文章: 大数据 - Hadoop系列《三》- HDFS(分布式文件系统)概述-CSDN博客 目录 12.1 针对MapReduce的设计构思 1. 如何对付大数据处理场景 2. 构建抽象编程模型 3. 统一架构、隐藏底层细节 12.2 分布式计算概念 12.3 MapReduce定义…...

了解Ansible自动化运维工具及模块的使用
一、Ansible的相关知识 1.1 Ansible工具的了解 Ansible是一个基于Python开发的配置管理和应用部署工具,现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点,Pubbet和Saltstack能实现的功能,Ansible基本上都可以实现。Ansible…...

sql指南之null值用法
注明:参考文章: SQL避坑指南之NULL值知多少?_select null as-CSDN博客文章浏览阅读2.9k次,点赞7次,收藏21次。0 引言 SQL NULL(UNKNOW)是用来代表缺失值的术语,在表中的NULL值是显示…...

常见消息队列:ActiveMQ、RabbitMQ、RocketMQ、Kafka的区别总结
目录 前言 1、常见消息队列 1.ActiveMQ 2.RabbitMQ 3.RocketMQ 4.Kafka 2、区别 1.消息传递模型 2.消息持久化 3.消息顺序性 4.可靠性 5.生态系统和社区支持 6.表格对比 前言 消息队列可以实现应用程序之间的异步通信,能够实现异步消息的发送和接收&am…...