分享

IC攻城狮求职宝典 01 2018年IC设计企业 笔试题 01 英伟达(Nvidia)

 芯文苑eecourse 2018-12-07

笔试真题:

1、  什么是建立时间、保持时间,如果setup time violation或者hold time violation 应该怎么做?(10分)

答案:

建立时间:是指在触发器的时钟信号采样边沿到来之前,数据保持稳定不变的时间。

保持时间:是指在触发器的时钟信号采样边沿到来之后,数据保持稳定不变的时间。

clock

图一 D触发器的建立时间和保持时间的定义

 

Timing path 时序路径分析方法:

分析时序路径时常见的变量:

Tclk     = 时钟周期,是可变的,比如1KHz ~ 5.0GHz
Tcq      =
触发器的时钟端C到输出端Q的延时,是器件属性,是固定不变的
Tcomb  =
两个触发器之间组合电路的延时,是可变的,可以通过设计进行优化逻辑
Tsetup  =
建立时间是触发器的固有属性,是定值
Thold   =
保持时间是触发器的固有属性,是定值

Tskew   = 相邻两个触发器之间的时钟的偏移,是可变的

图二 setuphold timing path的分析

Setup time violation:

建立时间在静态时序分析时必须满足以下条件:

Tclk > Tcq + Tcomb + Tsetup - Tskew

如果setup time violation, 则上述公式不成立。

 

Setup time violation solution:调整上述公式中的变量:Tclk TcombTskew

l  增大Tclk

n  就是降低数字系统的工作频率 (很多产品分等级,是根据频率来分的;品质好的芯片,频率高,价格贵;品质差的芯片,降频,贱卖)

l  减少Tcomb

n  从数字电路逻辑功能设计的角度看

u  在组合电路之间插入寄存器,增加流水线(pipeline);

u  在不改变逻辑功能的前提下,对组合逻辑电路进行优化;

u  减少扇出或者负载;

n  从数字物理版图实现的角度看

u  更换速度更快的标准单元(HVT – High Voltage Threshold, SVT – Standard Voltage Threshold, LVT- Low Voltage Threshold

u  更换驱动能力更强的标准单元(X2, X4)

u  跟换阻值更低的金属层以减少标准单元电路的负载和金属线网的延迟

l  增加Tskew

n  在时钟路径上,插入buffer,增加时钟路径的延迟,但是不能影响hold timing

 

Hold time violation:

保持时间在静态时序分析时必须满足以下条件:

Thold < Tcq + Tcomb - Tskew

如果hold time violation, 则上述公式不成立。

 

Hold time violation solution:

l  增大Tcomb

n  在组合电路的数据传输路径上,插入延迟单元(buffer),增加组合逻辑延迟;但是当组合逻辑延时增加时,setup time可能会出现违例。这时候就需要做平衡(balance)。由此可以看出setuphold time是相互制约的。

l  减小Tskew

n  时钟树调整,做好clock tree balancehold就容易收敛。因为hold time与时钟周期没有关系。

 

总结:setuphold是相互制约的。修复hold之后,setup的裕量就会变小或者变成负值。因此时钟频率越高,setuphold相互制约越严重,甚至会出现修复setup之后,hold就会违例,或者修复hold之后,setup就会违例的现象。

 

思考题1:为什么触发器会存在setuphold time的要求?

提示:研究触发器的结构。数字电路基本结构。

 

思考题2:当setuphold time violation发生时,会导致什么后果?

提示:亚稳态

 

思考题3: 什么是亚稳态?如何在异步电路设计中解决亚稳态的问题?

提示:跨时钟域时,一个信号如何处理,多根信号如何处理,大量数据传输如何处理等常见的异步电路设计方法

更详细内容可参加视频课程:http://www./course/103

 

 

 

2、   

答案:

题目分析:这道题目主要考察的是带有异步置位的触发器和逻辑与的布尔逻辑,然后通过绘制时序波形图的方式显示布尔逻辑。

思考题:如果把异步置位的触发器,替换成异步复位的触发器后,时序图应该是怎样的?

 

3

答案:

题目分析:这道题目,主要考察数字电路中的低功耗设计中的clock gating

思考题:save power的时候,需要关注那些power消耗:动态功耗、静态功耗等,降低功耗的常见方法有哪些?

 

 

4

答案:FIFO中,重点是读写的条件以及对FIFO的空满状态的判断。针对异步FIFO,还需要使用格雷码。

 

module gray( b_in,g_out);

 

  input   [4:0] b_in;

  output  [4:0] g_out;

  wire    [4:0] g_out;

 

  assign     g_out[4]=b_in[4];

  assign     g_out[3]=b_in[3];

  assign     g_out[2]=b_in[3]^b_in[2];

  assign     g_out[1]=b_in[2]^b_in[1];

  assign     g_out[0]=b_in[1]^b_in[0];

 

endmodule      

 

 

module fifo( rclk,wclk,rst,wr_en,rd_en,data_in,data_out,empty,full ,halffull);  

  input   rclk,wclk,rst,wr_en,rd_en;

 

  input   [7:0] data_in;

  output      empty,full, halffull;

  output  [7:0] data_out;

  reg         halffull;

  reg     [7:0] mem[15:0]; //16x8 RAM

  reg     [7:0] data_out;

  wire    [3:0] w_addr,r_addr; //aceess addr

 

  wire    [4:0] w_addr_b,r_addr_b;  //gray addr

 

  reg     [4:0] w_addr_a,r_addr_a;  //binary addr

  reg     [4:0] w_addr_r,r_addr_w;  //sample addr

 

  gray g1( .b_in(w_addr_a),.g_out(w_addr_b));

  gray g2( .b_in(r_addr_a),.g_out(r_addr_b));

 

  assign w_addr = w_addr_b[3:0];

  assign r_addr = r_addr_b[3:0];

 

  always@( posedge rclk or negedge rst) begin

    if(!rst) begin

       r_addr_a<=5'b0;

       r_addr_w<=5'b0;

    end

    else begin

      r_addr_w <= w_addr_b; //sample write_addr

      if( rd_en==1 && empty==0)begin

        data_out <= mem[r_addr];

        r_addr_a <= r_addr_a+1;

      end

    end

  end

 

  always@( posedge wclk or negedge rst) begin

    if(!rst) begin

     w_addr_a <= 5'b0;

     w_addr_r <= 5'b0;

    end

    else begin

      w_addr_r <= r_addr_b; //sample read_addr

      if( wr_en==1 && full==0) begin

        mem[w_addr] <= data_in;

        w_addr_a <= w_addr_a + 1;

      end

    end

  end

 

  assign empty = (r_addr_b == r_addr_w) ? 1 : 0;

  assign full = (w_addr_b[4] != w_addr_r[4] && w_addr_b[3:0] == w_addr_r[3:0]) ? 1 : 0;

 

endmodule

 

思考题:在异步FIFO设计中,为什么使用格雷码?

 

十进制数

二进制数

格雷码

 

十进制数

二进制数

格雷码

0

0000

0000

 

8

1000

1100

1

0001

0001

 

9

1001

1101

2

0010

0011

 

10

1010

1111

3

0011

0010

 

11

1011

1110

4

0100

0110

 

12

1100

1010

5

0101

0111

 

13

1101

1011

6

0110

0101

 

14

1110

1001

7

0111

0100

 

15

1111

1000

 

5

答案:

题目分析: 卡诺图化简,布尔逻辑优化

 

 

卡诺图:设:A=eco_en, B=eco_mask, C=en, D=new_en

 

BC

A

00

01

11

10

0

0

1

1

0

1

0

1

0

1

化简卡诺图

D=BC+AC+ABC=(A+B)C+ABC=AB¯¯¯¯C+ABC

电路图

 

思考题1:为什么使用的两输入的与非门进行优化?

思考题2:异或门使用2输入与非门的电路符号图是怎样的?

 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多