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.
posted @ 2020-05-25 18:08  空白MAX  阅读(529)  评论(0编辑  收藏  举报