天天看点

数字IC设计工程师一般都干什么数字IC设计工程师一般都干什么

数字IC设计工程师一般都干什么

简单来说,数字IC设计工程师一般就是负责写verilog代码(当然,不是仅仅写个代码)。本文主要对数字IC设计的工作流程进行简单的介绍,也算是对我从业一年来的总结。

一般来说,数字IC设计的工作流程如下:

数字IC设计工程师一般都干什么数字IC设计工程师一般都干什么
    1. 算法文档学习(搞清楚你负责的功能):先由算法的同事给出详细的介绍文档,告诉你你负责的模块需要完成什么样的功能,即给你什么样的输入,你要能得到什么样的输出;
    1. 确定上一级模块的输出引脚(搞清楚你的模块的输入信息):与上一级模块的设计工程师确认他负责的模块的输出(也就是你的输入),什么方式给你,有哪些信息,多少bit;
    1. 写设计文档:如果你要负责一个较大较复杂的模块,不可能只写一个.v文件,这时候就需要合理的划分成好几个模块,并详细描述各个模块的功能;这个文档很重要,因为如果是大的模块,可能需要的周期很长,之前没有做好划分,或者文档写的不清楚,你自己又忘了,后面就十分麻烦了;
    1. 写接口文档:你的模块的引脚接口,以及划分的各个模块的引脚接口,这个步骤能帮你更好的梳理你的设计思路;
    1. 写verilog代码:我的两个模块的前4项工作都是一个月起步,取决于模块大小和复杂度吧,全部梳理清楚了再写verilog代码会好很多;
    1. 清lint(Spyglass):用这个软件调试代码,这个软件不仅能报语法错误,还会提示很多可优化的地方,比如你的这个设计里,有些寄存器reg没有被用到过,或者有些寄存器的部分bit始终是1或始终是0,再或者等号左右两边位宽不匹配等等;总之将这个软件报告的error和warning都清完,代码就能运行了,质量也差不多了;
    1. DC综合(Design Complier):这一步主要是看看设计的电路的面积,如果面积过大,则需要重新修改;时序是否pass(当前工作频率,存不存在一拍计算不完的情况);
    1. 算法同事提供测试数据:算法同事会提供一些输入,及其对应的输出的数据,还会根据你的需要打印些中间变量(只有输入和最终输出的话,很难快速定位出问题的地方);
    1. 验证的同事写testbench验证你的代码:一般是UVM,测出中间变量或者输出对不上时,就需要你找bug,调试;
    1. 收覆盖率:验证的同事会用大量的输入来验证你的代码,确保其能在任何输入下都能得出正确的输出,防止有些情况覆盖不到,软件会有一个覆盖率,提示哪些bit位没有翻转过,状态机的哪些状态没有达到过等等;设计要负责协助验证将各个情况都达到(覆盖率100%),实在达不到的,要给出合理的理由,比如 变量a是常数,因此a的bit位就是不会翻转;

总得来说,数字IC设计工程师,核心还是设计电路,写verilog代码;目前感觉挺火的,薪资待遇还行,但裁员的新闻也挺多;培训班什么的,不了解,不做评价;个人还是倾向于去大公司(最好是有师兄师姐在的公司)做做实习什么的。

继续阅读