zoukankan      html  css  js  c++  java
  • 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'} , "
    ";  # 即可
    
    • 缺点:

      • 语法不严谨,对于强迫症同学,真的很头疼。

    后面的安排

    • 讲解语言其实很费篇幅,但是!我只会从“工具字典”的角度写短文,将三个脚本最常用的code block拿出来,分解讲一下。这样,同学们在使用时候,只需要点开文章,按图索骥即可。没必要remember.
  • 相关阅读:
    非域,非匿名用户访问远程企业服务的详细步骤
    调用远程的企业服务的安全问题
    未能加载文件或程序集“****”或它的某一个依赖项的一种情况
    XAMPP使用非80端口的安装配置修改
    Lucene 的存储结构概述
    .NET Framework 4.0 SDK的安装
    lucene 文件存储相关的几个类
    ASP.NET 状态服务 及 session丢失问题解决方案总结
    不安装.net framework框架运行.Net 程序的方法<收藏>
    net面试题集及答案
  • 原文地址:https://www.cnblogs.com/icparadigm/p/12958342.html
Copyright © 2011-2022 走看看