文章目录
- 单选题
- 1、影响芯片成本的主要因素是 die size 和封装,但电源、时钟等因素,特别是功耗对解决方案的成本影响较大,因此低成本设计需要兼顾低功耗设计?
- 2、reg[31:0] big_vect;big_vect[0+:8]是多少?
- 3、generate 语句中的循环控制变量应该定义为 integer 类型?
- 4、o10 换算成十进制是多少?
- 5、哪些情况下不会产生 latch 电路()?
- 6、关于类的构造函数,以下说法中正确的有?
- 7、中断指示寄存器由实时告警的状态触发,是只读寄存器?
- 8、下面的选项中关于宏定义的说法不正确的是?
- 9、在 systemverilog 中,函数(function)可以调用函数任务(task)?
- 10、假设输入信号 X 位宽为 12bit,inA 位宽为 6bit,inB 位宽为 17bit,实现 `Y = X*inA + inB` 功能,并要求不损失精度,那么输出信号 Y 位宽应不小于()?
- 11、`reg[7:0] mem[1:256];initial $readmemh(“mem.data”,mem,128,1);`对于 mem 行为正确的描述是()?
- 12、九进制数 16 与九进制数 27 相加的结果用九进制表示为()?
- 13、有关 DFT,以下说法不正确的是()?
- 14、对芯片性能影响最大的三个因素是 PVT,分别是指?
- 15、下面这段代码,说法错误的是()?
- 16、下列不属于动态数组内建函数的是()?
- 17、关于功耗,以下描述不正确的是?
- 18、为实现占空比 50%三分频时钟,下面描述的电路,正确的是()?
- 19、关于冯诺依曼结构和哈佛结构的描述中,错误的是()?
- 20、状态机必须有 1 个缺省状态
- 21、a1 和 a2 的检查效果完全一样
- 22、以下关于 flase-path,正确的是()?
- 23、在 verilog 中,比算数运算符+优先级高的是
- 24、有关功耗,以下说法不正确的是()?
- 25、generate for 循环语句中使用的标尺变量可定义为 integer。
- 26、在时钟上升沿时采样到 start 有效开始,两个时钟周期后,信号“a”连续或者间断地出现 3 次为高电平,紧接着信号“stop”在下一周期为高的是哪个?
- 27、ASIC 开发流程中,如下环节的先后顺序是?
- 28、以下关于 flase-path,正确的是()?
- 29、有关综合的说法,一下哪个选项是错误的?
- 30、下面是一个什么电路()?
- 多选题
- 31、添加断言(SVA)的作用主要包含以下哪些方面?
- 32、多 bit 信号跨时钟域同步常用的方式有()?
- 33、Formality 是由 synopsys 公司开发的一种形式验证(Formal verification)工具,用于两个 design 之间的等价性验证,它可以支持如下哪些等价性验证()?
- 34、下列表达式中,哪些可以使用一个或多个二输入与非门器件实现?
- 35、DFT 设计增加的电路一般包括
- 36、在 STA 分析中,下列选项中哪些属于时钟的时序特性()?
- 37、不满足下列哪些时间要求,会产生时序问题
- 38、verilog 语法关于任务和函数,描述正确的有()?
- 39、对于设计中所使用的的 pipeline,说法正确的有()?
- 40、下列说法不正确的是()?
单选题
1、影响芯片成本的主要因素是 die size 和封装,但电源、时钟等因素,特别是功耗对解决方案的成本影响较大,因此低成本设计需要兼顾低功耗设计?
- A.错误
- B.正确
参考答案:B
解析:常识题,低成本设计要兼顾低功耗设计,需要注意的是他的前半句,影响芯片成本的主要因素是 die size与封装。
2、reg[31:0] big_vect;big_vect[0+:8]是多少?
- A.big_vect[0:7]
- B.big_vect[7:0]
参考答案:B(易错选为A)
解析:要看data是从高位向低位定义还是低位向高位定义,表达式的位顺序取决于此。本题中 big_vect 定义方式是 [31:0],由高到低定义,因此选B。此外解释一下以下表达式:
- data[0+:8]代表从 0bit开始,向上加 8bit的数,也就是 0:7。
- data定义如果是高位到低位(reg[127:0] data),那这个数就代表 data[7:0],反之(reg[0:127] data)则代表 data[0:7];
- data[127-:8]代表从 127bit开始,向下减 8bit的数,也就是 127:120。
- data定义如果是高位到低位,那这个数就代表 data[127:120],反之则代表 data[120:127];
3、generate 语句中的循环控制变量应该定义为 integer 类型?
- A.错误
- B.正确
参考答案:A
解析:generate语句中的循环控制变量应该定义为 genvar。通过 generate可以产生一个对象的多次例化,减少代码量。
// Generate block
genvar i;
generate
for(i=0; i<8; i=i+1) 、
begin:BLOCK1
buffer_1 buffer_1_1(.in(din[i]), .out(dout[i]));
end
endgenerate
4、o10 换算成十进制是多少?
- A.8
- B.16
- C.10
- D.2
参考答案:A
解析:o10表示 8 进制的 10,换算成十进制= 1 ∗ 8 1 + 0 ∗ 8 0 = 8 1*8^1 + 0*8^0= 8 1∗81+0∗80=8
5、哪些情况下不会产生 latch 电路()?
- A.组合逻辑中条件不全的 case 语句没有 default 赋值
- B.时序逻辑中 if 选择语句,没有 else 部分表达
- C.使用 if 选择语句的组合逻辑没有 else 部分表达
- D.使用 case 选择语句的组合逻辑没有 else 表达
参考答案:B
解析:时序电路有记忆功能,不会产生锁存器,锁存器一般在组合逻辑中 case写不全,else写不全,或者敏感列表写不全。
6、关于类的构造函数,以下说法中正确的有?
- A.函数体中必须有 new 语句
- B.返回类型是 void 类型
- C.函数名与其类名完全相同
- D.不能有形参
参考答案:C(易错选为A)
解析:类可以认为是用户定义的一种数据类型。
显式定义是有 new(),隐式定义没有,new()的作用是进行初始化,没有 new()时,类默认为 null,A错。返回值类型不一定是 void,void用于有返回值的数据类型,用来取消返回值,B错。构造类可以没有返回值,也没有返回值类型,但是可以有参数(包括形参 int a),D错。类名与构造函数名一样,C对。
以下是显示定义和隐式定义:
//显示定义构造方法,并在方法中对 addr进行初始化
class Packet;
bit [31:0] addr;
function new ();
addr = 32'hfade_cafe;
endfunction
endclass
//没有显式定义构造方法
class Packet;
bit [31:0] addr;
endclass
7、中断指示寄存器由实时告警的状态触发,是只读寄存器?
- A.错误
- B.正确
参考答案:B
解析:中断寄存器是只读的,当发生中断时,硬件会自动将该寄存器对应位置置1。
8、下面的选项中关于宏定义的说法不正确的是?
- A.宏定义文件最好放在一个文件中集中管理,防止出现不同项目需要修改为不同的宏定义值,但是却漏改了某些地方的情况出现。
- B.综合的时候, define 可以跨文件列表生效
- C.如果模块中有很多宏定义,在模块的文件列表最后需要 undef 掉使用的宏,防止和其他模块的宏定义冲突。
- D.仿真时如果出现宏定义冲突,后面的 define 值会覆盖前面的 define 值。
参考答案:C
解析:
- A对。宏定义最好放到同一个文件中集中管理,比如放到 para.v中,使用的时候 ‘include “para.v”调用即可。
- B对。define可以跨文件使用,parameter可以跨 module使用,localparam只能在本 module使用
- C错。把不希望下面使用的宏 undef掉
- D对。后面的宏会覆盖前面的宏
9、在 systemverilog 中,函数(function)可以调用函数任务(task)?
- A.错误
- B.正确
参考答案:A
解析:function 与 task 对比见下表:
函数function | 任务task | |
---|---|---|
执行与消耗 | 不消耗仿真时间 | 消耗仿真时间 |
仿真控制语句 | 函数中不能含有控制仿真时间的语句 如时间延迟#100,阻塞语句@(posedge clk)等 | 任务中可以包含仿真时间控制语句 如延迟#100,时钟周期@(),wait()以及事件event等语句 |
返回形式 | 函数的返回可以通过调用return语句实现,当不需要返回值时,可以将函数定义为void类型 | 任务没有返回值,一般通过output信号直接输出,也不需要关键字void |
形参变量 | 函数中至少包含一个输入变量进行传参 | 任务中可以没有输入、输出变量 |
调用方式 | 函数的调用可以以语句的一部分出现 | 任务的调用通过一条单独的语句实现 |
相互调用 | 函数中只能调用函数,不能调用任务 | 任务中可以调用任务,也可以调用函数 |
10、假设输入信号 X 位宽为 12bit,inA 位宽为 6bit,inB 位宽为 17bit,实现 Y = X*inA + inB
功能,并要求不损失精度,那么输出信号 Y 位宽应不小于()?
- A.17bit
- B.12bit
- C.18bit
- D.19bit
参考答案:D(易错选为C)
解析:口诀“两数相乘,位宽相加;两数相加,位宽加一”
[ 11 : 0 ] ∗ [ 5 : 0 ] = [ 17 : 0 ] ; [ 17 : 0 ] + [ 16 : 0 ] = [ 18 : 0 ] [11:0]*[5:0]=[17:0];[17:0]+[16:0] = [18:0] [11:0]∗[5:0]=[17:0];[17:0]+[16:0]=[18:0]
11、reg[7:0] mem[1:256];initial $readmemh(“mem.data”,mem,128,1);
对于 mem 行为正确的描述是()?
- A.从地址 128 开始,写到地址 1
- B.从地址 128 开始,写 1 个地址
- C.从地址 1 开始,写 128 个地址
参考答案:A(易错选为B)
解析:表示从 mem.data
中读取数据写进 mem 寄存器,从地址 128 开始写到地址 1
12、九进制数 16 与九进制数 27 相加的结果用九进制表示为()?
- A.45.0
- B.46.0
- C.43.0
- D.44.0
参考答案:D
解析:
- 九进制 16表示的十进制数= 1 ∗ 9 1 + 6 ∗ 9 0 1*9^1+6*9^0 1∗91+6∗90=15
- 九进制 27表示的十进制数= 2 ∗ 9 1 + 7 ∗ 9 0 2*9^1+7*9^0 2∗91+7∗90=25
- 十进制的 40= 4 ∗ 9 1 + 4 ∗ 9 0 4*9^1+4*9^0 4∗91+4∗90=九进制的 44
13、有关 DFT,以下说法不正确的是()?
- A.scan 的设计规则,需保证时钟复位可控
- B.ECO 时无须关注 DFT 网表
- C.主流的 scan 方式采用 MUX-DFF
- D.MBIST 指的是对 memory 的 BIST 测试
参考答案:B
解析:
- B是错的:ECO表示工程改动要求,就是代码不能修改之后,工程有问题,再对设计进行的手工门级修改,这一步必定要关注 DFT网表,DFT表示可测性设计,用来测试芯片加工过程中出现的问题。
- A是对的:scan中要保证时钟复位可控;
- C是对的:主流的 scan方式采用 Mux-DFF,就是在 dff 的输入端加入 mux;
- D是对的:bist在设计时在电路中植入相关功能电路用于提供自我测试功能的技术,以此降低器件测试对自动测试设备(ATE)的依赖程度。包括 LBIST和 MBIST,前者用于测试随机逻辑电路,后者用于测试存储器。
14、对芯片性能影响最大的三个因素是 PVT,分别是指?
- A.package,voltage,temperature
- B.process,voltage,temperature
- C.process,verification,temperature
- D.process,voltage,test
参考答案:B
解析:影响芯片性能的三大因素-PVT,分别是:
- 1)Process:考虑制造工艺不定因素,提供制程因子
- 2)voltage:工作电压,电压越高,延时越小
- 3)temperature:工作温度,温度越高,延时越大
15、下面这段代码,说法错误的是()?
always @(posedge clk) begin
din_dly <= din;
end
- A.din_dly 用来当控制信号是安全的
- B.din_dly 不受复位影响
- C.数据寄存推荐这样的写法
- D.din 的不定态会传递到 din_dly
参考答案:A(易错选为D)
解析:
- din_dly不能当控制信号,因为没有进行打拍处理,可能将 din的不定态传递出去,影响系统稳定,A错,D对。
- 触发条件没有复位信号,故 din_dly不受复位信号影响,B
- 数据寄存推荐这样写法,因为数据寄存不需要复位,C 。
16、下列不属于动态数组内建函数的是()?
- A.delete
- B.new[]
- C.size()
- D.length()
参考答案:D
解析:
- delete:可以用于队列删除元素,当然也可以用来删除动态数组的元素,这个易混淆!
- size:用来约束动态数组元素的个数。关于size,记住:固定数组只能用
$size
,而动态数组可以用$size
和size()
! - length:动态数组没有length函数!
- new:是构造函数,创造对象空间。
详细可参考:
17、关于功耗,以下描述不正确的是?
- A.改变芯片的供电电压和时钟频率都会对芯片功耗产生影响
- B.设计者需要关注平均功耗、峰值功耗和功耗跳变
- C.芯片的功耗会受实际信号的影响,所以功耗测试需要结合业务来开展
- D.对于可关断的模块,使用时钟门控即可降低功耗
参考答案:C
解析:我认为这个题四个选项都对,但是非要选一个的话,我觉得 B\C之间二选一,个人倾向 C,我认为芯片功耗测试的时候,是在芯片上跑最大业务来测功耗,选项 C的意思是说要结合实际的各种业务来测,说的不准确,因此这里 C错。其实本题 B选项中的功耗跳变是什么我也没看懂,可能 B也有问题。
18、为实现占空比 50%三分频时钟,下面描述的电路,正确的是()?
- A.用待分频时钟上升沿采样计数,产生占空比 1/3 的分频时钟 A;用待分频时钟上升沿采样计数,产生 1 个占空比2/3 的分频时钟;把 A 与 B 相或得到 50%占空比时钟。
- B.用待分频时钟上升沿采样计数,产生占空比 1/3 的分频时钟 A;用待分频时钟下降沿采样计数,产生 1 个占空比1/3 的分频时钟;把 A 与 B 相与得到 50%占空比时钟。
- C.用待分频时钟上升沿采样计数,产生占空比 1/3 的分频时钟 A;用待分频时钟下降沿采样计数,产生 1 个占空比1/3 的分频时钟;把 A 与 B 相或得到 50%占空比时钟。
- D.用待分频时钟上升沿采样计数,产生占空比 1/3 的分频时钟 A;用待分频时钟上升沿采样计数,产生 1 个占空比2/3 的分频时钟;把 A 与 B 相与得到 50%占空比时钟。
参考答案:C
解析:三分频占空比 50%的时钟,先采上升沿实现占空比 1/3(高电平:低电平 = 1:2)的分频时钟 A,再采下降沿实现占空比 1/3的分频时钟 B,两者相或即可。
如果高电平时间(占空比)是2/3呢?如下图,两者应该相与!
总结:奇数分频为N时,如果想要得到占空比为50%的时钟信号,需要特别注意高电平持续时间,如果高电平持续时间长,即为 N + 1 2 N \frac{\frac{N+1}{2}}{N} N2N+1时,两个边沿信号相与即可;反之,两个边沿信号相或!
19、关于冯诺依曼结构和哈佛结构的描述中,错误的是()?
- A.冯诺依曼接口中程序计数器负责提供程序执行所需要的地址
- B.哈佛结构中取指令和执行不能完全重叠
- C.冯诺依曼结构的计算机中数据和程序共用一个存储空间
- D.哈佛结构的计算机在一个机器周期内可同时获得指令和操作数
参考答案:B
解析:
- 哈佛结构由于程序和数据存储器在两个分开的物理空间中,因此取指和执行能完全重叠
- 哈佛结构与冯诺依曼结构的区别就是哈佛结构中数据与指令分开存储,可以同时获取。
20、状态机必须有 1 个缺省状态
- A.正确
- B.错误
参考答案:A
解析:状态机必须要有一个缺省状态,相当于 case必须要有 default,防止生成锁存器,使电路更加简洁,也防止电路进入未知状态。
21、a1 和 a2 的检查效果完全一样
property p1;
@(posedge clk) a|=>b|=>c;
endproperty
a1:assert property(p1);
property p2;
@(posedge clk) a##1 b##1 |->c;
endproperty
a2: assert property(p2);
- A.正确
- B.错误
参考答案:A
解析:断言检测:a1与 a2的检查效果一样。
- (| >)表示交叠蕴含,指左边条件发生时,立即在同一个上升沿检测右边。
- (|=>)表示非交叠蕴含。指左边条件发生时,在下一个周期检测右边。
本题 a1表示上升沿到来之后检测到 a=1,下一个周期 b=1,再下一个周期 c=1;a2表示上升沿到来之后检测到 a=1,延时一个周期 b=1,再延时一个周期立即检测 c=1;
22、以下关于 flase-path,正确的是()?
- A.一般模拟 IP 和系统的互联接口都可以设置为 flase-path。
- B.一般异步电路可以设置为 flase-path。
- C.一般异步复位可以设置为 flase-path。
- D.两个不同频率之间的接口一定可以设置为 flase-path。
参考答案:A
解析:
- A是正确的。模拟 ip的时钟频率一般远小于数字电路,因此对数字电路的时序不敏感,互联接口可以设置 false path。
- B是错误的。设置 false path的原因是该路径没必要满足特定时序(比如 setup/hold,recovery/removal,clock gating,max delay等特定时序)。虽然异步电路时钟之间没有固定的相位关系,工具没法直接做 reg到reg的 setup/hold检查,但是可以设置 max delay等特殊约束对需要满足一定时序关系的异步电路做检查,需要看具体的场景。
- C是错误的。对于异步复位,指的只是寄存器使用了异步复位端口 async_reset,在复位的时候复位信号可以是异步的。但它在释放的时候是需要满足 recovery removal时序检查的,需要做同步释放,因为做了同步,所以 STA工具有能力做检查。所以异步复位不能设为 false path,需要检查 recovery removal时序。
- D是错误的。频率不同和 false path没有任何关系。而异步电路的频率可能不同,但是频率不同不等于异步电路。异步电路的本质是来自不同晶振的时钟源驱动的电路,他们频率甚至也可以相同。
23、在 verilog 中,比算数运算符+优先级高的是
- A.&
- B.%
- C.>
- D.!==
参考答案:B
解析:下表中可以看出取反乘除取余加减这种运算符优先级高,接下来是移位,再接下来是等价判断符,最后是逻辑运算符。
注:
~
是按位取反;!
是逻辑取反。
24、有关功耗,以下说法不正确的是()?
- A.电压越大,工作频率越高,其动态功耗越高
- B.低功耗设计的目标就是采用各种优化技术和方法,在各个设计目标之间找到最佳的结合点
- C.设计层次越高,功耗优化所能达到的效果越好
- D.芯片单位面积的动态功耗和静态功耗随着工艺的发展呈下降趋势
参考答案:D(易错选为C)
解析:随着工艺的上升,晶体管阈值降低,漏电流变大,静态功耗变大。
25、generate for 循环语句中使用的标尺变量可定义为 integer。
- A.错误
- B.正确
参考答案:A
解析:generate for中使用的标尺变量是 genvar
26、在时钟上升沿时采样到 start 有效开始,两个时钟周期后,信号“a”连续或者间断地出现 3 次为高电平,紧接着信号“stop”在下一周期为高的是哪个?
A.
property p0;
@(posedge clk)$rose(start1) |-> ##2(a[=>3]) ##1 stop;
endproperty
a0:assert property(p0);
B.
property p0;
@(posedge clk)$rose(start1) |-> ##2(a[*3]) ##1 stop;
endproperty
a0:assert property(p0);
C.
property p0;
@(posedge clk)$rose(start1) |-> ##2(a[->3]) ##1 stop;
endpropertya0:assert property(p0);
D.
property p0;
@(posedge clk)$rose(start1) |-> ##2(a[=3]) ##1 stop;
endproperty
a0:assert property(p0);
参考答案:C
解析:a[->3] ## 1stop
表示 a要连续或者间断的在三个上升沿为高,且第三次为高的下一个时钟周期 stop为高。符合题目所说。其中要说明下的是 D选项 a[=3] ## 1stop
,他表示 a要连续或者间断的在三个上升沿为高后 stop可以立即为高也可以过几个周期为高。
27、ASIC 开发流程中,如下环节的先后顺序是?
- A.synthesis->P&R->RTL
- B.RTL-> P&R-> synthesis
- C.RTL-> synthesis-> P&R
- D. synthesis-> RTL-> P&R
参考答案:C
解析:先 rtl设计,然后 synthesis(综合),再布局布线(P&R)
28、以下关于 flase-path,正确的是()?
- A.一般模拟 IP 和系统的互联接口都可以设置为 flase-path。
- B.一般异步电路可以设置为 flase-path。
- C.一般异步复位可以设置为 flase-path。
- D.两个不同频率之间的接口一定可以设置为 flase-path。
参考答案:A
解析:
- A是正确的。模拟 ip的时钟频率一般远小于数字电路,因此对数字电路的时序不敏感,互联接口可以设置 false path。
- B是错误的。设置 false path的原因是该路径没必要满足特定时序(比如 setup/hold,recovery/removal,clock gating,max delay等特定时序)。虽然异步电路时钟之间没有固定的相位关系,工具没法直接做 reg到reg的 setup/hold检查,但是可以设置 max delay等特殊约束对需要满足一定时序关系的异步电路做检查,需要看具体的场景。
- C是错误的。对于异步复位,指的只是寄存器使用了异步复位端口 async_reset,在复位的时候复位信号可以是异步的。但它在释放的时候是需要满足 recovery removal时序检查的,需要做同步释放,因为做了同步,所以 STA工具有能力做检查。所以异步复位不能设为 false path,需要检查 recovery removal时序。
- D是错误的。频率不同和 false path没有任何关系。而异步电路的频率可能不同,但是频率不同不等于异步电路。异步电路的本质是来自不同晶振的时钟源驱动的电路,他们频率甚至也可以相同。
29、有关综合的说法,一下哪个选项是错误的?
A.综合网表可用于 EDA 功能仿真
B.时序逻辑 always 语句中, if-else 如果 else 的分支缺乏,会综合成 latch
C.casez 是不可综合的
D.相同的 RTL 代码,每次综合出来的网表可能是不一样的
参考答案:B
解析:casez属于有些工具可综合,有些工具不可综合,这里不一定对错,B肯定不对,因为时序逻辑有记忆功能,不会产生锁存器。
30、下面是一个什么电路()?
always @(posedge clk) begin
if(rst_n == 1’b0)
a<=2’b0;
else if (b>2’b0)
a<= b;
end
- A.综合成 latch
- B.带异步复位的 D 触发器
- C.组合逻辑
- D.带同步复位的 D 触发器
参考答案:D
解析:同步复位的 D触发器,没啥可说的。
多选题
31、添加断言(SVA)的作用主要包含以下哪些方面?
- A.增加覆盖率的检查,保证自己希望冲击的场景都被冲击到。
- B.部分 bug 需要积累效应才会暴露,验证环境难以构造足够长时间的用例用冲击出来,通过断言可以有效解决。
- C.复杂逻辑中添加 assertion,增加微观检查,做补充验证,相当于验证的白盒检查。
- D.关键节点添加 assertion,帮助设计人员迅速找出代码出错点,提高问题定位的效率。
参考答案:ABCD(易少选:ACD)
解析:没啥问题,应该都对,仅仅觉得 B可能有点问题,但是没查到。
32、多 bit 信号跨时钟域同步常用的方式有()?
- A.DMUX
- B.打三拍
- C.乒乓 buffer
- D.异步 fifo
参考答案:ABD(易少选:AD)
解析:
- 乒乓 Buffer是用于提高数据吞吐率的。
- 这里需要解释一下的是 DMUX,DMUX相当于一个 D触发器+一个多路选择器,MUX充当的作用就是触发器的一个使能信号。判断源时钟域的单比特信号是否在目的时钟域成功同步,如果是,那么这个时间长度下多比特信号也可以同步过来,而不违背建立时间。
33、Formality 是由 synopsys 公司开发的一种形式验证(Formal verification)工具,用于两个 design 之间的等价性验证,它可以支持如下哪些等价性验证()?
- A.RTL 级对 RTL 级
- B.RTL 级对门级网表
- C.门级网表对门级网表
参考答案:ABC
解析:Formality可以实现对 RTL、门级网表之间任意两者之间的等价性验证。
34、下列表达式中,哪些可以使用一个或多个二输入与非门器件实现?
- A.A&B
- B.常数 1
- C.~A
- D.A+B
参考答案:ABCD(易少选:ABC)
解析:与非门是通用门,可以实现任何组合逻辑
35、DFT 设计增加的电路一般包括
- A.SCAN
- B.JTAG
- C.BIST
- D.MBIST
参考答案:ACD
解析:
- A是边界扫描
- C是自建内测试
- D是存储器自建内测试
- B是下载通道,在 dft 里面的边界扫描大多是通过这个实现的。它是芯片自带的,不是 DFT额外加的。
36、在 STA 分析中,下列选项中哪些属于时钟的时序特性()?
- A.时钟频率
- B.时钟占空比
- C.时钟抖动
- D.时钟偏移
参考答案:ABCD
解析:时钟的时序特性包括时钟周期、时钟占空比、时钟转换时间、时钟延迟、时钟偏斜和时钟抖动。
37、不满足下列哪些时间要求,会产生时序问题
- A.hold 时间
- B.recovery 时间
- C.setup 时间
参考答案:ABC
解析:B是复位信号释放时要进行检查的
38、verilog 语法关于任务和函数,描述正确的有()?
- A.任务可以调用函数(function)
- B.函数可以调用任务
- C.函数可以调用函数
- D.任务(task)可以调用任务
参考答案:AD
解析:
- 函数(function)就是块组合逻辑,任务(task)是个事件;
- 函数不能调用函数和任务,任务可以调用函数和任务;【稍稍有点出入】
- 函数要有一个或多个输入且要有返回值(没有返回值要写成void),任务可以有输入也可以没有输入,也没有返回值;
- 函数不能有延时、事件触发,任务可以。
39、对于设计中所使用的的 pipeline,说法正确的有()?
- A.使用 pipeline 一定可以减少面积
- B.使用 pipeline 可能会导致面积增大
- C.使用 pipeline 会对时序有好处, STA 更容易通过
- D.使用 pipeline 会导致数据延时增加,但如果工作频率不变,系统的吞吐量不会改变
参考答案:BC(易错选BCD)
解析:需要注意的是 D选项,工作频率不变,系统的吞吐量也会变大。
40、下列说法不正确的是()?
- A.设计异步 FIFO 时采用格雷码的原因主要是为了省功耗
- B.对单比特控制信号采用双寄存器法打拍就可以消除亚稳态
- C.异步处理需要考虑发送和接收时钟之间的频率关系
- D.尽量将异步逻辑和同步逻辑剥离开,分别在不同的模块中实现
参考答案:AB(易错选BCD)
解析:
- A 是为了防止亚稳态
- B 单比特信号快到慢打拍没用。