zl程序教程

您现在的位置是:首页 >  硬件

当前栏目

【题目精刷】2022泰凌微-数字芯片

芯片 数字 2022 题目
2023-09-11 14:16:29 时间

为了能够在做题目的过程中学习到需要的知识,对每道题知识参考或者知识详情都做了详细的说明。方便后续复习。欢迎对文中的解答批评指正。

题目评价

  • 难易程度:★★☆☆☆
  • 知识覆盖:★★★★☆
  • 超纲范围:☆☆☆☆☆
  • 值得一刷:★★★★★

非常值得一刷。

文章目录

单选(2分)

1. #UDLY语句可以被综合成延时电路

  • A.正确
  • B.错误

以Vivado synthesis支持的Verilog结构来学习 Verilog语句可综合性 3.3 过程性语句
对于过程性语句中的延时,综合工具会忽略。


2. 以下verilog变量名合法的是

  • A. 3sum
  • B. a/b
  • C. ab@cd
  • D. subSme_

Verilog-2005 3.7 Identifiers, keywords, and system names

标识符用于给对象一个唯一的名称,以便它可以被引用。标识符可以是简单标识符,也可以是转义的标识符。一个简单的标识符应该是字母、数字、美元符号($)和下划线(_)的任何序列。

简单标识符的首字符不得为数字或$;可以是字母或下划线。

标识符应区分大小写。

转义的标识符应该以反斜杠字符()开始,以空格(空格,制表符,换行符)结束。它们提供了一种在标识符中包含任何可打印ASCII字符的方法(十进制值33到126,或21到7E的十六进制)。开头的反斜杠字符和结束的空格都不被认为是标识符的一部分。因此,转义标识符\cpu3与非转义标识符cpu3被同等对待。

注意哦,n$657是合法的。


3. 如下对于 procedural block 说法错误的是

  • A. 代码中的procedural block是同时执行的
  • B. initial和always procedural block可以嵌套
  • C. initial procedural block只执行一次
  • D. always procedural block可以循环执行

Verilog-2005 9. Behavioral modeling

Verilog行为模型(behavioral model)包含过程语句(procedural statement),用于控制仿真和操作变量。这些语句包含在过程中。每个过程都有一个与其相关联的活动流。

活动开始于控件构造的 initial 和 always 。每个 initial 构造和每个 always 构造都启动一个单独的活动流。所有的活动流都是并发的,以模拟硬件固有的并发性。

在模型的仿真过程中,所有由 initial 和 always 构造定义的流在仿真零时刻一起开始。 initial 构造只执行一次,而always构造则重复执行。

所以 initial和always procedural block 不可以嵌套,两种构造执行的方式不一致。


4. 下面那个不是IC设计前端的FLOW

  • A.RTL设计
  • B.综合
  • C.门级验证
  • D.布局布线

数字前端是以架构设计为起点,以生成可以布局布线的网表级为终点

  1. RTL设计
  2. 仿真验证:Mertor的Modelsim、Synopsys的VCS、Cadence的NC-Verilog
  3. 逻辑综合:Synopsys的Design Compiler
  4. STA:Synopsys的Prime Time
  5. 形式验证:Synopsys的Formality

数字IC后端设计流程

  1. DFT:Synopsys的DFT Compiler
  2. 布局规划:Synopsys的Astro
  3. 时钟树综合:Synopsys的Physical Compiler
  4. 布线:Synopsys的Astro
  5. 寄生参数提取:Synopsys的Star-RCXT
  6. 版图物理验证:Synopsys的Hercules

产生GDSII的文件格式移交给芯片代工厂去生产实际的芯片


5. 下面哪种不属于Vim编辑器的工作模式

  • A.命令模式
  • B.插入模式
  • C.底行横式
  • D.列操作模式

  • 命令模式:vim编辑器的入口,通过使用命令对文件进行常规的编辑操作,例如:复制、粘贴、删除、定位、翻页 等等。
  • 插入模式:正常的编辑文字。
  • 底行横式:vim编辑器的出口,执行 退出文件、保存并退出文件 等操作。

6. 下面哪个是最简单的逻辑门

  • A.与门
  • B.或门
  • C.非门
  • D.与非门

在这里插入图片描述

或门虽然也是两个CMOS,但是输入端口更多。


7. 如下的几个Verilog描述层次中,我们常用的是哪个层次

  • A. Gate Level
  • B. Algorithmic
  • C. Register Transfer Level
  • D. Switch Level

《Verilog经典教程(第三版)》第四章 不同抽象级别的Verilog HDL模型:

  • 系统级(system):用高级语言结构实现设计模块的外部性能的模型。
  • 算法级(algorithm):用高级语言结构实现设计算法的模型。
  • RTL级(Register Transfer Level):描述数据在寄存器之间流动和如何处理这些数据的模型。
  • 门级(gate-level):描述逻辑门以及逻辑门之间的连接的模型。
  • 开关级(switch-level):描述器件中三极管和储存节点以及它们之间连接的模型

RTL代码,RTL代码


8. 在systemverilog中声明随机变量的关键词为

  • A. randa
  • B. randc
  • C. randomize
  • D. urandom_range

A:没这个关键词。
B: 类变量可以使用rand和randc 类型修饰符关键字声明为随机值。
C:调用randomize()方法为总线对象生成新的随机值
D:函数的作用是:返回指定范围内的无符号整数。


9. linux常用命令中,下列哪个命令用于修改文件的所属群组

  • A. cat
  • B. chgrp
  • C. chown
  • D. chmod

linux教程

  • cat:cat(concatenate)命令用于连接文件并打印到标准输出设备上。
  • cbgrp:cbgrp(change group)命令用于变更文件或目录的所属群组。
  • chown: chown(change owner)命令用于设置文件所有者和文件关联组的命令。
  • chmod: chmod(change mode)命令是控制用户对文件的权限的命令。

10. 在systemverilog中,可以在哪里定义类

  • A. program
  • B. module
  • C. package
  • D. 以上都可以

参考:《SYSTEM VERILOG验证-测试平台编写指南》5.4 在哪里定义类

在SystemVerilog中,你可以把类定义在program. module. package中, 或者在这些块之外的任何地方。类可以在程序和模块中使用。

题目可能就是根据这句话出的,因为SV规范没有明确类的定义位置,但类作为一种抽象的数据类型,可以定义类型的位置就可以定义类。


11. 正确描述FIFO特性的为

  • A.将满信号(almost_full)和将空信号(almost_empty)是必须使用的
  • B.FIFO可以作为数据缓冲模块
  • C.满信号在读时钟域产生
  • D.FIFO可以通过写入地址直接访问

A: 无
C: 写满写满, 读空读空。
D: 不可以,只能先进先出。


12. 以下哪个不属于面向对象编程(OOP)特性

  • A.封装
  • B.继承
  • C.多态
  • D.重载

OOP三大基本特征:封装、继承、多态


13. systemverilog中以下语句中哪一个表示等待至少一个进程完成,然后再执行后继的语句

  • A. fork_join
  • B. fork_join_none
  • C. fork_join_any
  • D. fork_join_one

join:父进程会一直阻塞,直到这个fork派生的所有进程完成为止。
join_any:父进程会一直阻塞下去,直到这个fork派生的任何一个进程完成为止。
join_none:父进程继续与fork派生的所有进程并发执行。在父线程执行阻塞语句之前,派生的进程不会开始执行。


14. systemverilog中能够从当前for循环或者while程序块中跳出并运行下一段程序的语句是

  • A. continue
  • B. break
  • C. stop
  • D. finish

循环跳转语句:break, continue, 和 return.

  • continue:continue语句跳到循环末尾,如果存在循环控制,则执行循环控制。
  • break:break语句跳出循环。
  • return:return语句只能在任务或函数中使用。在返回值的函数中,返回值必须具有正确类型的表达式。

程序控制的任务:$stop 和 $finish

  • $stop:停止
  • $finish:结束
  • e x i t :可以通过调用 exit:可以通过调用 exit:可以通过调用exit系统任务显式地退出每个程序。当所有程序(隐式或显式)退出时,仿真结束并隐式地调用$finish。

15. 用补码方式表示的有符号二进制数1011.10换算成十进制为多少

  • A.-4.5
  • B.4.5
  • C.-5.5
  • D.5.5

2^4 - 4’b1011 = 16 - 11 = 5


16. 下列哪种常用电平标准是单端的()

  • A.PECL
  • B.LVDS
  • C.RS485
  • D.RS232

  • PECL: 指的是正射极耦合逻辑电平。采用正电源的系统(+5V),可将VCC接到正电源而VEE接到零点。这样的电平通常被称为PECL(Positive Emitter Coupled Logic)。如果采用+3.3 V供电,则称为LVPECL。
  • LVDS: LVDS(Low-Voltage Differential Signaling)低电压差分信号
  • RS485: RS485是一种串口接口标准, 为了长距离传输采用差分方式传输,传输的是差分信号,即通过AB两根线的电压差作为电平信号。
  • RS232: 是电子工业协会制定的异步传输标准接口。

17. 以下的哪个 timescale directive定义下,#1.23表示1.23ps

  • A. timescale 1ps/10fs
  • B. timescale 1ps/100fs
  • C. timescale 1ns/1ps
  • D. timescale 1ns/10ps

参考:Verilog-2005 19.8 `timescale

\timescale time_unit / time_precision`

对于小数,四舍五入到最接近 time_precision 的值


18. 修改文件夹"test"以及其下面的所有文件权限为User自己可读可写可执行,Group和Other设定为仅可读

  • A. chmod -R 755 test
  • B. chmod -R 744 test
  • C. chmod -R 722 test
  • D. chmod 755 test

Linux chmod命令
【Owner】【Group】【Other Users】
【read】【write】【execute】


19. 下面哪个phase在UVM tree中是按照自上而下的顺序执行

  • A. build_phase
  • B. connect_phase
  • C. end_of_elaboration_phase
  • D. start_of_simulation_phase

验证暂时不会


20. 下面那些systemverilog数据类型不是双状态数据类型

  • A. bit
  • B. int
  • C. real
  • D. byte

Verilog变量(reg、time、integer、real、realtime)和线网net都有4态:0,1,Z,X。
SystemVerilog兼容Verilog并新增:
- 4态数据类型:logic
- 2态数据类型:bit、byte、shortint、int、longint


多选题(共15题,每题2分,共30分)

21. 下列哪些方式可以减少亚稳态问题的影响

  • A.提升系统时钟频率
  • B.用反应更快的FF
  • C.架构上增加data toggle rate
  • D.改善时钟质量

深扒“亚稳态”的底裤,从MOS管到CMOS门电路,再到亚稳态分析 4.6 亚稳态怎么降低发生概率

即提高 MTBF

  1. 降低系统时钟频率
    即降低 f C L K f_{CLK} fCLK f D A T A f_{DATA} fDATA

  2. 用反应更快的FF
    即增大 t M E T t_{MET} tMET

  3. 引入同步机制,防止亚稳态传播

  4. 改善时钟质量,用边沿变化快速的时钟信号
    即增大 t M E T t_{MET} tMET


22. 芯片中设计中功耗密度过大,会产生什么不良影响

  • A.hot-spot
  • B.电压下降
  • C.不满足时序约束
  • D.封装成本变高

A: hot-spot,即芯片上功耗和电源噪声最大的地方,功耗过大,肯定会发热,而结温是影响时序的。

B: 没查到功耗对电压的影响。

C: 温度影响数字IC芯片的阈值电压Vt,温度升高导致Vt下降。阈值电压Vt下降使芯片速度加快,但通常温度升高导致迁移率下降更快,综合来说温度升高速度变慢。

D: 封装需要考虑散热。


23. 下列数据类型中属于四状态类型的有哪些

  • A. int
  • B. logic
  • C. bit
  • D. time

见第20题


24. 关于systemverilog中new操作的下列描述中,错误的是

  • A. 它可以用来动态创建对象和对象数组
  • B. 使用它创建对象时要调用构造函数
  • C. new操作被定义成一个需要有返回类型的函数
  • D. 使用它创建对象数组时必须指定对象的初始值

参考:SV-2005 7.7 Constructors

C: new操作被定义为一个没有返回类型的函数,并且像任何其他函数一样,它必须是非阻塞的。尽管new没有指定返回类型,但赋值的左边决定了返回类型。

D: new [ expression ] [ ( expression ) ]: ( expression )为可选


25. 数字电路的验证维度有哪些

  • A.完备性
  • B.复用性
  • C.高效性
  • D.满足性能

参考:《芯片验证漫游指南》1.3 验证能力的5个维度

  • 完备性
  • 复用性
  • 高效性
  • 高产出
  • 代码性能

26. 下面哪个选项不可以消除hold time violation

  • A.插入buff
  • B.提高时钟频率
  • C.降低时钟频率
  • D.提高电压

保持关系
t l a u n c h + t c l k 2 q + t l o g i c > t c a p t u r e + t h o l d t_{launch} + t_{clk2q} + t_{logic} > t_{capture} + t_{hold} tlaunch+tclk2q+tlogic>tcapture+thold

保持违例:数据通路延迟过小,时钟通路延迟过大。

A: 在数据通路插入buff,可以修复hold违例。
B、C:与时钟频率无关
D: 提高电压,数据通路延迟减小。一般时钟有专用时钟网络影响较小。


27. 以下同步逻辑电路和异步逻辑电路描述正确的是

  • A. 同步逻辑电路是时钟之间没有固定的因果关系。异步逻辑电路是各时钟之间有固定的因果关系
  • B. 同步逻辑是由时序电路(寄存器机各种触发器)和组合逻辑电路构成的电路,其所有操作都是在严格的时序下完成的
  • C. 异步逻辑电路不同时钟域之间不需要进行时钟同步
  • D. 异步逻辑可能存在多个时钟信号,或者不存在时钟信号,电路中一个逻辑的变化就可能引起整个电逻辑的变化

A: 反了
C:需要跨时钟域处理


28. 下面那些是基于Systemverilog的验证方法学?

  • A. VMM
  • B. OVM
  • C. UVM
  • D. AVM

参考:《UVM实战》

  1. VMM:Verification Methodology Manual。Synopsys 2006 推出。初期闭源,OVM出现后开源。VMM中集成了寄存器解决方案RAL(Register Abstraction Layer)。
  2. OVM:Open Verification Methodology。Candence 和 Mentor 2008 推出。引进 factory 机制。没有寄存器解决方案,Candence 推出 RGM 补足这一短板。现已被UVM取代停止更新。
  3. UVM:Universal Verification Methodology。Accellera 2011 推出,得到Synopsys、Mentor、Cadence支持。几乎完全继承OVM,又采纳了VMM中的RAL。吸收了VMM中一些优秀实现方式。

29. 在验证中下列关于代码覆盖率描述错误的是

  • A.代码覆盖率包括语句覆盖率
  • B.代码覆盖率包括条件覆盖率
  • C.代码覆盖率包括功能
  • D.代码覆盖率达到100%说明所有Bug已消除

用测试平台覆盖的设计内的语句、块、路径等的百分比就是该测试平台的代码覆盖率。
大多数HDL仿真器支持的代码覆盖率参数包括:

  1. 行覆盖率(Line coverage)/语句覆盖(Statement Coverage)
    衡量多少行代码已经被执行过。
  2. 路径覆盖率(Path Coverage)
    在穿过代码和表达式的路径中有哪些已经被执行过。
  3. 条件覆盖率 (Conditional coverage)
    判定式中有多个逻辑条件时,要求每个条件的取值均得到验证。
  4. 分支覆盖率(Branch coverage)
    衡量代码中的分支覆盖的情况。if…else、case、?..:
  5. 翻转覆盖率(Toggle coverage)
    哪些单比特变量的值为0或1.
  6. 有限状态机覆盖率(FSM coverage)
    状态机中哪些状态和状态转换已经被访问过。

功能覆盖率是和设计意图紧密相连的,有时也被称为“规范覆盖率”,而代码覆盖率则是衡量设计的实现情况。设想某个代码块在设计中被漏掉的情况。代码覆盖率不能发现。


30. 低功耗电路实现的方法有

  • A.降低工作电压
  • B.增加负载电容
  • C.降低电路面积
  • D.尽可能提高电路性能

CMOS 电路功耗类型:

  • 动态功耗:负载电容充放电引起的功耗。
  • 静态功耗:漏电流引起的功耗。

P = 1 2 ⋅ C ⋅ V D D 2 ⋅ f ⋅ N S W ⏟ 翻转功耗 + Q S C ⋅ V D D ⋅ f ⋅ N S W ⏟ 短路功耗 ⏞ 动态功耗 + I l e a k ⋅ V D D ⏟ 漏电流功耗 ⏞ 静态功耗 P=\overbrace{\underbrace{ \frac{1}{2}·C·V^2_{DD}·f·N_{SW}}_{翻转功耗} + \underbrace{Q_{SC}·V_{DD}·f·N_{SW}}_{短路功耗}}^{动态功耗} + \overbrace{\underbrace{I_{leak}·V_{DD}}_{漏电流功耗}}^{静态功耗} P=翻转功耗 21CVDD2fNSW+短路功耗 QSCVDDfNSW 动态功耗+漏电流功耗 IleakVDD 静态功耗

  • C C C:结电容。

  • N S W N_{SW} NSW:单周期内翻转晶体管数目。

  • f f f:系统工作时钟频率。

  • V D D V_{DD} VDD:供电电压。

  • Q S C Q_{SC} QSC:翻转过程中的短路电量。

  • I l e a k I_{leak} Ileak:漏电流。

  • 降低工作电压 V D D V_{DD} VDD:降低动态功耗。

  • 增加负载电容:提高动态功耗

  • 降低电路面积 N S W N_{SW} NSW:降低动态功耗

  • 尽可能提高电路性能:不清楚有什么明确关联。


31. 下面哪种方式可以对时序进行检查

  • A.即时断言
  • B.并发断言
  • C.建立时间约束
  • D.用保持时间约束

2022紫光做过。

SystemVerilog-2005 17. Assertions
有两种断言:并发的(concurrent )和即时的(immediate)

  • 即时断言的执行遵循仿真事件语义,并像过程块中的语句一样执行。即时断言主要用于仿真。
  • 并发断言基于时钟语义,并使用变量的采样值。SystemVerilog断言的目标之一是为断言提供通用的语义含义,以便它们可以用于驱动各种设计和验证工具。许多工具,如形式验证工具,使用基于周期的语义评估电路描述,这通常依赖于时钟信号或信号来驱动电路评估。时钟边缘之间的任何节拍或事件行为都会被抽象掉。并发断言结合了这种时钟语义。虽然这种方法通常简化了电路描述的评估,但在许多情况下,这种基于周期的评估提供了与SystemVerilog标准 基于事件的评估 不同的行为。

32. 超大规模集成电路设计中,为了高速设计,采取以下哪些措施

  • A.流水线设计
  • B.并行化设计
  • C.资源共享
  • D.串行化设计

C、D: 以速度换面积。


33. 竞争冒险现象怎样可以消除

  • A.加入滤波电容
  • B.引入同步机制
  • C.不加选通信号
  • D.增加冗余逻辑

  1. 静态冒险
  • 功能冒险:逻辑功能决定所以不能修改逻辑设计,可以用选通输出的方法消除。
  • 逻辑冒险:单个输入变量状态改变引起的,可用代数法(某变量以原变量和反变量形式在函数表达式中)和卡诺图法(最小项相邻则有)确定。可以通过增加冗余项、接入滤波电容、引入封锁脉冲或选通脉冲、格雷码等。
  1. 动态冒险
    指在输入变化的前后,稳态输出应该变化,但出现了短暂的反复。即输出为1→0→1→0或0→1→0→1。电路输出端的动态冒险,一般都是前级产生了静态冒险引起,如果消除了静态冒险,动态冒险也能消除。

34. 下列关于Setup/Hold Time说法正确的是?

  • A.如果DFF的Hold时间不满足,通常可以通过增加数据路径延时来解决
  • B.如果DFF的Setup时间不满足,通常可以通过增加数据路径延时来解决
  • C.如果DFF的Hold时间不满足,通常可以通过增加时钟路径延时来解决
  • D.如果DFF的Setup时间不满足,通常可以通过增加时钟路径延时来解决

我们知道建立关系:
t l a u n c h + t c l k 2 q + t l o g i c + t s e t u p < t c a p t u r e + t c y c l e t_{launch} + t_{clk2q} + t_{logic} + t_{setup}< t_{capture} + t_{cycle} tlaunch+tclk2q+tlogic+tsetup<tcapture+tcycle

保持关系
t l a u n c h + t c l k 2 q + t l o g i c > t c a p t u r e + t h o l d t_{launch} + t_{clk2q} + t_{logic} >t_{capture} + t_{hold} tlaunch+tclk2q+tlogic>tcapture+thold

建立违例:数据通路延迟过大,时钟通路延迟过小。
保持违例:数据通路延迟过小,时钟通路延迟过大。


35. 请找出以下总线中的串行总线

  • A.AXI
  • B.SDIO
  • C.UART
  • D.IIC

2022紫光做过。

简单理解就是完成单向的数据传输时只有一根数据线路。

AXI,数据总线,可以是8、16、32、64、128、256、512或1024位宽。
安全数字输入输出 SDIO(Secure Digital Input and Output),SDIO是可以有多跟数据线的,一般是4bit,比如我们的SD卡。
通用异步收发器 UART(Universal Asynchronous Receiver/Transmitter)
集成电路总线 IIC(Inter-Integrated Circuit)


36. 一个好的验证流程可以在一定程度上保证验证的质量和效率,假设当你要验证一个DUT的时候。你会按照怎样的流程进行验证?请列出每个step并给出详细说明


验证暂时不会


37. 请尽量多的陈列数字芯片设计时降低芯片功耗的方法


设计时降低芯片功耗的方法
参考:《SOC设计方法与实现(第3版)》

系统级优化,包括软、硬件协同设计,用户ISA,算法优化及协同综合等方法,最多可以节省大于70%的功耗。行为级优化,包括排序、流水线及行为转换等优化方法,最多可以节省40%~70%的功耗。RTL 级优化,包括停时钟、预计算、操作数隔离、状态分配等技术,最多可以节省25%~40%的功耗。逻辑级优化,包括逻辑重构、工艺映射、重新分配引脚的顺序和相位等方法,最多可以节省15% 25%的功耗。物理级优化,包括扇出的优化、晶体管的大小调整、分块时钟树设计和毛刺的消除等方法,最多可以节省10%15%的功耗。所以,低功耗设计应从系统设计开始,级级把关。


38. 在一个CPU系统中,如果有两个模块UART和TIMER可以向CPU发送中断(电平),由CPU进行控制中断清除,如何完备的验证中断


验证暂时不会


Rivision

时间修改内容
2023.01.27修改 26、34 题中保持关系的错误