IC入职新同学必备技能手册①
欢迎关注个人公众号摸鱼范式
转载自:https://zhuanlan.zhihu.com/fpga-hw-discussion
作者:知乎用户
生的安格斯牛排
写在前面
准备用3-5篇文章的篇幅,将一些必备的技能cover一遍,期望对于入职IC的新同学有一些帮助。这些东西,每一项其实在网络上的介绍资源都非常丰富,但是IC新同学常常面对的问题是,并不知道“原来这个事情是这么做的”。所以,长话短说。
预计的topic list:
- Shell and Vim
- 正则表达式
- Perforce (版本管理系统)
- Shell脚本套路
- Tcl脚本套路
- Perl脚本套路
- Makefile套路
为什么是这三个语言?
- 曾几何时,在找工作时候看Job Description,会发现几乎大部分数字岗位都要求“熟练csh/tcl/perl脚本”。当时,天真以为,“反正都是脚本,会一个就能过关了”。实际上有点大错特错。
- 实际上,这三个脚本技能(我不称为技术,因为它们只是工具)是有非常鲜明的针对性的,是都要会的(除了Perl稍微有点复杂,Tcl/Shell巨简单)
Shell (cshell or bash)
具体这两者的区别就不介绍了,应用上来看,就是一些语法细节的区别。cshell对于会C语言的同学,更容易上手一些。而且,在centOS系统中,默认的脚本解释系统是cshell (tcsh)。所以,如果想学,就是从cshell开始吧 (熟练bash的可跳过this section)。
Shell脚本的目标:
- 批量执行linux命令或者其他self-made脚本的wrapper脚本(理解为一个总管)
- 能吃进命令行传参,配合if/else, foreach等分支,完成简单的组合功能。
优点:
- 太容易写了,配合linux各种內建cmd (grep, sed, ls, echo, awk, mutt)基本能完成你想做的任何操作,是做批量处理动作的最佳选择。
缺点:
- 复杂文本处理任务上,没有perl那么轻松,配合sed,马马虎虎,不堪重任。
Tcl
Tcl语言,是工具语言 (Tool command language),是一个能直接操作EDA的工具语言。
Tcl的目标:
为什么能操纵EDA?
- 几乎所有EDA平台,都会将开源的Tcl解释系统include到自己的软件系统中,魔改并提供一些自己EDA平台专用的函数(比如dc_shell)。
- IC公司的Inhouse eda team,也会魔改Tcl,提供一些专用功能的函数(比如nv的tn_shell)。
优点:
- 其实没啥大优点,它是IC新同学必须会的一种语言,操纵EDA就靠它了。
缺点:
- 在文本处理和Hash类数据结构的访问上,没有Perl那么方便。
Perl
Perl语言其实在互联网界被黑的有点狠,因为它的语言“随意性”真的是太随意了。如果你是C出身,一开始入门这个语言的时候,会头疼到想放弃,使用规则特别的不严谨。
比如:https://www.zhihu.com/question/37944158/answer/77018535
优点:
- Perl语言对于文本处理和Hash类数据结构的支持,太过强大了。。是一个你绕不过去的语言。
- 什么是Hash类数据结构?其实Hash (哈希) 的讲解都太高深莫测。说白了,在IC flow中会用Hash这种数据结构,描述很多config类型的数据,并读取。例如:
$cadConfig = {'chip_name' => 'ampere','jtagreg_dir' => 'xxx',
};# 访问的时候,只要:
print $cadConfig->{'chip_name'} , "\n"; # 即可
缺点:
- 语法不严谨,对于强迫症同学,真的很头疼。
后面的安排
- 讲解语言其实很费篇幅,但是!我只会从“工具字典”的角度写短文,将三个脚本最常用的code block拿出来,分解讲一下。这样,同学们在使用时候,只需要点开文章,按图索骥即可。没必要remember.
IC入职新同学必备技能手册①相关推荐
- 刚入职新公司做一些什么贡献_如果您有全职工作,如何为Kubernetes做贡献
刚入职新公司做一些什么贡献 当我在IBM产品安全事件响应团队工作时,我于2018年10月开始为Kubernetes (K8s)做出贡献. 我被分布式系统所吸引,但在日常工作中无法与它们合作,因此我的导 ...
- 入职新公司,如何快速凸显个人价值
如果你初入职场,你是否对职场充满好奇与期待:如果你刚刚跳槽,你是否迫切地希望展示自己的才华!当你进入新公司之后,如何能够快速上手工作.融入团队,展现能力,凸显价值? 如果你对新职场存有困惑,以下八个方 ...
- 入职新公司第一周的感受
0.刚参加工作的实习生 1.经过n轮面试,终于进入了大厂 2.入职新公司第一周的感受 3.勤劳的我被工作干扰师打断了 4.摸鱼大王 5.产品经理低头是在想需求吗? 6.好家伙我还以为是作秀,原来是现实 ...
- 一年前被恶意裁员,最近入职新公司背调到上家HR,HR竟主动说我坏话,我可以起诉他恶意诽谤吗?...
背调被上家公司说坏话并不少见,但还没等人家背调公司开口问,就主动说候选人坏话,这样的HR可不多见! 一位网友就遭遇了这样的奇葩: 一年前上家恶意裁员!跟HR僵持过,最近入职新公司需要背调,背调到上家, ...
- 刚入职新公司上班需要注意的点有哪些
新人刚入职,对一切还不熟悉.又怕犯错又怕别人觉得你太冷漠.不知道自己该怎么做,手足无措.那么刚入职新公司上班需要注意的点有哪些?博士后招聘整理了如下的内容供大家做参考. 1.不要试着既快速又完美地融入 ...
- 入职新公司-如何更快的适应节奏(第二周要干活)
刚入职新公司的第一周应该是比较紧张的,因为第一周算是我们熟悉的时间,到第二周有可能就要开始做项目了,甚至有的节奏快的公司也就让你熟悉个两三天后就开始干活了.那么在这短短的几天的时间里,我们应该重点熟悉 ...
- 我如何一分钱没花学完AI课程,入职新浪算法工程师
机械工程专业本科毕业2年 在某灯具公司任结构工程师 月薪10k,晋升无望,涨薪缓慢,学不到新东西 每天日复一日画图建模,机械性工作非常消耗我的热情 行业发展平缓,吃不饱,饿不死 以上,是我下定决心转行 ...
- 入职新公司,如何快速上手公司业务?
最近很多小伙伴入职新公司,问我入职好如何快速上手自己负责的产品,这里说一下自己的看法: 1.了解一下公司的业务逻辑 可以通过请教别人的方式,了解一下公司的业务,请教的时候可以给别人买一杯咖啡啥的,谁都 ...
- 入职新公司,如何快速熟悉一个系统
文章末尾给大家留下了大量的福利 前言 大家都知道我们新入职一家公司,经常会面临下面一些场景: 新人入职,需要学习已有系统,作为 landing 的一部分,如何学习? 被拉过去参与一个陌生系统的迭代开发 ...
最新文章
- correlation 蒙特卡洛_蒙特卡洛模拟法及其Matlab案例
- Linux关机和重启命令总结
- BZOJ2741 【FOTILE模拟赛】L 【可持久化trie + 分块】
- python对文件操作的相关函数_python文件操作的相关函数深入理解Django中内置的用户认证...
- 案例 显示分数 js
- 一个搜集大量网页特效的网站
- java基础—统计一个字符串中各个字符出现的次数
- centos6.2安装jdk7
- Android study week1
- 【sklearn第七讲】数据集加载工具
- ubuntu中eclipse无法识别android手机问题
- t分布 u分布 卡方分布_u分布(u分布和t分布)
- c4d打开没反应_野分享:一大波C4D插件的测试以及分享
- 如何快捷修改eclipse黑色背景和字体颜色设置?
- 如何定义StrokeIt手势 常用StrokeIt手势大全
- kali桌面图标和右键菜单系统更新之后不见了的解决方法
- strpos php 中文,php substr中文乱码最有效到解决办法 还有strpos不能比较中文
- Pixelmator for Mac(强大的图像处理软件)
- ‘\0’ ,‘0’, “0” ,0之间的区别
- Sulley安装手记
热门文章
- 爱奇艺多模态视频人物识别挑战赛项目总结
- SprigData-JPA之Query进行复杂查询并映射到自定对象(非数据库字段用@Transient注解)
- k8s部署Archery-SQL审核查询平台
- 君君学Linux设备驱动第一天之概述及开发环境搭建
- 运维之道 | 三剑客之sed命令 - 增删改查排
- parallelStream 底层 ForkJoinPool 实现
- 中国大学MOOC-陈越、何钦铭-数据结构-2018秋期中考试
- AI助力生命科学创新范式变革 正突破新药研发“双十”困局
- 软水处理器为什么要及时加盐
- 密码加密:哈希(hash)加盐