type
status
date
slug
summary
tags
category
Property
Nov 30, 2023 02:46 PM
icon
password
属性
属性 1
描述
Origin
URL
 
 
 
 

海思笔试

1.漏电流和逻辑电路的设计工作频率的关系。 2.异步电路容易出现的问题。(STA无法检查时序,毛刺。) 3.WRR和RR仲裁 4.自动插入CLOCK GATING的代码风格有?(多选) 5.电源完整性和信号完整性。 6.data_arrival_time 的计算 7.DC优化timing的命令 8.memory的低功耗设计中使用的措施有? 9.从DC和PT的角度分析电路有多少条reg到reg的path? 10.FIFO的空满信号产生? 11.有一个四位D/A转换器,设它的满刻度输入为20V,当输入数字量为1101时,输出电压是? 12.访问DRAM和SRAM的低功耗设计方法? 13.SPI协议通过哪一种方式实现从机功能? 14.I2C总线可以达到的传输速率为? 15.关于宏定义的说法不正确的是? 16.task和function的区别是? 17.关于PLL输入时钟和输出时钟相位的关系? 18.持续收敛的PL3分频器的输入时钟和分频后的输出时钟的关系? 19.sv中的跳转操作命令有(disable\break\return\continue) 20.数字芯片后端的LVT\RVT\HVT的区别? 21.静态功耗和动态功耗? 22.数字芯片设计中的面积优化方法? 23.异步复位同步撤离电路的作用? 24.多比特信号跨时钟域常用的同步方式? 25.存储器中层次结构的理论基础局部性原理? 26.跨时钟域的处理三大方法?(打三拍?) 27.代码覆盖率能够确认边界点的测试? 28.报文处理设计规格支持的报文长度为36-256其余长度直接丢弃的? 29.队列代码题mem[5][4]是多少? 30.DCG和PR数据的一致性 31.DCG的run_time 32.DCG相对DC的优势 33.sv的四值类型? 34.影响芯片的静态功耗的因素? 35.STA将每条路径的延迟? 36.数字电路设计哪些可以作为调试信息?(多选) 37.状态机跳转出现死锁的代码是? 38.DCG早期判断design congestion 39.状态机出错时预复位可以自动恢复?(判断题)
 
 
 

联发科IC笔试

notion image
notion image
notion image
 
notion image
5.画出你最熟悉的一个项目框图。解释数据流,难点,如何解决的?
 
notion image
notion image
notion image
notion image
 
 

美芯晟笔试题

1.简述一下IC前端设计流程和使用的工具

答:前端设计流程:规格制定-详细设计- HDL编码-仿真验证-逻辑综合- STA-形式验证。具体为
1、规格制定
芯片规格,也就像功能列表一样,是客户向芯片设计公司提出的设计要求,包括芯片需要达到的具体功能和性能方面的要求。
2、详细设计
Fabless根据客户提出的规格要求,拿出设计解决方案和具体实现架构,划分模块功能。
3、HDL编码
使用硬件描述语言VHDL,将模块功能以代码来描述实现,也就是将实际的硬件电路功能通过HDL语言描述出来,形成RTL代码。
4、仿真验证
仿真验证就是检验编码设计的正确性,检验的标准就是第一步制定的规格。看设计是否精确地满足了规格中的所有要求。规设计和仿真验证是反复迭代的过程,直到验证结果显示完全符合规格标准。仿真验证工具Mentor公司的Modelsim, Synopsys的VCS,还有Cadence的Veridi均可以对RTL级的代码进行设计验证。
5、逻辑综合――Design Compiler
仿真验证通过,进行逻辑综合。逻辑综合的结果就是把设计实现的HDL代码翻译成门级网表netlist。综合需要设定约束条件,就是你希望综合出来的电路在面积,时序等目标参数上达到的标准。逻辑综合需要基于特定的综合库,不同的库中,门电路基本标准单元(standard cell)的面积,时序参数是不一样的。所以,选用的综合库不一样,综合出来的电路在时序,面积上是有差异的。一般来说,综合完成后需要再次做仿真验证(这个也称为后仿真,之前的称为前仿真)逻辑综合工具Synopsys的Design Compiler,仿真工具选择上面的三种仿真工具均可。
6、STA
静态时序分析,这也属于验证范畴,它主要是在时序上对电路进行验证,检查电路是否存在建立时间(setup time)和保持时间(hold time)的违例(violation)。这个是数字电路基础知识,一个寄存器出现这两个时序违例时,是没有办法正确采样数据和输出数据的,所以以寄存器为基础的数字芯片功能肯定会出现问题。STA工具有Synopsys的Prime Time。
7、形式验证
这也是验证范畴,它是从功能上对综合后的网表进行验证。常用的就是等价性检查方法,以功能验证后的HDL设计为参考,对比综合后的网表功能,他们是否在功能上存在等价性。这样做是为了保证在逻辑综合过程中没有改变原先HDL描述的电路功能。形式验证工具有Synopsys的Formality。从设计程度上来讲,前端设计的结果就是得到了芯片的门级网表电路。

2.触发器建立时间和保持时间的概念,为什么要满足触发器的建立时间和保持时间?

答:建立时间(setup time):是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器。
保持时间(hold time):是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被打出触发器。
如果不满足建立和保持时间,触发器将进入亚稳态,进入亚稳态后触发器的输出将不稳定,在0和1之间变化,这时需要经过一个恢复时间,其输出才能稳定,但稳定后的值并不一定是你的输入值。

3.什么是亚稳态,为什么会产生亚稳态,减少亚稳态的方法?

答:(1)亚稳态是指触发器无法在某个规定的时间段内到达一个可以确认的状态。
(2)亚稳态一般发生在跨时钟传输、异步信号采集中以及复位电路中。 在同步系统中,输入总是与时钟同步,因此寄存器的setup time和hold time是满足的,一般情况下是不会发生亚稳态情况的。
1、跨时钟域信号传输
产生:在跨时钟域信号传输时,由于源寄存器时钟和目的寄存器时钟相移未知,所以源寄存器数据发出数据,数据可能在任何时间到达异步时钟域的目的寄存器,所以无法保证满足目的寄存器Tsu和Th的要求,从而出现亚稳态。
消除:对异步信号进行同步处理;如添加两级D触发器、采用握手进行交互等。
2、异步信号采集
产生:在异步信号采集中,由于异步信号可以在任意时间点到达目的寄存器,所以也无法保证满足目的寄存器Tsu和Th的要求,从而出现亚稳态。
消除:采用FIFO对跨时钟域数据通信进行缓冲设计;
3、异步复位电路
产生:在异步复位电路中,复位信号的释放时间不定,难以保证满足恢复时间(Recovery Time)以及去除时间(Removal Time),从而出现亚稳态。
消除: 对复位电路采用异步复位、同步释放方式处理。

4.用脚本将如下SDF文件中的SETUPHOLD所在行后面的数字分别加0.30.2。

例如:28660行,0.141及0.144加0.3后分别为0.441及0.444;-0.052及-0.050加0.2后分别为0.148及0.150。
notion image
notion image
 

5.简述一下fork   join, fork  join_any , fork…join_none.的用法差异

答:fork join :内部 begin end 块并行运行,直到所有线程运行完毕才会进入下一个阶段。
Fork join_ any :内部 begin end 块并行运行,任意一个 begin end 块运行结束就可以进入下一个阶段。
Fork join_ none :内部 begin end 块并行运行,无需等待可以直接进入下一个阶段。

6.用三端式状态机实现一个序列检测模块。A为输入端,B为输出端,如果A连续输入1101则B输出为1否则为0。例如A输入00100111011011100,B输出为00000000010010000请画出state machine,并用RTL 描述state machine.

notion image

画一下异步FIFO基本结构,并简述各模块功能及原理

notion image
FIFO内部主要由读写FIFO控制模块和双口RAM模块组成。
(1)双口RAM模块
作用:用作存储模块,输入的读写地址都是二进制的。最高位用于存放空/满信号。
(2)FIFO判空模块
作用:输入读使能信号,产生对应二进制地址输出到RAM模块,并将二进制地址转化为相应的格雷码输出到同步模块,同步模块将该读地址同步到写时钟域中。
(3)读时钟域到写时钟域同步模块
作用:将FIFO判空模块生成的格雷码地址打一拍的延迟,然后将该地址输出到写时钟域。

8.观察下面图示回答问题

notion image
  • 其中椭圆形图示表示逻辑延时
  • Td表示延时的值,如如Td=0.5ns表示这个逻辑延时0.5ns,
  • 所有的延时的单位均为ns
  • DFF的SETUP TIME为1ns
  • DFF的HOLD TIME为1ns
8.1这个电路最快的工作频率是多少
8.2如果时钟频率为20MHz(jitter为0.5ns)setup和hold的 slack是多少
notion image
notion image
 

class类的运行结果、类成员属性、父类子类

notion image

1. System Verilog 的 class

以下 SV 程序的运行结果为()
A. 00000000
B. 32’hFFFFFFFF
C. 00000001
D. X
答案:A
解析:new 函数中并没有把传入的 addr 值赋值给对象,所以不管 new 传入多少,都是打印的 bit [31:0] addr 的默认值,此处没有赋值,打印 0;
做如下修改:
(1)
操作后,addr 成功赋值给当前对象(this),打印 1;
(2)
function new(logic [31:0] addr =32'hFFFF_FFFF); addr= addr; $display("%0h", addr); endfunction
其他位置不变,则打印 1,然后打印 0。
(3)
bit[31:0] addr = 32'h00220000;
打印 220000;
(4)
t1.addr= 3; $display("t1.addr= %0h", t1.addr); t1.display_addr();
打印:
t1.addr= 3
3
notion image

2. System Verilog类成员

System Verilog 中类默认的成员属性是()
A. private
B. local
C. automatic
D. public
答案:D
解析:
类中的成员属性:const,local,protected,static等;
公有和私有:
public:公有的,默认为 public,子类和类外都可以访问;
local:仅对该类的对象可见,子类和类外不可见;
protcted:该类和子类可见,类外不可见;
静态和动态:
static:静态,被该类的所有实例共享;
dynamic,动态,默认;
SystemVerilog 中不允许静态方法读取静态变量
notion image

3. 父类子类

类中通过()关键字访问父类的成员
A. super
B. virtual
C. parent
D. this
答案:A
解析:
由于子类不能继承父类的构造方法,因此,要调用父类的构造方法,必须在子类的构造方法体的第一行使用 super() 方法,该方法会调用父类相应的构造方法来完成子类对象的初始化工作。
A:super,子类访问父类的成员,调用父类的构造方法;
B:virtual,虚函数;
C:parent,指向父类的指针,使用 parent 调用父类的构造函数进行父类的初始化;
D:this,自己用;
notion image
以下关于验证的描述,正确的是()
A.验证平台使用checker检测DUT的行为,只有知道DUT的输入输出信号变化之后,才能根据这些信号变化来判定DUT的行为是否正确;
B.System Verilog区别于verilog的一个重要特征是其具有面向对象语言的特性:封装、继承和多态;
C.UVM是Synopsys、Cadence、Mentor等EDA厂商联合发布的验证平台;
D.Verilog,System Verilog,System C, UVM都是验证常用的硬件语言;
答案:B
解析:
A. monitor 负责监测 DUT 的行为,checker 缓存每个 monitor 收集到的数据,和参考模型的输出去比较;
B. System Verilog 有 C++ 高级语言特性,面向对象编程OOP(Object Oriented Programming),封装、继承、多态
C. 通用验证方法学(Universal Verification Methodology, UVM)是一个以System Verilog类库为主体的验证平台开发框架,是一种方法学,不是一个EDA验证平台工具;
D. UVM不是一种语言,是一种验证方法学;
notion image
 

太初笔试题

notion image
 
notion image
 
notion image
 
 
  1. 下列关于代码覆盖率描述错误的是: 答案:AB
notion image
2.代码覆盖率、条件覆盖率和状态机覆盖率均达到 100%,可以认为设计没有问题。 A:正确 B:错误   答案:B
解析: 覆盖率2个大方面:代码覆盖率,功能覆盖率。
代码覆盖率包括: (1)语句覆盖率 (2)条件覆盖率; (3)分支覆盖率; (4)状态机覆盖率; 代码覆盖率100%不代表功能没问题。   (1)功能覆盖率高但是代码覆盖率低 分析未覆盖到的代码,推断仿真是否有遗漏的功能点,代码是否为冗余或不 可达代码; (2)功能覆盖率低但是代码覆盖率高 仿真用例没有关注到一些功能点,需要修改测试用例。
 
  代码覆盖率: 白盒覆盖率,一般仿真工具都有这个统计功能。代码覆盖率达到 100% 不代表设计没有问题。
(1)分支覆盖率 针对 if…else、case 等分支语句,看代码中设计的分支是否都被测试到了。 针对 if(条件1),只要条件 1 取 true 和 false 都执行过,则这个分支就完全覆盖了。
(2)语句覆盖率 语句覆盖率上不去时,可以查看未覆盖处的代码是测试用例的疏忽、冗余代码或是保护用途的代码,比如case的default;
(3)翻转覆盖率 包括两态翻转(0/1)和三态翻转(0/1/Z),常用的是两态翻转。对于单比特信号而言,若仿真用例使得该信号从0到1和从1到0的翻转均发生,则认为这里的翻转覆盖率是全面的(100%)。 即使翻转覆盖率达到 100%,分支覆盖率和语句覆盖率也不一定达到 100%。
(4)条件覆盖率与表达式覆盖率 条件覆盖率可以看作是对分支覆盖率的补充。每一个分支条件表达式中,所有条件的覆盖。 比如: if(a&& b) statement1; else statement2; 测试用例:a=1,b = 1 和 a = 0,b = 1 分支覆盖率100%,两个分支都覆盖了,但是条件覆盖率不是100%,有判断条件没有被测试到。   (5)状态机覆盖率 如下状态机实现代码中,需要分析其 FSM 覆盖率的分支有哪几个? A. curr_st 为 1,next_st 为 2; B. curr_st 为 2,next_st 为 3; C. curr_st 为 3,next_st 为 0; D. curr_st 为 0,next_st 为 1;   答案:ABD 解析: A.curr_st 为 1,next_st 为 2,有这种跳转,对; B.curr_st 为 2,next_st 为 3,有这种跳转,对; C.curr_st 为 3,next_st 为 0,没有这种跳转,错; D. curr_st 为 0,next_st 为 1,有这种跳转,对;
notion image
功能覆盖率 又称黑盒测试覆盖率,只关心功能,不关心具体的代码是如何实现的。如果想要统计功能覆盖率,需要在 SystemVerilog 编写的测试用例中添加覆盖组,仿真器基于它来统计功能覆盖率。
分为覆盖点(coverage points)和断言(arrertion)。
 
 
 
 
数字IC笔试题(7)--UVM验证平台【System Verilog面向对象】【OOP封装继承多态】
以下关于验证的描述,正确的是() A.验证平台使用checker检测DUT的行为,只有知道DUT的输入输出信号变化之后,才能根据这些信号变化来判定DUT的行为是否正确; B.System Verilog区别于verilog的一个重要特征是其具有面向对象语言的特性:封装、继承和多态; C.UVM是Synopsys、Cadence、Mentor等EDA厂商联合发布的验证平台; D.Verilog,System Verilog,System C, UVM都是验证常用的硬件语言; 答案:B 解析: A. monitor 负责监测 DUT 的行为,checker 缓存每个 monitor 收集到的数据,和参考模型的输出去比较; B. System Verilog 有 C++ 高级语言特性,面向对象编程 OOP(Object Oriented Programming),封装、继承、多态 ; C. 通用验证方法学(Universal Verification Methodology, UVM)是一个以System Verilog类库为主体的验证平台开发框架,是一种 方法学 ,不是一个EDA验证平台工具; D. UVM不是一种语言,是一种验证方法学; 数字IC笔试题(6)--C语言有符号数和无符号数【原码、反码、补码】【格式转换】 什么是clock jitter 和 clock skew?CTS 时钟树综合对 uncertainty 的影响? FPGA中亚稳态【Tsu建立时间】【Th保持时间】【Tmet决断时间】【recovery恢复时间】【removal移除时间】
数字IC笔试题(7)--UVM验证平台【System Verilog面向对象】【OOP封装继承多态】
 
数字IC笔试题(7)--UVM验证平台【System Verilog面向对象】【OOP封装继承多态】
以下关于验证的描述,正确的是() A.验证平台使用checker检测DUT的行为,只有知道DUT的输入输出信号变化之后,才能根据这些信号变化来判定DUT的行为是否正确; B.System Verilog区别于verilog的一个重要特征是其具有面向对象语言的特性:封装、继承和多态; C.UVM是Synopsys、Cadence、Mentor等EDA厂商联合发布的验证平台; D.Verilog,System Verilog,System C, UVM都是验证常用的硬件语言; 答案:B 解析: A. monitor 负责监测 DUT 的行为,checker 缓存每个 monitor 收集到的数据,和参考模型的输出去比较; B. System Verilog 有 C++ 高级语言特性,面向对象编程 OOP(Object Oriented Programming),封装、继承、多态 ; C. 通用验证方法学(Universal Verification Methodology, UVM)是一个以System Verilog类库为主体的验证平台开发框架,是一种 方法学 ,不是一个EDA验证平台工具; D. UVM不是一种语言,是一种验证方法学; 数字IC笔试题(6)--C语言有符号数和无符号数【原码、反码、补码】【格式转换】 什么是clock jitter 和 clock skew?CTS 时钟树综合对 uncertainty 的影响? FPGA中亚稳态【Tsu建立时间】【Th保持时间】【Tmet决断时间】【recovery恢复时间】【removal移除时间】
数字IC笔试题(7)--UVM验证平台【System Verilog面向对象】【OOP封装继承多态】
2020年vivo数字IC设计/芯片设计笔试题解析(1)_DengFengLai123的博客-CSDN博客_数字ic笔试题
单选1~17题,给出答案和分析。 PDF版可在【FPGA探索者】公众号回复【 vivo笔试1 】获取。 2023届FPGA/PGA/数字IC实习秋招群:676475325 1. 十进制数-1 , 用4位二进制表示的原码、补码、反码分别是() A. 1001B0111B1110B B. 1111B0111B1000B C. 1111B1110B1000B D. 1001B1111B1110B 答案:D 解析: 有符号数表示, 正数的原码、反码、补码一样,重点是负数采用补码表示。 (1)4位二进制表示负数,最高位是符号位,负数的最高位是1,非负数的的最高位为0; (2)还剩三位表示数据大小,3 bit的1是3'b001,考虑符号位4'b1001,负数要用补码表示,补码是反码+1; (3)反码:3'b110,考虑符号位为4'b1110; (4)补码:3'b110+3'b001 = 3'b111; (5)补码加上符号位:4'b1111; 重点: 原码取反得到反码时,是去掉符号位的其他位取反,最后再补上符号位 ; 2. 下面哪种不属于验证覆盖率 A. 状态覆盖率 B. 翻转覆盖率 C. 条件覆盖率 D. 循环覆盖率 答案:D 解析: 验证覆盖率: 代码覆盖率+功能覆盖率 代码覆盖率 有:语句(行)覆盖率、状态(状态机)覆盖率、翻转覆盖率、条件覆盖率、分支覆盖率等; 功能覆盖率 需要设置覆盖点、覆盖组等; 3.
2020年vivo数字IC设计/芯片设计笔试题解析(1)_DengFengLai123的博客-CSDN博客_数字ic笔试题
静态时序分析之建立时间setup time和保持时间hold time_长苏的博客-CSDN博客_setuptime和holdtime
1、概念: 建立时间(Tsu:setup time)      是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被稳定的打入触发器,Tsu就是指这个最小的稳定时间。 保持时间(Th:hold time)     是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被稳定的打入触发器,Th就是指这个最小的保持时间。 触发器延迟时间(Tco:CLK-to-Q dealy of FF)    触发器输出的响应时间,也就是触发器的输出在clk时钟上升沿到来之后多长的时间内发生变化,也即触发器的输出延时。 组合逻辑延迟时间(Tcb:Combinational logic delay)   两个触发器之间的组合逻辑延迟。 2、建立时间分析 在图1中,虚线箭头表示时序路径。数据信号必须在时钟边沿从触发器FF1时钟端到触发器FF2时钟端之前传播到触发器FF2的数据端,以此来可靠地锁存数据。 图2显示了此路径的时序。 时钟边沿到达FF1时会锁存输入到FF1.D的数据。在触发器的CLK-to-Q延迟之后将数据放在触发器输出FF1.Q上。 这称为时序路径的 launch event。 该信号以一定的延时,通过组合逻辑输出到触发器FF2的输入端FF2.D。 信号到达此处的时间称为路径的 arrival time。 FF2.D的值在时钟边沿到达FF2的时钟端之前变化,至少要在触发器的建立时间之前。 最小的允许到达时间称为路径 required time。 FF2的数据锁存称为时序路径的 capture event。 满足时序约束的时间裕量称为 slack 。 如果信号早于必要的时间到达,那么slack就是正的。 如果信号恰好在required time到达,则slack为零。 如果信号到达的时间晚于required time,那么slack就是负的。 在所有三种情况下,slack是required time减去arrival time。 总之,在第二个时钟上升沿到来之前,FF2.D数据线上的信号要满足稳定时间>触发器的建立时间Tsu(思考为什么是大于)。即 Tclk - Tco
静态时序分析之建立时间setup time和保持时间hold time_长苏的博客-CSDN博客_setuptime和holdtime
 
HR 面试问题秋招求职——图形推理
  • Twikoo
  • Waline
  • Giscus
  • Cusdis
  • Utterance
Conor
Conor
一个野生的技术宅
公告
type
status
date
slug
summary
tags
category
Property
Nov 25, 2023 06:32 AM
icon
password
属性
属性 1
描述
Origin
URL
🎉持续更新中🎉