笔试题

2019-04-03  本文已影响0人  6d372579d253

1.正确答案是power gating


浪涌静态功耗动态功耗是三个最主要的功耗源:

2.

task:

http://www.asic-world.com/verilog/task_func1.html

function

通过function和endfunction定义

module function_auto ();
 
  function automatic [7:0] factorial;
    input [7:0] i_Num; 
    begin
      if (i_Num == 1)
        factorial = 1; 
      else
        factorial = i_Num * factorial(i_Num-1);
    end
  endfunction
 
  initial
    begin
      $display("Factorial of 1 = %d", factorial(1));
      $display("Factorial of 2 = %d", factorial(2));
      $display("Factorial of 3 = %d", factorial(3));
      $display("Factorial of 4 = %d", factorial(4));
      $display("Factorial of 5 = %d", factorial(5));
    end
endmodule

3.

4.毫无疑问是的

5. C门控时钟是一种重要的低功耗设计方法


时钟树几乎消耗了整个芯片50%的功耗,因此最好始终在根部产生和关闭时钟。使整个时钟树都关闭。常用基于锁存器的门控时钟

6. 选B


Verilog会自动进行符号的扩展。有号数与无号数的混合计算:不要在同一个verilog叙述中进行有号数与无号数的计算。应该要分成个别独立的叙述。在一个verilog叙述中只要有一个无号数的操作数,整个算式将被当成无号数进行计算。
part-select运算过后的操作数是无号数。就算是选择的范围包含整个register或wire。
以下例子中如果不加$signed输出o就不会是有符号数
input   [7:0] a;
input  signed [7:0] b;
output signed [15:0] o; // Don't do this: assign o = a * b;
// The $signed({1'b0, a}) can convert the unsigned number to signednumber.
assign o = $signed({1'b0, a}) * b; 

7. 选B


组合逻辑中使用if条件语句,一定要将else条件补齐全。不然就会出现问题

8.选C

一般情况下:
always 过程块中的组合逻辑使用阻塞赋值
always 过程块中的时序逻辑使用非阻塞赋值
实际上这条规矩是与仿真相关。忽略此规则在综合的时候不会有任何影响。但是在综合前仿真中。仿真的行为会受到影响。导致与综合电路行为不匹配
在时序alway块中使用阻塞赋值,可能导致仿真结果和综合结果不一致。

always @(posedge clk) q2=q1;
always @(posedge clk) q3=q2;
always @(posedge clk) q1=d;

以上代码的综合结果如下:



仿真结果如下:


always @(a or b or c or d) begin
tmp1 <= a & b;
tmp2 <= c & d;
y    <= tmp1 | tmp2;
end
always @(posedge clk)
begin 
  q1=d;
  q2=q1;
  q3=q2;
end

这个代码生成的结果是


9.答案显然是B

10.单比特wire型信号不用显示定义,所以选A

11. 位宽为256,深度为32选A

12.选C

timing path的起始点有两种:

timing path的终点也有两种:

13. 这里D选项是正确的参照下面的说明


14.这里选择B

改善亚稳态的方法

15.这题选C

16.选B


`deine是宏定义。可以定义在模块内,也可以定义在模块外。但是它的作用范围是整个工程。而parameter的作用范围只有模块内部。所以我们推荐使用parameter做状态机编码。而不是`define。但是理论上`define也可以用来定义状态机编码。
`define用法如下,使用定义的字符串时需要加上符号

`define IDLE 4'b0001
wire [3:0] output;
assign output = `IDLE

19.选C


常见状态机及定义:

20.

21.

这题选B


25. C

26.D

28. 目测选B

29.错误,这是一个自加逻辑。如果定义为wire,那么就没有时钟控制。这样以来就会无限自加

30. 选D


形式化验证方法在IC设计中的应用很普遍。形式化验证是基于数学方法的定理证明,用来验证设计的逻辑等价性。主要完成等价性检查。特别是当RTL代码完成综合后其function功能会发生改变。所以这里我们采用形式化验证的方法来检查RTL和门级网表的等价性

31.这题选D




这里的两个信号具有相互关系,如果原信号的两位变化时就有偏差。那么同步以后。很有可能就会有一个周期的偏差

32. 选正确


组合逻辑中的if-else语句如果缺少条件分支,那么就会产生latch

34.选A

35.这题选B

fork是多线程的操作符


37.

Tmin=Tco + Tlogic + Tsetup = 6 + 2 + 2=10 ns
f = 100Mhz


38.这题选D


一般多位异步信号处理有以下方式:

39.短路功耗和开关功耗同属动态功耗故正确

40.形式验证


形式验证在ASIC设计流程中犹如一个迭代算法,其最初的输入是RTL设计,每次比较,都将上一次比较后的设计(第n-1次)作为参照设计处理之后的结果(第n次)进行比较,之所以这么做,是基于以下考虑:
1.形式验证工具开始比较前,首先在两个设计中找到一一对应的比较点。
2.如果一个设计改动太大,改变前后的功能是完全一致的,但如果形式验证工具无法找到适合的比较点,也会认为这两个设计不等价。 形式验证在 ASIC设计流程中主要应用在以下几个方面:RTL-RTL的对比,RTL-GATE的对比,GATE-GATE的对比。采用形式验证进行RTL与RTL 的比较,可以在较短的时间内验证并保证代码修改的过程中没有引入功能性的错误;进行RTL与GATE的对比,是验证源代码与综合之后的门级网表是否等价,以保证综合过程中不会出现任何错误;进行GATE与GATE的对比,主要是发生在验证插入DFT后的电路网表在功能上是否一致;生成时钟树前后的电路网表在功能上是否一致;布局布线前后的电路网表在功能上是否一致等。

多选题:

1.ACD 是正确答案

2.ABCD

覆盖率分析

代码覆盖率:

功能覆盖率

断言覆盖率

3.答案是ACD


参考模型设计,checker设计,规格设计都是验证工程师的工作

4. AB


这是RTL设计的原则

5.ACD

https://wenku.baidu.com/view/1830848533687e21ae45a947.html

上一篇 下一篇

猜你喜欢

热点阅读