笔试题

1.正确答案是power gating


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

  • 浪涌电流是器件上电时产生的最大瞬时输入电流。浪涌电流也称为启动电流
  • 静态电流也称待机电流。静态电流包含晶体管的漏电流(PMOS衬底和PMOS漏端构成一个反向偏置PN结,NMOS的漏端和NMOS衬底构成一个反向偏置PN结)和亚阈值导通电流。
  • 动态电流包含开关电流和短路电流。开关电流是晶体管对负载电容充放电时产生的电流,短路电流是PMOS和NMOS在转换过程中同时导通的时刻产生的短路电流
    一次充电VDD消耗的能量:



    一次充电电容存储的能量:



    开关的的功耗表达式如下:
  • A选项是门控时钟方法。可以关闭特定模块的时钟,完全消除该模块的动态功耗。但是不消除静态功耗
  • B选项是关掉内存
  • C选项是门控电源方法,将不用的模块的电源直接关闭。免除动态功耗和亚阈值功耗。但是无法完全消除
  • D选项HVT是指高阈值器件,同理还有LVT低阈值器件,SVT中等阈值器件。其中高阈值器件阈值电压高,所以亚阈值电流小。所以导致的静态功耗小。但是他的速度慢。LVT器件阈值电压低,所以静态功耗大,但是它的速度快。所以可以对HVT SVT LVT的比例进行调整来满足不同的目的

2.

task:

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

  • 在模块内部被定义,可以接受输入,也有输出定义形式如下:


  • 调用模式如下:


  • task本身不会返回任何值,而是执行一段代码。它只会通过调用来执行。如果定义了一个task,但是整个过程都没有调用它。那么这个任务不会被执行。
  • task语句的第一行不能列出端口名称
  • task的输入输出数量不受限制,甚至可以没有输入,输出以及双向端口
  • task中可以出现不可综合的语句。但是会造成任务不可综合
  • 在task中可以调用其他任务或者函数,也可以调用自身
  • task中不可以出现Initial和always块语句
  • task可以在initial和always块中被调用
  • task调用语句是过程性语句,所以任务调用中接收返回数据的变量必须是寄存器类型。
  • task可以直接使用task外模块内的信号。不用全部都定义在端口
  • task中可以出现时间控制语句,比如@(posedge clk)或者是#10这种

function

通过function和endfunction定义

  • 函数体内不能有任何形式的时间控制语句
  • 函数可以调用函数但是不能调用任务
  • 函数至少要有一个输入端口,不允许有输出端口
  • 函数的内部变量定义为reg型
  • 对函数的调用通过函数名完成,函数调用的返回值也是通过函数名变量传递给调用语句


  • automatic functions
    automatic function是verilog-2001的新特性,如果一个函数被同时同时调用时。函数内部声明的变量不必被共享。所以为函数递归调用创造了条件,如下
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.

  • A选项:set_driving_cell用来设置驱动和负载约束
  • B选项:Design Compiler通过变量“link_library”指定例化模块库的位置,target library是用于设置综合时需要映射的库
  • C选项:multicycle指定该路径上的信号需要多个周期来传递。false_path会直接跳过对该路径的时序分析
  • D选项:setup_output_delay定义了当前设计的输出路径延时值
    https://www.micro-ip.com/Synopsys(DC)/dictionary_63_8/set_output_delay.html

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;

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



仿真结果如下:


  • A选项:在组合逻辑中使用非阻塞赋值。如果敏感列表添加不全,就会造成仿真错误。如果大量补全了敏感列表,那么反复的进入always 块会拖慢仿真的速度
always @(a or b or c or d) begin
tmp1 <= a & b;
tmp2 <= c & d;
y    <= tmp1 | tmp2;
end
  • B选项显然是错的
  • C选项在时序always块中如果使用阻塞赋值,那么可能会得出与预期不符合的结果
    比如我们做一个三级流水线使用以下代码:
always @(posedge clk)
begin 
  q1=d;
  q2=q1;
  q3=q2;
end

这个代码生成的结果是


9.答案显然是B

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

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

12.选C

timing path的起始点有两种:

  • 时序器件的时钟输入端,比如D触发器的时钟端
  • 电路的输入管脚(input port)

timing path的终点也有两种:

  • 时序器件的数据输入端,比如D触发器的D端口
  • 电路的输出管脚(output port)

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


14.这里选择B

改善亚稳态的方法

  • 降低系统工作时钟,增大系统周期,亚稳态概率就会减小;
  • 采用工艺更好的FPGA,也就是Tsu和Th时间较小的FPGA器件;
  • 改善时钟质量,用边沿变化快速的时钟信号


15.这题选C

  • 综合工具不需要和Formal工具配套

16.选B


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

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

19.选C


常见状态机及定义:

  • 一段式:整个状态机写到一个always模块里面,在该模块中既描述状态转移,又描述状态的输入和输出;
  • 二段式:用两个always模块来描述状态机,其中一个always模块采用同步时序描述状态转移;另一个模块采用组合逻辑判断状态转移条件,描述状态转移规律以及输出;
  • 三段式:在两个always模块描述方法基础上,使用三个always模块,一个always模块采用同步时序描述状态转移,一个always采用组合逻辑判断状态转移条件,描述状态转移规律,另一个always模块描述状态输出(可以用组合电路输出,也可以时序电路输出)。

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

  • A选项:DRAM是动态内存,只需要一个MOS管一个电容即可。但是一个SRAM单元是两个反相器交叉耦合而成。需要的晶体管数目起码是6个。所以结构更复杂
  • B选项:DRAM需要时时刷新,因为电容会漏电。但是SRAM不用刷新。
  • C选项:DRAM成本低常用做内存。SRAM用作CACHE成本高
  • D选项: 显然SRAM速度更快

35.这题选B

fork是多线程的操作符


37.

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


38.这题选D


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

  • 使用格雷码传递多位信号
  • 采用握手协议
  • 采用FIFO进行缓存
    所以这里的直接打拍处理显得很业余

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

覆盖率分析

代码覆盖率:

  • 行覆盖率
  • 条件覆盖率
  • FSM覆盖率
  • 翻转覆盖率(toggle)

功能覆盖率

断言覆盖率

3.答案是ACD


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

4. AB


这是RTL设计的原则

  • 组合逻辑和时序逻辑分开描述
  • 先电路后代码
  • 数据和控制分开原则

5.ACD

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容

  • 1、OC语言的基本特点 优缺点 objc优点: 1) Cateogies 2) Posing 3) 动态识别(多态...
    cocoaZ阅读 484评论 0 3
  • 产品知识面考察 真题 例题分析 例题7.3 DAU代表 。 日用户点击量 月活跃用户数量 日活跃用户数量 网站...
    爱摄影的奥派阅读 12,265评论 4 46
  • 1.c 对IO进行约束主要是: 输入延时约束set_input_delay -max 0.6 -clk Clk [...
    6d372579d253阅读 2,547评论 1 1
  • 刚刚亲身体验的2017企业笔试题集第一篇,本人感觉,有新手级别的问题、也有较为复杂的问题,这里先将笔试问题和部分答...
    androidjp阅读 1,431评论 0 18
  • 京东: 1、jQuery属性操作方法val():设置或返回匹配元素的值。html():设置或返回匹配的元素集合中的...
    迷人的洋葱葱阅读 335评论 0 0