数字IC前端面试问题总结

本篇主要参考了   

1、新芯设计
(3条消息) 新芯设计的博客_CSDN博客-如何成为一名高级数字 IC 设计工程师,数字 IC 技能拓展,基于 SoC 的卷积神经网络车牌识别系统设计领域博主

2、小汪的IC自习室

(3条消息) 小汪的IC自习室的博客_CSDN博客-数字IC设计,SystemVerilog & IC验证,RISC-V领域博主

3、自己总结的一些知识点

(1)ASIC设计流程

一、确定项目需求

1、确定芯片的具体指标

      1)物理实现:

           制作工艺(代工厂及尺寸要求)

           裸片面积

           封装(封装越大,散热越好,成本越高)

      2)性能指标:

            速度(时钟频率)

            功耗

      3)功能指标:

            功能描述

            接口定义

2、系统及设计

用系统建模语言(高级语言 如matlab,c等)对各个模块描述,为了对方案的可行性进行验证。

二、IC前端设计流程(RTL to Gate-Netlist)

1、算法或硬件架构设计与分析:完成芯片中数字部分的高层次算法或架构的分析与建模,为硬件提供一个正确的软件 功能模型,为 RTL 实现提供总体性的设计指导。

2、RTL实现:依据第一步的结果,完成由高层次描述到 Verilog HDL 实现的过程。

3、功能验证:在无延迟的理想情况在,通过大量的仿真,发现电路设计过程中的人为或者非人为引起的bug。

工具:Modelsim、VCS、NC-Verilog等

4、逻辑综合:将 RTL 代码映射为与工艺库相关的网表。逻辑综合要指定基于的库、工艺,设定约束条件。综合之前的仿真为前仿真,综合之后的仿真为后仿真,所以这里还需要一个后仿真。

5、静态时序分析(STA) :来计算所有的路径,有没有满足时序要求;主要是检查建立时间(Setup Time)和保持时间(Hold Time)是否违例(violation)

工具:PrimeTime、Tempus。

6、DFT(design for test)可测性设计:为了在芯片生产之后,测试芯片的良率,看制作有无缺陷,一般是在电路中插入扫描连(scan chain)

DFT是在得到Netlist之后,布局布线(Place and Route)之前进行设计

三、IC后端设计流程

数字后端设计又称物理设计,将网标格式的文本转化成-个个有物理大小和位置的单元、连线。并且在实现过程中要满足面积、功耗、性能等要求。业界主流的后端工具来自synopsys、cadence两家公司,虽然两家公司工具不同但是基本流程相似。

1、布局布线(Place and Route):

保证没有太多的内部交互,避免布线上的拥堵和困扰。

包括时钟树插入(布局时钟线),用到Synopsys的IC Compiler(ICC)在布线(普通信号线)之前先布局时钟线,即时钟树综合CTS(Clock Tree Synthesis),用到Synopsys的Physical Compiler。均匀地分配时钟,减少设计中不同部分间的时钟偏移。

2、寄生参数提取(Extrat RC)

提取延迟信息

3、静态时序分析(STA):

加入了布局布线延迟,更真实的时序分析。

时钟树插入之后,每一个单元的位置都确定下来了,工具可以提出Global Route形式的连线寄生参数,此时对延时参数的提取就比较准确了;然后通过EDA工具指定提取模式如RC提取模式、指定延时计算模式等等来进行建立时间与保持时间分析:如果发生时序违例,那么则返回上一层设计,通过修改设计等等使其满足时序要求,从而达到时序收敛。

4、版图物理验证:

对完成布线的物理版图进行功能和时序上的验证,验证项目很多,如:

  1. LVS(Layout Vs Schematic)验证:简单说,就是版图与逻辑综合后的门级电路图的对比验证;(GDSII文件里面包含版图)
  2. DRC(Design Rule Checking):设计规则检查,检查连线间距,连线宽度等是否满足工艺要求;
  3. ERC(Electrical Rule Checking):电气规则检查,检查短路和开路等电气 规则违例;等等。

实际的后端流程还包括电路功耗分析,以及随着制造工艺不断进步产生的DFM(可制造性设计)问题。物理版图验证完成也就是整个芯片设计阶段完成,下面的就是芯片制造了。

DRC(设计规则检查);LVS(版图一致性检查)布线图和原理图进行比较

5、生成GDSII文件,Tap_off 流片

物理版图以GDSII的文件格式交给芯片代工厂(称为Foundry)在晶圆硅片上做出实际的电路,再进行封装和测试,就得到了实际的芯片。

这整个流程称为RTL2GDSII,利用GDSII来生产芯片的过程称作流片(Tapeout),以上是一个Fabless公司的简易设计流程,最后将GDSII送至Foundry生产芯片。

(注:整个IC设计流程都是一个迭代的过程,每一步如果不能满足要求,都要重复之前的过程,直至满足要求为止,才能进行下一步。)

四、IC设计流程相关名词(含各流程EDA工具梳理)

数字IC设计流程相关名词梳理及各流程EDA工具总结正在上传…重新上传取消https://blog.csdn.net/weixin_42294124/article/details/123534569https://blog.csdn.net/weixin_42294124/article/details/123534569

五、IC设计流程整理(图片)

(2)基本概念

1、亚稳态

亚稳态:是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进入亚稳态引时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。

2、同步和异步

      异步:指的是输入信号和时钟无关;

      同步:是指的输入信号和时钟信号有关;

      实际上就是输入信号和时钟信号进行了与运算或者与非运算。实际开发中,经常有同步清零、异步清零、同步复位、异步复位等概念,下面就给与相关代码演示。

同步清零
module dff(d, clk, clr, q);
input d, clk, clr;
output q;
reg q;
always@(posedge clk)
    if(!clr) q<=0;
    else q<=d;
endmodule
异步清零
module(d, clk, clr, q);
input d, clk, clr;
output q;
reg q;
always@(posedge clk or negedge clr)
    if(!clr) q <= 0;
    else q <= d;
endmodule

3、同步电路和异步电路概念

        同步电路:同步电路是指电路中的所有时钟都来自于同一个时钟源;

        异步电路:是指电路的时钟来自于不同的时钟源,它们之间没有固定的相位关系;

4、FSM状态机、三段式状态机、moore/mealy状态机

        (1)一段式一个always块,既描述状态转移,又描述状态的输入输出,当前状态用寄存器输出;

        (2)二段式两个always块,时序逻辑与组合逻辑分开,一个always块采用同步时序描述状态转移;另一个always块采用组合逻辑判断状态转移条件,描述状态转移规律以及输出,当前状态用组合逻辑输出,可能出现竞争冒险,产生毛刺,而且不利于约束,不利于综合器和布局布线器实现高性能的设计。

        (3)三段式三个always块,一个always模块采用同步时序描述状态转移;一个always采用组合逻辑判断状态转移条件,描述状态转移规律;第三个always块使用同步时序描述状态输出,寄存器输出。

        三段式与二段式相比,关键在于根据状态转移规律,在上一状态根据输入条件判断出当前状态的输出,从而在不插入额外时钟节拍的前提下,实现了寄存器输出。

        Moore:输出信号只与当前输入有关。

        mealy输出信号不仅取决于当前状态,还取决与输入。

5、建立时间和保持时间概念

        建立时间:是指触发器在时钟沿到来之前,数据输入端的数据必须保持不变的时间;

        保持时间:是指触发器在时钟沿到来之后,数据输入端的数据必须保持不变的时间;

6、提升电路工作频率方法

        电路的工作频率主要与寄存器与寄存器之间的信号传播延时clock_skew相关;

        信号的传输时延主要包括:寄存器的开关延时,走线延时,经过组合逻辑的延时;

        开关延时是由器件物理属性决定的,可以通过提升电压的方法来减少开关延时,走线延时可以通过给综合器添加适当的约束,一般添加的约束为5%~10%;组合逻辑的延迟可以通过将较大的组合逻辑分解为较小的多块,通过适当的方法将组合逻辑进行平均,并在中间插入寄存器,这样就可以避免在两个寄存器之间出现过大的延迟,消除速度的瓶颈,以达到提升工作频率的目的,也就是所谓的流水线的设计思想;

7、时序约束的基本概念和基本策略

        时序约束:设计者需要告诉软件(Quartus、Vivado、ISE等工具)应该从哪个引脚输入信号、输入信号需要延迟多长时间、时钟周期是多少。主要包括:周期约束、偏移约束、静态时序路径约束。

8、RAM的分类

        FPGA上的RAM一般分为三类:单口RAM、简单双口RAM、真双口RAM。

        单口RAM:一条数据线和一条地址线,不能同时读写;

        简单双口RAM:一条地址线和一条数据线,能够同时读写不同地址的数据,读写同一个地址的数据时会冲突;

        真双口RAM:两条地址线和两条数据线,能够同时对同一地址的数据进行读写。

9、竞争冒险

        信号由于经由不同路径传输达到某一汇合点的时间有先有后的现象,就称之为竞争,由于竞争现象所引起的电路输出发生瞬间错误的现象,就称之为冒险

(3)跨时钟域

1、跨时钟域分类

      a.跨同步时钟域(clk1与clk2是同步时钟,即同源时钟,但是频率等不同);

  • 7
    点赞
  • 128
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值