资讯详情

IC-CAD Methodology 知识图谱

CAD(Computer Aided Design),计算机辅助设计的初衷是利用计算机及其图形设备帮助设计人员进行设计,这个定义也可以用于类似的类比IC 公司 CAD 工程师工作。

早期 IC 公司的 CAD 职位主要致力于公司内部 EDA 自20世纪80年代以来,工具的开发是独立的EDA 各大公司崛起 IC 公司的 EDA 研发人才逐渐剥离进入几个主流 vendor 厂,IC 公司的 CAD 职责逐渐演变为 EDA 工具更上一层的集成电路设计流程自动化,通过顶层的流程控制配合底层的 EDA 进一步完善工具 IC 交付效率的设计。此外,许多公司也会在内部做一些类别 EDA 工具的inhouse-tool 开发工作,在自研工具中加入特色功能,弥补商业用途 EDA 过度普遍的工具缺陷。

可以说,CAD以计算机编程为基本手段,匹配公司产品特点的自动化管理流程,满足自身需求 IC 设计 special 以自主研发工具为核心生产力,通过计算机辅助大大提高了集成电路设计的交付效率。由于可以将 IC 工程师从许多繁琐的手工操作中解放出来,减少工程师的数量IC 设计核心环节的能源支出,CAD 在节约企业人力资源、提高设计效率、优化企业成本方面发挥着重要作用。

近年来,中国集成电路产业取得了快速发展,2018年 年中国集成电路企业新增 318 家达到 1698 家,但大多数 IC 计算机辅助设计在企业中的现状令人担忧。据了解,国内绝大多数国内 IC 企业,尤其是初创企业和中小企业,仍然是相对原始的车间开发模式(夸张地说,个别公司甚至没有服务器,一人一台台式机器运行模拟!),有一些流程自动化概念的公司也经常使用它 CAD强加相关工作IT 工程师或者IC 工程师往往缺乏广泛的东西 IC 知识和扎实的编程基础导致事半功倍。据报道,中国只有少数大型家庭,如海思 IC 公司建设相对完整 CAD 体系。

由于国内 IC 许多企业的特殊发展经验IC 企业的 CAD 部门脱身于 IT 部门,CAD 和 IT 有千丝万缕的关系,CAD 不再仅仅是较为单纯的偏向于编程的流程自动化岗位。那么中国 IC 从公司本地化的角度来看,CAD 公司的主要职责是什么?

图 1 IC 公司中 CAD 岗位的角色

图 1 所示为 IC 公司中 CAD 职位的角色,它在 IC 设计和 IT 基础平台之间,向上承担 IC 设计要求,向下肩同起 IT 共同架构IT 基础平台的责任。CAD 工程师需要能够很好地了解公司 IC 设计在 IT 基础平台上的需求有效地将这些需求转化为具体需求 IT 实现,然后与公司合作 IT 通力合作完成平台建设。

图 2 IC 公司中 CAD 岗位的职责

由于脱胎于 IT 岗位,中国 IC 公司 CAD 岗位自然承担 “EDA license 甚至管理计算平台管理 “EDA 工具安装” 这倾向于基础 IT 的工作,但我们也承认,它专注于承载 设计流程管理inhourse-tool 开发” 这些更接近 IC 本职工作设计流程。

尽管每个公司 CAD 工作内容和工作职责各不相同,但总结一下,国内大部分 IC 企业的 CAD 部门工作可分为偏差 IT 和偏 Methodology 两部分。偏 IT 工作脱胎于 IT这里暂时不讨论岗位。偏 Methodology 工作更合适IC-CAD本文的初衷主要是 IC-CAD Methodology 简要讨论了基础知识体系的构建。

以下是根据一些实际工作经验绘制的 IC-CAD Methodolgoy 这些基础知识可以用来构建 IC 建筑设计中的计算机辅助设计系统。

图 3 IC CAD Methodology 知识图谱

IC-CAD Methodology 最基本的需求是掌握各种需求 IC 相关编程语言的核心是围绕各种编程语言 EDA 工具的使用、查错、二次开发展开,另外 lsf(openlava)也是 IC 硬件资源管理平台是设计中任务运行不可或缺的,而 SQL 普遍用在 IC 存储设计中的各种数据,Web 可用于信息显示、流程控制和项目管理。

IC 设计的基本开发环境一般是 Linux,经常需要接触的脚本语言包括 shell/Tcl/Perl/Python等。

IC 常用于设计 shell 有 bash 和 csh(tcsh 是一种类 csh 语言,归为一种),bash 是很多 linux 的默认 shell,csh 由于历史原因,有许多历史原因 ICer 偏爱。

由于 shell 逻辑编程功能本身较弱,所以我们主要关注 vim/find/grep/sed/awk 这些知识点很容易在百度 /google 搜索了很多高质量的教程,所以我们只谈功能。

vim 普遍用于 linux 编辑各种普通文本,一个方便 vim 配置可以让 Linux 工作效率大大提高。我们可以通过配置 “~/.vimrc” 配置自己的文件 vim,例如,在我的工作环境中 vim 只有四种配置,如下:

syntax on set ruler set showmode set hls

功能分别为 自动语法突出、显示当前行号和列号、显示当前左下角 vim 模式” 和 搜索高亮

可参考更多配置http://www.cnblogs.com/rickyk/p/3839674.html。

find 命令主要用于在指定目录下查找文件 Linux 常用指令。

可参考使用说明https://www.cnblogs.com/weijiangbao/p/7653588.html。

可以用命令分享知识点 “” 来删除一个奇怪名字的文件(比如 “!&@”),其中 fileinum 就是文件的 inode 号,可以用 ls -i filename 来获取。

范例: 在当前路径下找到一切 lib 后缀的文件find . -type f -name "*.lib"

grep sed awk 合称Linux 三剑客,威力强大,其中 grep 主要用于文本搜索。

可参考使用说明https://www.cnblogs.com/wangcp-2014/p/5146335.html。

例子:找出文件 “log” 所有空行,并标记行号grep -n "^\s*$" log

sed 该命令主要用于字符串替换和删除)。

可参考使用说明https://www.cnblogs.com/ginvip/p/6376049.html。

例子:直接修改文件 “log将字符串 “synthesis” 均改为 “DFT”sed -i's/synthesis/DFT/g' log

awk 本质是编程语言,功能极强,一般用于字符串(列)提取。

可参考使用说明http://blog.chinaunix.net/uid-25266990-id-100557.html。

范例:将文件 “log” 打印出第二列的内容awk '{print $2}' log

前面 find, grep, sed, awk 它的力量在于它的平均支持 shell 正则表达式,所以学会学习 Linux 正则表达式也很重要。Perl 江湖以其强大的正则表达系统而闻名,但其基本语法和 Linux 正则表达式相似,学会一起举一反三。

<>

    由于历史原因,Tcl 语言广泛应用于 EDA 工具之中,尤其是作为配置文件使用,所以有必要了解 Tclsh 的基本语法。但是由于 Tcl 功能较弱,不适用于复杂的功能性脚本开发,所以作为 CAD 这个岗位而言不建议过于深入学习,会基本的语法即可。

    《Tcl/Tk 入门经典》是一本经典的 Tcl 入门教程,不过貌似现在网上已经买不到了中文版了。

    早些年 Perl 广泛流行于 IC 界,用于逻辑功能开发,但是现在大有被 Python 取代的趋势。

    Perl 的核心优势在于强大的正则表达式和文本处理功能,但是这些功能 Python 能够完美取代。Perl 的主要劣势在于语法过于随意,所以可读性差,可维护性低。我工作后写的第一个较为大型的 CAD 应用即使用了 Perl,总代码量大概为 30000 行,主程序有 5000 行,后来做程序更新的时候,我发现自己已经完全无法读懂自己三个月之前写的 Perl 代码了,从那时起我就毅然决然地投到了 Python 的阵营。

    个人不建议花太多精力学习 Perl,能够了解基本语法,读懂代码,可对原有 perl 脚本做简单维护即可。

    Python 是现在非常流行的一门脚本语言,也已经广泛第应用于 IC 行业。

    Python 的主要优势在于语法简洁,扩展库极多,开发效率很高(执行效率比较低,但是现在硬件强大,运行效率足够用)。

    Python 入门包括掌握基本的 Python 语法,包括变量,数据结构,循环,类等,能够写一般逻辑的脚本,比如文本处理程序、流程控制程序;Python 的进阶包括各种库的使用,能够对简单 python 工具做二次开发和改进,能够写较复杂逻辑应用,能够写图形界面程序,能够以较为规整的软件架构开发系统性工具。

    Python 可以广泛应用于 IC 设计流程的方方面面,属于 CAD 开发的基石,我们曾经用它做过如下事情:

   自动化 regression 系统。代码更改自动触发 regression 运行,收集结果,自动分析错误并定位到具体的 check-in,自动汇报 bug。

自动流程控制系统。synthesis/DFT/clp/fv/sta 的自动流程控制系统,包括自动创建 design block 的运行环境,自动调配 openlava 资源运行任务(中间状态展示),运行结果检查分析,运行结果汇总和展示。

openlava 的数据采集、数据分析及数据展示系统。开源工具 openlavaMonitor(源代码网址 https://github.com/liyanqing1987/openlavaMonitor)就是这些应用中的一部分。

* IC inhourse-tool 开发。其中 library 解析及数据展示的开源工具 libView(源代码网址 https://github.com/liyanqing1987/libView)就是这些应用中的一部分。

    在实际工作中,一般一个 CAD 工程师需要 support 一个或者多个 IC 设计的 flow,帮助 ICer 配置 EDA 工具的基础运行环境,debug EDA 工具使用过程中遇到的各种问题(运行缓慢,crash,各种随机错误),搭建良好易用的 EDA 工具使用平台。

    一个好的 CAD 工程师需要了解实际的 IC 设计 flow,了解 EDA 工具的用法,在此基础上进一步研发更高层级的流程自动化平台,或者研发相关 inhouse-tool 作为商用 EDA 工具的补充,从而促进 IC 设计流程更高的交付效率。

    对于稍微有些规模的 IC 企业而言,由于仿真运算资源消耗量大,用于进行仿真运算的硬件资源较多,服务器集群管理系统必不可少。现在国内 IC 业界使用的主流服务器集群管理系统主要为 sge 和 lsf 系列,其中 sge 功能较弱且缺乏技术支持,已逐渐退出市场,lsf 系列是主流。lsf 系列主要包括 lsf、openlava 和 SkyForm。它们三者在技术上属于同一系列,都脱胎于 IBM 的商用软件 lsf,因而用法基本兼容,区别在于 lsf 和 SkyForm 为商用收费软件,支持更好,而 openlava 是开源软件,没有商业企业支持,但是胜在免费,应该是国内 IC 公司最为广泛应用的服务器集群管理系统。

    方便起见,下面提到服务器集群管理系统,均用 openlava 代替。

    由于 openlava 作为 IC 设计流程中运算资源管理的核心载体,其优化配置和高效运行对 IC 设计流程时效性具有重要影响,因此也是 IC CAD 工作的重要一部分。

    IC CAD 需要在 openlava 的以下方面加以关注。

   根据企业服务器资源数量和实际的设计流程运算资源需求,合理配置 openlava(尤其是 queue 的配置),提高运算资源的整体使用率。

    监控硬件资源,及时处理各种硬件异常。(lsf 或者 SkyForm 应该已经自带各种监控,openlava 则需要自己开发,或者在网上找一下开源应用)

   采集 openlava 基础信息,通过大数据分析(openlava 的信息采集至少达到百万量级)等技术手段获取 queue/host/load/job/user 的使用状况和使用习惯,反过来指导 ICer 正确地使用 openlava,从而提高 openlava 的使用效率,并保证 IC 设计仿真运算任务高效正确地完成。(lsf/SkyForm 自带通用的数据采集和分析功能,但是更多定制化的功能可能还需要企业内部自己开发)

    IC 中常用的 SQL 主要包括 mysql 和 sqlit,其中 mysql 主要用来存储较大量的数据,速度较快,但是需要单独配置和管理,而 sqlite 可以用来存储中小数量的数据,速度略慢,但是配置简单,无需过多管理。

    IC 中许多场景都需要用到数据库,比如:

     项目管理系统中数据存储。

     网页展示系统中的基础数据存储。

    前面提到的 openlava 数据采集平台,用于 openlava 基础数据存储。

   各种 inhouse-tool,比如企业 library 管理系统中,需要存储的极大量数据,也需要用数据库来管理。

    Web 即可以作为一个信息展示的平台,也可以作为项目管理的工具,甚至 Linux 端有些图形界面的工具,其图形展示和逻辑功能触发也可以移植到 web 端。理论上,基于 web,我们可以搭建一套完整的 IC 项目管理平台。

    如果是在 Linux 端,可以基于 bootstrap 做快速的 web 开发,配合合适的模板一般效果都相当不错。如果有更加复杂的定制化需求,可以选用 django 或者 flask 等 python 开发框架来做 web 开发。

标签: 74ls05ic集成电路

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台