前言
由于最近开始找数字IC的工作,所以准备多练笔试题,下面贴上芯源笔试题,来源微信公众号<数字IC打工人>
笔试题
1、Please code the divider by 3 with Verilog(50% duty cycle).用Verilog设计一个3分频器,要求50%占空比。
1 module div_clk ( 2 input wire clk, 3 input wire rst_n, 4 output wire div_clk 5 6 ); 7 8 parameter DIV = 3; 9 10 reg [31:0] pos_cnt; 11 wire pos_clk; 12 reg [31:0] neg_cnt; 13 wire neg_clk; 14 15 //上升沿分频 16 always@(posedge clk or negedge rst_n)begin 17 if(!rst_n)begin 18 pos_cnt <= 'd0; 19 end 20 else if(pos_cnt==DIV-1)begin 21 pos_cnt<= 'd0; 22 end 23 else begin 24 pos_cnt<= pos_cnt+1'd1; 25 end 26 27 end 28 29 assign pos_clk =(pos_cnt<DIV/2)? 0: 1; 30 //下降沿分频 31 always@(negedge clk or negedge rst_n)begin 32 if(!rst_n)begin 33 neg_cnt <= 'd0; 34 end 35 else if(neg_cnt==DIV-1)begin 36 neg_cnt<= 'd0; 37 end 38 else begin 39 neg_cnt<= neg_cnt+1'd1; 40 end 41 42 end 43 44 assign neg_clk =(neg_cnt<DIV/2)? 0: 1; 45 46 //奇偶判断后,输出分频时钟 47 48 assign div_clk = (DIV[0]==1)?(pos_clk&neg_clk) : pos_clk; 49 50 endmoduleDIV
2、Please describe the digital P&R flow.请简述数字后端P&R流程。
后端设计流程:
1、可测性设计——DFT
Design ForTest,可测性设计。芯片内部往往都自带测试电路,DFT的目的就是在设计的时候就考虑将来的测试。DFT的常见方法就是,在设计中插入扫描链,将非扫描单元(如寄存器)变为扫描单元。关于DFT,有些书上有详细介绍,对照图片就好理解一点。
DFT工具:Synopsys的DFT Compiler
2、布局规划(FloorPlan)
布局规划就是放置芯片的宏单元模块,在总体上确定各种功能电路的摆放位置,如IP模块,RAM,I/O引脚等等。布局规划能直接影响芯片最终的面积。
工具为Synopsys的Astro。
3、时钟树综合——CTS
Clock Tree Synthesis,时钟树综合,简单点说就是时钟的布线。
由于时钟信号在数字芯片的全局指挥作用,它的分布应该是对称式的连到各个寄存器单元,从而使时钟从同一个时钟源到达各个寄存器时,时钟延迟差异最小。这也是为什么时钟信号需要单独布线的原因。
CTS工具,Synopsys Physical Compiler。
4、布线(Place & Route)
这里的布线就是普通信号布线了,包括各种标准单元(基本逻辑门电路)之间的走线。比如我们平常听到的0.13um工艺,或者说90nm工艺,实际上就是这里金属布线可以达到的最小宽度,从微观上看就是MOS管的沟道长度。
工具Synopsys的Astro
5、寄生参数提取
由于导线本身存在的电阻,相邻导线之间的互感,耦合电容在芯片内部会产生信号噪声,串扰和反射。这些效应会产生信号完整性问题,导致信号电压波动和变化,如果严重就会导致信号失真错误。提取寄生参数进行再次的分析验证,分析信号完整性问题是非常重要的。
工具Synopsys的Star-RCXT
6、版图物理验证
对完成布线的物理版图进行功能和时序上的验证,验证项目很多,
如LVS(Layout Vs Schematic)验证,简单说,就是版图与逻辑综合后的门级电路图的对比验证;
DRC(Design Rule Checking):设计规则检查,检查连线间距,连线宽度等是否满足工艺要求;
ERC(Electrical Rule Checking):电气规则检查,检查短路和开路等电气规则违例;等等。
工具为Synopsys的Hercules
3、Please use a MUX and INV to implement aXOR.如何用一个2选一的MUX和一个INV实现异或。
verilog实现:
1 module xor_rill 2 ( 3 input a, 4 input b, 5 6 output z 7 ); 8 9 assign z = a?(~b):b; 10 11 endmodule
电路结构图如下:
4、What are recovery and removal times?请描述recovery时间和removal时间的概念。
恢复时间:Recovery time
撤销复位时,恢复到非复位状态的电平必须在时钟有效沿来临之前的一段时间到来,才能保证有效的恢复到非复位状态,此段时间为Recovery time。类似于同步时钟的setup time
如图所示,rst_n为0表示复位,clk上升沿触发,rst_n从0到1上升沿与时钟上升沿之间的时间差必须不小于Recovery time才能保证寄存器恢复到正常状态。
我的理解,恢复时间为,撤销复位时,到下一个有效时钟上升沿的时间,如上图。
去除时间:Removal time
复位时,在时钟沿来临之后复位信号还需要保持的时间是去除时间,类似于同步时钟的 hold time。
如图所示,rst_n为0表示复位,clk上升沿触发,rst_n保持为0经过clk上升沿后仍需要保持一段时间,才能保证寄存器有效复位。
5、The clock cycle is T, the clock toregister output delay is Tco, setup and hold time of a register are Tsetup andThold, what's the Tdelay constrain?时钟周期为T,时钟到寄存器输出延时Tco,寄存器建立时间Tsetup,寄存器保持时间Thold。请描述逻辑延时Tdelay的建立和保持时间要求(不考虑时钟延时)。
6、What's the difference between a LATCH anda DFF?请描述LATCH和DFF的概念和区别?
7、What's the difference between asynchronous and an asynchronous circuit?同步电路和异步电路的区别是什么?
同步电路:存储电路中所有触发器的时钟输入端都接同一个时钟脉冲源,因而所有触发器的状态的变化都与所加的时钟脉冲信号同步。
异步电路:电路中没有统一的时钟,有些触发器的时钟输入端与时钟脉冲源相连,只有这些触发器的状态与时钟同步,而其他的触发器状态变化不与时钟脉冲同步。
8、What is IR-drop, in which area will beeasy to have IR-drop problem ?什么是IR-drop,在那些地方容易出IR-drop问题?
IR压降是指出现在集成电路中电源和地网络上电压下降或升高的一种现象。
从电源布线的角度讲,那些远离电源端的地方,电源布线少的地方,容易出现ir-drop的问题。
从swtiching activity的角度讲,toggle rate高并且celldensiy高的地方IRdrop大,所以切记不要为了balance clock tree,把一堆clock buffer摆在一起。
9、How do you synchronize an asynchronousinput?异步信号如何进行同步?
方法:
1.采用两级触发器,减少可能出现的亚稳态影响;
2.异步FIFO和DPRAM;
3.握手协议,有效使能后,确认;
10、Please draw the state machine transmissiondiagram of the array detection 10010,code with Verilogand build the testbench and testcase to get 100% fsm coverage.画出可以检测10010序列的状态图,并用Verilog实现,搭建测试平台并写出可以达到100%状态机覆盖率的testcase。
11、What are gate-level simulations? You havea device that can be programmed via an 12C interface. What type of tests do yourecommend to run for gate level only?什么是门级仿真(后仿)?如果你有一个设备通过12C接口配置,有哪些针对门级仿真的测试用例?
12、Please constrain the timing of clock andinput signal in the waveform, both are input pins for a chip. 请对下图中的输入时钟和输入数据进行时序约束。
13、There is an X present in my gate-levelsimulation due to a timing violation. How do you identify the source of it andthe type of violation? 如果在后仿中波形中出现了X,如何去定位,且可能是什么问题?
14、Please describe the ECO flow(includingpre-mask ECO and post-mask ECO).请描述ECO流程,包括pre-mask和post-mask ECO。
15、What are various techniques to resolverouting congestion?如何解决routing congestion问题?
16、Please describe the rtl with INV, AND, OR andDFF. 请用与、或、非门和寄存器画出代码所描述的电路。
always@(posedgeclk or negedge rst_n)
begin
if(!rst_n)
begin
cnt<= 2'd0;
end
else if(cnt_en)
begin
if(ina)
cnt <= cnt+2'd1;
end
else
begin
cnt <=2'd0;
end
end
17、What are the different sources of powerconsumption? Please describe different techniques used to reduce powerconsumption.芯片的功耗分为哪种类型,请描述降低功耗的方式。