1.1 if A=4’b0011,B=3’b110 and C=4’b1110,then which one is the correct result for expression of {2{~^A}}^(B[1:0]&C[3:2]) ?
A. 00
B. 01
C. 10
D. 11
~^A = ~(0&0&1&1) = ~0 = 1;
{2{~^A}} = {2{1}} = 2’b11;
(B[1:0]&C[3:2]) = 2’b10 & 2’b11 = 2’b10;
{2{~^A}}^(B[1:0]&C[3:2]) = 2’b11 ^ 2’b10 = 2’b01.
1.2 Which statement is correct?
A. UVM test termination is using raise/drop uvm_object.
B. When we set the verbosity to UVM_LOW,the message with UVM_NONE cannot be issued.
C. If we set the configuration object in test layer,both subcomponents and sequences can retrieve its handle.
D. In SV language,It fails to cast a null pointer to an object. “$(abc,null);”
1.3 …全特么是验证的
1.7 Please select the 4-state unsigned integer types()
A. bit.
B. logic.
C. reg.
D. shortint.
Verilog-1995中规定的数据类型有:变量(reg), 线网(wire), 32位有符号数(integer), 64位无符号数(time), 浮点数(real)。
SV中:
.logic:可以作为一个四状态变量
bit: 双状态的无符号类型
byte: 8位双状态的有符号类型
shortint: 16位双状态的有符号类型
longint: 64位双状态的有符号类型
integer: 32位四状态的有符号整数
time: 64位四状态的无符号整数
real: 双状态的双精度浮点数
1.8 Choose the right descriptions of the different between latch and flip-flop listed below()
A. Flip-Flop saves area.
B. Latch can’t avoid glitch.
C. Flip-Flop is easier for timing closure.
D. Latch run slower than Flip-Flop.
Latch可以组成Flip-Flop;
Latch也可以避免毛刺,比如门控时钟。
1.9 Which of the following items can help reduce test time()
A. Increase Operation Voltage.
B. Increase scan shift clock frequency.
C. Utilize more scan IOs.
D. Insert gating logic.
1.11 Coverage is usually used to evaluate the verification quality, please identify all code coverage related items from following options.
A. Branch coverage.
B. Condition coverage.
C. Function coverage.
D. Toggle coverage.
E. State coverage.
F. Expression coverage.
G. FSM coverage.
1.12 Which type of timing path is NOT included in this picture?
A. Input port to a D pin of Flop.
B. CLK pin of One Flop to D pin next Flop.
C. Q pin of flop to an output port.
D. Input to output port through purely combinational logic.
典型的组合逻辑路径只有以下四种:
1.13 Which is the correct flow for Physical Design ?
A. Floorplan → Placement → CTS → Routing
B. CTS → Floorplan → Placement → Routing
C. Placement → Floorplan → CTS → Routing
D. CTS → Placement → Floorplan → Routing
The main steps in ASIC Physical design flow are:
1.14 “PVT corner” is a significant concept in physical design to characterize different working conditions of a chip -P stands for Process and V stands for voltage. What does T stand for ?
A. Time.
B. Temperature.
C. Thickness.
D. Threshold.
1.15 Which of the following metal layer has Maximum resistance?
A. Metal2.
B. Metal3.
C. Metal5.
D. Metal8.
1.16 which of the following files are necessary for timing analysis?
A. SPEF.
B. DEF.
C. SDC.
D. Netlist.
STA tool:
1.17 Which among the following methods are applicable to fix setup violation?
A. Swap high Vt cells into low Vt cells.
B. Increase driver size of long net.
C. Delaying the clock to the end point.
D. Decreasing the size of certain cells in the data path.
降低cell电压;
增加驱动;
延时时钟;
减小cell面积。
1.18 Which of the following timing arcs should a normal DFF have in stand cell library?
A. CK → D.
B. CK → Q.
C. D → Q.
D. CK → CDN.
1.19 Cell Delay can be calculated based on:()
A. input transition.
B. input load.
C. output transition.
D. output load.
input transition:输入数据的变换时间;
output transition: 上一级数据的变换时间;
input load:输入负载,负载越大input transition越小;
output load:输出负载。
1.20 太简单
1.21 7nm工艺中的7nm指的是()
A. 芯片中最小晶体管的源极长度.
B. 芯片中最小晶体管的源极宽度.
C. 芯片中最小单元的沟道长度.
D. 芯片中最小单元的源极宽度.
1.22 What is the layer that TCP worked on?
A. Network.
B. Data Link.
C. Transport.
D. Application. E. Session.
OSI七层模型:
1.23 有一个4位的D/A转换器,设他的满刻度输出电压位10V,当输入数字量为1101时,输出电压为()
A. 8.125V.
B. 4V.
C. 6.25V.
D. 9.375V.
1.24 Which of below pattern can detect the fault in below diagram?
A. A=1,B=1,C=0,D=0.
B. A=1,B=1,C=1,D=1.
C. A=0,B=0,C=1,D=1.
D. A=0,B=1,C=0,D=1.
1.25 In ARM AMBA AHB protocol,which of following responses is ONE cycle response?
A. OKAY.
B. ERROR.
C. RETRY.
D. SPLIT.
1.26 Assume A[3:0]=4’b0101,B[3:0]=4’b1111,which statement is correct()?
A. if C=&(A|B),then C=1’b0.
B. if C=(|A)&(|B),then C=1’b1.
C. if C=|(A&B),then C=1’b0.
D. if C=(&A)|(&B),then C=1’b0.
1.27 For a truth table like below,which kind of logic cell could it be?
input A | input B | output Z |
---|---|---|
1 | 1 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 1 |
A. OR.
B. NAND.
C. XOR.
D. NOR.
1.28 Choose the correct equation for power calculation()
A. Ptotal=Pstatic+Pdynamic.
B. Ptotal=Pleakage+Pinternal+Pswitching.
C. Ptotal=Pinternal+Pdynamic.
D. Ptotal=Pleakage+Pswitching.
1.29 We need to define clock specifications in SDC file,using commands like below:create_clock -name GFXCLK -period 600 -waveform {0 300}.What can we know from this command?
A. Clock frequency.
B. Clock duty cycle.
C. Clock source latency.
D. Clock name.
1.30 Which is the correct method to fix EM issue?
A. downsize victim driver.
B. double net width,double net spacing,chanfe route layer.
C. insert buffer in victim net.
D. add shield.
1.31 高频放大器工作频率越高,以下说法正确的是()
A. 增益和带宽都大.
B. 增益和带宽都小.
C. 增益变大,带宽变小.
D. 增益变小,带宽变大.
1.32 PCIE
1.33 Ubuntu的内核有哪几个子系统()
A. 进程管理系统.
B. 用户管理系统.
C. I/O管理系统.
D. 文件管理系统.
E. 内存管理系统.
F. 安全管理系统.
2.1 下列关于多bit数据跨时钟域的处理思路,错误的有()
A. 发送方给出数据,接收方用本地时钟同步两拍再使用.
B. 发送方把数据写到异步fifo,接收方从异步fifo里读出.
C. 对于连续变化的信号,发送方转为格雷码发送,接收方收到后再转为二进制.
D. 发送方给出数据,发送方给出握手请求,接收方收到后回复.
两级信号同步是处理单比特信号,而多比特数据可以用异步FIFO、格雷码、握手协议。
2.2 对12.918做无损定点化,需要的最小位宽是多少位,位宽选择11位时的量化误差是多少?
A. 12位,0.0118.
B. 13位,0.0039.
C. 12位,0.0039.
D. 13位,0.0118.
12用二进制表示需要4位,若小数用8位表示0.918/(2^(-8))=235.008,即235×2^(-8)=0.918,所以最少只要12位。当11位时,小数的位宽只有7,0.918/(2^(-7))=117.5040,117×2^(-7)=0.9141,0.918-0.9141=0.0039。
2.3 考虑如下的4×4的“二维仲裁器”,R00到R33为输入,G00到G33为输出,N和W也为输入,E和S也为输出,假设所有的逻辑门(包括非门/与门/反相器)延时都为1ns,请问该电路的最大延迟为:
A. 23ns.
B. 25ns.
C. 19ns.
D. 21ns.
2.4 下图所示4位右移位寄存器,0时刻ABCD初始状态为0111,请写出5个时刻后的ABCD输出:
A. 1010.
B. 0100.
C. 1101.
D. 1110.
Time A B C D NAND 0 0 1 1 1 0 1 0 0 1 1 0 2 0 0 0 1 1 3 1 0 0 0 0 4 0 0 0 0 0 5 0 1 1 0 0
2.5 关于流水线设计的理解,错误的是:
A. 流水线设计会消耗较多的组合逻辑资源.
B. 流水线设计会导致原有通路延时增加.
C. 流水线设计的思想,是使用面积换取速度.
D. 关键路径中插入流水线,能够提高系统时钟频率.
2.6 下列哪种逻辑门可以实现逻辑(A XOR B)OR (C AND D)?
A. NAND.
B. NOR.
C. XOR.
D. INV.
(A XOR B)OR (C AND D) = AB’ + A’B + CD
= ((AB’)’(A’B)’(CD)’)’
= ((A(BB)’)’((AA)’B)’(CD)’)’
2.7 关于DFT的描述错误的是:
A. DFT测试不能覆盖电路时序问题.
B. DFT测试过程通常会消耗大量的动态功耗.
C. DFT的主要目的是发现芯片生产过程中出现的缺陷.
D. 寄存器扫描链是一种常用的DFT技术.
DFT的at-speed test会采用芯片PLL高速时钟进行寄存器的setup和hold测试
2.8 下列那个工具不具备逻辑综合功能
A. Synplify.
B. Design Compiler.
C. Modelsim.
D. ISE.
2.9 对芯片静态功耗影响最大的是哪一项
A. 工作模式.
B. 频率.
C. 负载.
D. 电压.
Pstat = Istat × Vdd
2.10 组合逻辑中的冒险是由于()引起的
A. 电路中有多个输出.
B. 电路未达到最简.
C. 逻辑门类型不同.
D. 电路中的延时.
由于延时导致电平翻转不能同时进行
2.11 指令系统中程序控制类指令的功能是
A. 实现主存于CPU之间的数据传送.
B. 实现程序执行顺序的改变.
C. 实现算术和逻辑运算.
D. 时间堆栈操作.
程序控制类指令包括:
2.12 在对信号做降采样前添加滤波器,一般需要添加什么样的滤波器,完成什么功能?
A. 高通,抗周期延拓.
B. 高通,抗混叠滤波.
C. 低通,抗周期延拓.
D. 低通,抗混叠滤波.
为解决频率混叠,在对模拟信号进行离散化采集前,采用低通滤波滤除 高于1/2采样频率的频率成分。实际仪器设计中,这个低通滤波器的截止频率(fc)为:截止频率(fc)=采样频率(fz)/2.56,在进行动态信号测试中测量仪器必须具有抗混叠滤波功能。
2.13 假设一个cycle只能完成一个8bits×8bits或一个17bits+17bits+17bits操作,那么设计16bits×16bits乘法最少可以多少个cycle完成?
A. 2.
B. 4.
C. 3.
D. 1.
两个16位相乘(A×B),等于同时有两个“两个8位相乘”,消耗一个cycle;
A的低八位乘B的低八位产生一个16位的数,类似的,一共产生4个16位的数,这四个16位的数交错相加;
最低八位不变,最高八位不变,次高位三个八位数相加,次低位三个八位数相加,又消耗两个cycle。
2.14 如下关于“线与”逻辑的描述,错误的是:
A. 可以使用OC门来实现“线与”.
B. “线与”逻辑必须在输出端加一个下拉电阻.
C. “线与”逻辑是两个输出信号相连可以实现“与”的功能.
D. 可以用OD门来实现“线与”.
OD:开漏,是对MOS管而言;
OC:集电极开路,是对双极性管而言。
两者实现线与需外加上拉电阻。
2.15 关于异步处理,以下说法正确的是:
A. 静态配置信号可以不做异步处理.
B. 异步FIFO采用格雷码的原因是为了提高电路速度.
C. 异步处理需要考虑发送和接收时钟之间的频率关系.
D. 单比特信号打两拍之后可以避免亚稳态的发生.
2.16 关于16点的FFT描述正确的是:
A. 每个蝶形算法需要一次复数加法.
B. 每级有8个蝶形算法.
C. 每个蝶形算法需要一次复数乘法.
D. 共有4级分解.
完成一个蝶形运算需要一次复数乘法和两次复数加法。
2.17 在不增加pipeline的情况下,如何解决一条critical path的setup时序不满足的问题
A. 使用更先进工艺的工艺库.
B. 在这条path上插入寄存器.
C. 将部分组合逻辑电路搬移到前级path上.
D. 降低时钟频率.
2.18 下列关于代码覆盖率描述错误的是:
A. 代码覆盖率达到百分之一百说明代码bug已消除.
B. 代码覆盖率包括功能覆盖率.
C. 代码覆盖率包括条件覆盖率.
D. 代码覆盖率包括语句覆盖率.
覆盖率是衡量设计验证完成程度的指标,并不是验证的目的。任何覆盖率达到100%并不代表芯片bug已消除。 代码覆盖率包括:
2.19 C语言中定义了一个全局数组,编译后此数组可能分配在下列哪个阶段?
A. Text段.
B. Bss段.
C. Data段.
D. Stack段.
BSS存放的是未初始化的全局变量;
DATA存放的是初始化的全局变量。
2.20 下列优化方法中那些是速度优化方法:
A. 资源共享.
B. 关键路径优化.
C. 流水线.
D. 串行化.
2.21 对于PSK和QAM调制,以下哪些说法是正确的?
A. 对于QAM调制,星座图的每个点的幅度相等.
B. 2PSK和4PSK在归一化条件下,其幅值都是1.
C. 4-QAM调制与QSPK的调制方式一致.
D. 在同样信道条件下,16-QAM的误码率大于4-QAM.
PSK调制,星座图中的点都位于单位圆上,模相同(都为1),只有相位不同。而QAM调制星座图中的点不再位于单位圆上,而是分布在复平面的一定范围内,各点如果模相同,则相位必不相同,如果相位相同则模必不相同。
2.22 wirte-back cache和write-through cache的区别:(write-back)cache只在cache line被替代的时候把cache里的有效数据写下一级存储。
write-through(直写模式)在数据更新时,同时写入缓存cache和后端存储。此模式的优点是操作简单,缺点是因为数据修改需要同时写入存储,数据写入速度较慢。
write-back(回写模式)在数据更新时写入缓存cache只在数据被替换出缓存时,被修改的缓存数据才会被写到后端存储。此模式的优点是数据写入速度快,因为不需要写存储;缺点是已更新后的数据未被写入存储时出现系统掉电的情况,数据将无法找回。
2.23 正则表达式里可以使用计数符和通用字符集进行搜索匹配,这些计数符中,(*)号的意思是匹配0个,1个或多个,(+)号的意思是匹配一个或多个,(?)的意思是匹配0个或1个。
2.24 FPGA时序检查中对于异步复位电路的时序分析分别叫(恢复时间检查)和(移除时间检查)。
recovery time:恢复时间。
撤销复位时,恢复到解复位状态的电平必须在时钟有效沿来临之前的一段时间到来,才能保证时钟能有效恢复到解复位状态,此段时间为recovery time。类似于同步时钟的setup time。
如下图,rst_n为1’b0表示复位,clk上升沿触发,rst_n从1’b0到1’b1的上升沿与时钟上升沿必须不小于recovery time才能保证寄存器恢复到正常状态。
removal time:移除时间。
复位时,在时钟有效沿来临之后复位信号还需要保持的时间为移除时间removal time。类似同步时钟hold time。 如下图,rst_n为1’b0表示复位有效,clk为上升沿触发,rst_n保持为1’b0经过clk上升沿后仍需保持一段时间,才能保证寄存器有效复位,放置亚稳态。
2.25 并行计算是提高程序速度的关键,设a为并行计算部分所占比例,n为并行处理的节点数,则并行计算带来的加速比为(1 /(a/n + 1 - a))。
S = (Ws + Wp)/(Ws + Wp/p),Ws为程序中串行部分,Wp为程序中的并行部分,p为并行节点数。
2.26 下图球框由三个相同的铁圈两两正相交组成,每个铁圈的电阻均为R。AB两点间的电阻为(5R/48)。
2.27 signal_a是clk_a(300M)时钟域的一个单时钟脉冲信号,如何将其同步到时钟域clk_b(100M)中,并产生出signal_b同步脉冲信号。请用verilog代码描述,并画出对应的时序波形说明图。
-
module
div_3_50(
-
input
clk,
-
input
rst_n,
-
-
input
in,
-
-
output
q,
-
output
out,
-
);
-
-
reg
q1,q2;
-
reg
[1:0] count1,count2;
-
-
reg
in_p,in_pp,in_ppp;
-
-
wire
out_b;
-
-
reg
out_bb,out_bbb;
-
-
assign
q=q1|q2;
-
-
always_ff@(posedge
clk , negedge rst_n)begin
-
if(!rst_n)
begin
-
q1
<= '0;
-
count1
< ='0;
-
end
-
else
if(count1==0) begin
-
q1
<= ~q1;
-
count1
<= count1 + 1;
-
end
-
else
if(count1==1) begin
-
q1 =
~q1;
-
count1
<= count1 + 1;
-
end
-
else
begin
-
count1
<= '0;
-
end
-
end
-
-
always_ff@(negedge
clk , negedge rst_n)begin
-
if(!rst_n)
begin
-
q2
<= '0;
-
count2
< ='0;
-
end
-
else
if(count2==0) begin
-
q2
<= ~q2;
-
count2
<= count2 + 1;
-
end
-
else
if(count2==1) begin
-
q2 =
~q2;
-
count2
<= count2 + 1;
-
end
-
else
begin
-
count2
<= '0;
-
end
-
end
-
-
always_ff@(posedge
clk , negedge rst_n)begin
-
if(!rst_n)
begin
-
in_p
<= '0;
-
in_pp
<= '0;
-
in_ppp
<= '0;
-
end
-
else
begin
-
in_p
<= in;
-
in_pp
<= in_p;
-
in_ppp
<= in_pp;
-
end
-
end
-
-
assign
out_b = in_ppp|in_pp|in_p;
-
-
always_ff@(posege
clk , negedge rst_n)begin
-
if(!rst_n)
begin
-
out_bb
<= '0;
-
out_bbb
<= '0;
-
end
-
else
begin
-
out_bb
<= out_b;
-
out_bbb
<= out_bb;
-
end
-
end
-
-
assign
out = out_bbb;
-
-
endmodule
-
select this verilog
2.28 如下图,一个高速接口的端口电路示意图,要求D端发送数字0/1。D/Q端收到相同的数字0/1。VREF电压为比较器数字输出0/1的判决电压。
(1)S1断开时,DQ端VREF电压需设置为?
(2)S1连通时,DQ端VREF电压需设置为?
(3)驱动端发送0时功耗比较低,这句话正确吗?为什么?
(1)S1断开时,若D为1,Q端电压为VDDQ,因此VREF要小于VDDQ。若D为0,Q端电压为0,因此VREF要大于0,因此0
(2)S1连通时,若D为1,Q端电压为VDDQ/3。若D为0,Q端电压为0,因此VREF要大于0,因此0 (3)驱动端为0时,NMOS管道通,反相器输出接地,电阻没有电流,因此功耗较低。
2.29 用Moore型状态机实现序列“1101”从右至左的不重叠检测。
(1)请画出状态转换图,其中状态用S0,S1,S2…表示。
(2)针对这个具体设计如何衡量验证的完备性?
(1):
(2):可以从定向测试,随机测试两种方式中产生激励,从代码覆盖率的角度保证代码覆盖率达100%。
2.30 进行一个运算单元的电路设计,A[7:0]*11111011,尽量用最少的资源实现,写出对应的RTL代码。
-
module
mul(
-
input
[7:0] A,
-
output
[15:0] B
-
);
-
-
wire
[15:0] reg1;
-
wire
[15:0] reg2;
-
wire
[15:0] reg3;
-
-
assign
reg1 = { A, {8{1'b0}}};
-
assign
reg2 = { {6{1'b0}} , A ,{2{1'b0}}};
-
assign
reg3 = { {8{1'b0}} , A};
-
-
assign
B = reg1 - reg2 - reg3;
-
-
endmodule
select this verilog
2.31 用C语言实现整数到ASCII码字符串的转换
额。。。。我尼玛
3.1 请解释D触发器和Latch的区别,解释同步复位和异步复位的区别及优缺点。
一、
3.2 解释什么叫clock gating?并说明一下通常情况下为什么要做clock gating?简单列举通常实现的方法有哪些?
门控时钟计数(clock gating)是一种非常简单和有效的功耗控制方法,它的基本原理就是通过关闭芯片上暂时用不到的功能和它的时钟,从而实现节省电流消耗的目的。
clk信号和clk_enable相与。
时钟门控(Clock-Gating)一直以来都是降低微处理器功耗的重要手段,主要针对寄存器翻转带来的动态功耗。如何更加有效地设计时钟门控对于最大限度地降低功耗,同时保证处理器的性能至关重要。多核多线程微处理器中,多个功能部件可能不是同时工作的,对于无执行任务的功能部件就可以将其时钟关闭,减少其随时钟翻转进行多余的内部寄存器翻转,从而降低产生功耗的浪费和热量聚集。
3.3 实现一个可以1-8分频任意切换的分频器,要求无论是奇数分频还是偶数分频,分频后的时钟的duty cycle都是50%。
占空比模块:
-
module
Duty_Cycle#(
-
parameter
HIGH_TIME =
1,
//高电平时间
-
LOW_TIME =
2,
//低电平时间
-
BIT_WIDTH =
2
//位宽
-
)(
-
input clk,
//时钟
-
input rst_n,
//异步复位
-
-
output reg clk_out
//输出
-
);
-
-
reg [
BIT_WIDTH-
1:
0]
count;
//计数器
-
-
always_ff @(posedge clk, negedge rst_n) begin
-
if(!rst_n) begin
-
count <= '
0;
-
end
-
else
if(
count <
HIGH_TIME) begin
-
count <=
count +
1;
-
clk_out <= '
1;
-
end
-
else
if((
count <
HIGH_TIME+
LOW_TIME-
1) && (
count >=
HIGH_TIME))begin
-
clk_out <= '
0;
-
count <=
count +
1;
-
end
-
else
if(
count >=
HIGH_TIME+
LOW_TIME-
1)begin
-
clk_out <= '
0;
-
count <= '
0;
-
end
-
else begin
-
clk_out <= clk_out;
-
count <=
count;
-
end
-
end
-
-
endmodule
select this verilog
分频模块:
-
module
Frequency_Divider#(
-
parameter
DIV_COEFF = 3, //分频系数
-
BIT_WIDTH =
2 //分频系数位宽
-
)(
-
input
clk, //时钟
-
input
rst_n, //复位
-
-
output
clk_out //分频时钟
-
);
-
-
//=
=====================================================
-
//奇偶判断,0为偶
-
-
wire
odd_even;
-
wire
[BIT_WIDTH-1:0] div_coeff;
-
-
assign
div_coeff = DIV_COEFF;
-
assign
odd_even = div_coeff[0];
-
-
//=
=====================================================
-
//计算高低占空比时间
-
-
parameter
HIGH_TIME = DIV_COEFF/2;
-
parameter
LOW_TIME = DIV_COEFF-HIGH_TIME;
-
-
//=
=====================================================
-
//根据奇偶分频分配时钟
-
reg
clk_p,clk_n;
-
-
always_comb
begin
-
if(odd_even)begin
-
clk_p =
clk;
-
clk_n =
~clk;
-
end
-
else
begin
-
clk_p =
clk;
-
clk_n =
clk;
-
end
-
-
end
-
-
-
wire
clk_out_p,clk_out_n;
-
-
Duty_Cycle#(
-
.HIGH_TIME
(HIGH_TIME),
-
.LOW_TIME
(LOW_TIME),
-
.BIT_WIDTH
(BIT_WIDTH)
-
)u1_Duty_Cycle(
-
.clk
(clk_p),
-
.rst_n
(rst_n),
-
-
.clk_out
(clk_out_p)
-
);
-
-
-
Duty_Cycle#(
-
.HIGH_TIME
(HIGH_TIME),
-
.LOW_TIME
(LOW_TIME),
-
.BIT_WIDTH
(BIT_WIDTH)
-
)u2_Duty_Cycle(
-
.clk
(clk_n),
-
.rst_n
(rst_n),
-
-
.clk_out
(clk_out_n)
-
);
-
-
assign
clk_out = clk_out_p | clk_out_n;
-
-
-
endmodule
select this verilog
3.4 请画一个状态机(状态转换图)来检测串行比特流中的‘10011’。
3.5 现有三个输入信号分别是a,b,c,并且前级DFF Clock到a,b,c的延时分别是Ta,Tb,Tc(Ta>Tb>Tc),请用两个二输入选择器对a,b,c实现三输入选择输出,画电路图并解释设计思路,不需要考虑Clock Skew的影响。
3.6 请画出下列数字电路D触发器输出Q0,Q1的波形图(复位之后Q0,Q1均为0,画出复位后8个时钟周期)。
Q0 | Q1 | |
---|---|---|
RESET | 0 | 0 |
第一个CLK | 1 | 0 |
第二个CLK | 1 | 1 |
第三个CLK | 0 | 0 |
第四个CLK | 1 | 0 |
第五个CLK | 1 | 1 |
第六个CLK | 0 | 0 |
第七个CLK | 1 | 0 |
第八个CLK | 1 | 1 |
3.7 分析代码覆盖率时,verilog语句if(a||b&&c)有那几个条件需要覆盖?请用表格列出每种状况下a/b/c的值(a/b/c均为bit类型,如果是0或1都无所谓,请用“-”表示)。
a b c a||b&&c 1 - - 1 0 0 0 0 0 0 1 0 0 1 0 0 - 1 1 1 a为真或b&&c为真,结果为真;
a和b&&c都为假时,结果为假。
3.8 使用任意一种编程或脚本语言(C,Verilog,SystemVerilog,shell,perl,Python)实现32位十六进制转化为二进制数(如abcd0123->10101011110011010000000100100011)。
一、十六进制间的任意转换:
我主要的思路分两个步骤:
1、把x进制数转换成十进制数
2、再把该十进制数转换成我们需要得到的m进制数
二、代码(func.c、func.h、main.c)1、func.c
#include "func.h"
/*十进制转m进制*/
int decim(int n, int m, int buf[])
{
int s;
bzero(buf, sizeof(buf));
s=0;
while(n>=m){
buf[s++] = (n - (n/m)*m);
n /= m;
}
buf[s]=n;
return s+1;
}
/*m进制转十进制*/
int C_decim(char n[], int m)
{
int i,j,len,s,flag,num;
s=0;
flag=0;
len=strlen(n);
for(i=len-1; i>=0; i--){
num = 1;
for(j=0; j<flag; j++){
num *= m;
}
if((n[i] >= '0') && (n[i] <= '9')){
s += ((n[i]-'0')*num);
}else if((n[i] >= 'a') && (n[i] <= 'f')){
s += ((n[i]-'a'+10)*num);
}else if((n[i] >= 'A') && (n[i] <= 'F')){
s += ((n[i]-'A'+10)*num);
}
flag++;
}
return s;
}
char str1[16]={'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
char str2[16]={'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
/*判断数据的正确与否*/
int judge(int x, int m, char n[])
{
int i,len;
if(x<2 || m<2 || x>16 ||m>16){
return -1;
}
len=strlen(n);
for(i=0; i<len; i++){
if(m > 9){
if('0' > n[i] || n[i] > ('a'+m-10) || (n[i] > '9' && n[i] < 'A') || \
(n[i] > ('A'+m-10)&&(n[i] < 'a'))){
return -1;
}
}else{
if('0' > n[i] || ('0'+m) <= n[i] ){
return -1;
}
}
}
return 0;
}
2、func.h
#include
#include
/*十进制转m进制*/
int decim(int , int , int *);
/*m进制转十进制*/
int C_decim(char * , int );
int judge(int , int , char *);
3、main.c
#include "func.h"
char str[16]={'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
int main(void)
{
int i ,temp ,k ,x ,m ,buf[64];
char n[64];
while(1){
bzero(n, sizeof(n));
printf("\n十六进制间的任意转换(USAGE:x n m)\nx:输入的为几进制数;n:输入的数;m:将要转换成几进制数\n>>>>>>输入小于2的数退出<<<<<<\n");
scanf("%d", &x);
if(x < 2){
return 0;
}
scanf("%s", n);
scanf("%d", &m);
/*判断输入数据的正确与否*/
if(-1 == judge(x, m, n)){
printf("input error!\n");
continue;
}
/*转换成十进制*/
temp=C_decim(n, x);
/*转换成需要的进制*/
k=decim(temp, m, buf);
printf("%d进制数%s转换成%d进制数的结果: ", x, n, m);
for(i=k-1; i>=0; i--){
printf("%c", str[buf[i]]);
}
printf("\n\n");
}
return 0;
}
3.9 使用C或Verilog/SystemVerilog,定义并实现一个函数,传递三个int类型参数A,B,C,函数返回后,A的值不变,B的值变为A+B,C的值变为A-C,请写出函数原型定义与函数体的实现。
-
module A;
-
-
int A;
-
int B;
-
int C;
-
-
initial begin
-
A=
1;
-
B=
2;
-
C=
3;
-
-
$display(
"%d,%d,%d",A,B,C);
-
#1;
-
-
func1(A,B,C);
-
-
$display(
"%d,%d,%d",A,B,C);
-
end
-
-
function automatic viod func1(
ref
int A,
ref
int B,
ref
int C);
-
A=A;
-
B=A+B;
-
C=A-C;
-
endfunction
-
endmodule
select this verilog
3.10 请列出下述模块与中断先关的所有功能测试点。
CPU通过APB接口读写寄存器,interrupt为中断输出信号。模块内有如下寄存器,每个bit对应一种中断源,当某个中断enable位配置为1时,内部逻辑被允许对中断status位进行置位操作;当任意一位status被置位1,且其mask位为0时,则interrupt输出为高电平。CPU通过APB将status位写1清0。如果所有status位都被清0后,interrupt输出低电平。
中断使能寄存器reg_int_enable[7:0];
中断屏蔽寄存器reg_init_mask[7:0]; 中断状态寄存器reg_int_status[7:0](所有位都是W1C,即“写1清0”)。
4.1 ASIC流程,说出5个以上环节;Verilog说出5个以上keyword。
4.2 用一个mux和一个反相器实现xor,画电路或Verilog代码实现。
A B XOR 0 0 0 0 1 1 1 0 1 1 1 0
verilog实现:
-
module
xor_rill
-
(
-
input
a,
-
input
b,
-
-
output
z
-
);
-
-
assign
z = a?(~b):b;
-
-
endmodule
4.3 如下图所示:clk到Q的输出延时为T1min T1max + T2max + Tsetup < T; 4.4 如下图所示:根据A的波形,画出B,C的波形,寄存器是同步清零的。 4.5 十进制的12.8125用二进制的数表示,十六进制的A8D6用八进制的数表示。 12 = 1100; 4.6 SV比Verilog强在哪里?OVM、UVM、VMM是什么? SV支持面向对象的编程,支持断言的语法,支持更多的数据类型。 VMM:Verification Methodology Manual,由ARM和Synopsys提出的,寄存器解决方案RAL机制; 4.7 用Python或Perl写程序,在xxx.log中找到fail单词。 用。。。 4.8 int b = 100;int *a; a=&b有什么意义?a=b有什么意义? a=&b定义指针变量a,变量指向整形数据b的地址,printf(“%d”,a)结果为100; 4.9 4.10 CPU cache miss/hit 区别 CPU要访问的数据在Cache中有缓存,称为“命中”(Hit),反之则称为“缺失”(Miss)。 4.11 110序列选择器,画出状态图,写出Verilog代码 select this verilog 4.12 某夜,A、B、C、D四人要过桥,该桥每次只能通行2个人,只有一个手电筒,过桥必须持有手电筒,A、B、C、D四人单独过桥的时间分别为1分钟、2分钟、5分钟和10分钟。现要求四人最短时间完成过桥,不能折返,请问该如何操作? AB先过去,A返回,CD再过去,B返回,AB再走一遍:2+1+10+2+2=17min。 5.1 SV里四值变量有哪些? 5.2 SV里面动态数组、关联数组、队列各自的优缺点,应用场合。 5.3 function和task的区别 5.4 数据的类型转换怎么做?静态强制类型转换绝动态强制类型转换有什么区别? 5.5 virtual interface的作用 5.6 多态 验证的好多。。。 5.14 fork join,fork join_any,fork join_none的用法 5.15 阻塞赋值和非阻塞赋值的区别。 5.16 Callback机制的运行机理 Callback机制,其实是使用OOP来实现的一种程序开发者向程序使用者提供的模块内部的接口,可以在Test_case的高度改变其他Component的一些行为。 对于程序的开发者而言: 5.17 clock模块为什么要放在top module中,不放在program中的原因? SV介绍program的一个重要部分就是为了将涉及和验证的调度区域通过显式的方式来安排,例如设计部分被建议放置在module中,而测试采样部分被建议放置在program中,program中不能使用always,program中的仿真时间与RTL中的是有区别的,SV将同一仿真时刻分为四个区域,相当于在原verilog的基础上又为program增加了一个执行区间,一个采样区间,所以clk的定义不能放在program中。当program中的initial结束时,SV会调用$finish完成仿真。 5.18 谈谈对block level,chip level,product level验证的理解? 5.19 让用sv来验证一块memory的读写1G空间的过程 对地址空间分区间平均分成多份,对每份地址采取固定地址读写和随机读写两种策略:连续写,连续读,读紧跟着写;同时注意边界地址的读写操作。 5.20 UVM架构 5.21 请画出时钟的门控电路,要求是在使能信号无效时将时钟输出门控到高(低)电平,门控过程中请注意不产生毛刺。 5.22 请用ROM实现以下Verilog代码对应的功能: select this verilog ROM查找表: 5.23 设计一个时序电路,输入是2个8bit的无符号数,输出是这两个数的最小公倍数。要求电路面积尽可能的小。请使用Verilog语言实现。 select this verilog select this verilog 或者我写的: select this verilog select this verilog 6.1 常用逻辑电平 低速:RS232、RS485、RS422、TTL、CMOS、LVTTL、LVCMOS、ECL、LVPECL等; 6.2 可编程逻辑器件 ROM、PLA、FPLA、PAL、GAL、EPLD、FPGA、CPLD等 6.3 基尔霍夫定律 KCL:电路中的任意节点,任意时刻流入该节点的电流等于流出该节点的电流; 6.4 描述反馈电路的概念,列举他们的应用 反馈是将放大器输出信号(电压或电流)的一部分或全部,回收到放大器输入端与输入信号进行比较(相加或相减),并用比较所得的有效输入信号去控制输出,负反馈可以用来稳定输出信号或者增益,也可以扩展通频带,特别适合于自动控制系统。正反馈可以形成振荡,适合振荡电路和波形发生电路。 6.5 负反馈种类及其优点 电压并联反馈,电流串联反馈,电压串联反馈和电流并联反馈。 降低放大器的增益灵敏度,改变输入电阻和输出电阻,改善放大器的线性和非线性失真,有效地扩展,放大器的通频带,自动调节作用。 6.6 放大电路的频率补偿的目的是什么,有哪些方法 频率补偿:是为了改变频率特性,减小时钟和相位差,使输入输出频率同步。 相位补偿:通常是改善稳定裕度,相位补偿与频率补偿的目标有时是矛盾的。 不同的电路或者说不同的元器件对不同频率的放大倍数是不相同的,如果输入信号不是单一频率,就会造成 高频放大的倍数大,低频放大的倍数小,结果输出的波形就产生了失真。 放大电路中频率补偿的目的:一是改善放大电路的高频特性,二是克服由于引入负反馈而可能出现自激振荡现象,使放大器能够稳定工作。 在放大电路中,由于晶体管结电容的存在常常会使放大电路频率响应的高频段不理想,为了解决这一问题,常用的方法就是在电路中引入负反馈。然后,负反馈的引入又引入了新的问题,那就是负反馈电路会出现自激振荡现象,所以为了使放大电路能够正常稳定工作,必须对放大电路进行频率补偿。 频率补偿的方法可以分为超前补偿和滞后补偿,主要是通过接入一些阻容元件来改变放大电路的开环增益在高频段的相频特性,目前使用最多的就是锁相环。 6.7 有源滤波器和无源滤波器的区别 无源滤波器:这种电路主要有无源元件 R、L 和 C 组成; 有源滤波器:集成运放和 R、C 组成,具有不用电感、体积小、重量轻等优点。集成运放的开环电压增益和输入阻抗均很高,输出电阻小,构成有源滤波电路后还具有一定的电压放大和缓冲作用。但集成运放带宽有限,所以目前的有源滤波电路的工作频率难以做得很高。 6.8 什么是频率响应,怎么才算是稳定的频率响应,简述改变频率响应曲线的几个方法 这里仅对放大电路的频率响应进行说明。在放大电路中,由于电抗元件(如电容、电感线圈等)及晶体管极间电容的存在,当输入信号的频率过低或过高时,放大电路的放大倍数的数值均会降低,而且还将产生相位超前或之后现象。也就是说,放大电路的放大倍数(或者称为增益)和输入信号频率是一种函数关系,我们就把这种函数关系称为放大电路的频率响应或频率特性。 放大电路的频率响应可以用幅频特性曲线和相频特性曲线来描述,如果一个放大电路的幅频特性曲线是一条平行于x轴的直线(或在关心的频率范围内平行于x轴),而相频特性曲线是一条通过原点的直线(或在关心的频率范围是条通过原点的直线),那么该频率响应就是稳定的。 改变频率响应的方法主要有: 6.9 DAC和ADC的实现各有哪些方法? 实现DAC转换的方法有: 实现ADC转换的方法有: 6.10 A/D电路组成、工作原理 A/D 电路由取样、量化和编码三部分组成。 由于模拟信号在时间上是连续信 号而数字信号在时间上是离散信号,因此A/D转换的第一步就是要按照奈奎斯 特采样定律对模拟信号进行采样。又由于数字信号在数值上也是不连续的,也就是说数字信号的取值只有有限个数值,因此需要对采样后的数据尽量量化,使其 量化到有效电平上,编码就是对量化后的数值进行多进制到二进制二进制的转换。 6.11 为什么一个标准的倒相器中P管的宽长比要比N管的宽长比大? 和载流子有关,P管是空穴导电,N管电子导电,电子的迁移率大于空穴,同样的电场下,N管的电流大于P管,因此要增大P管的宽长比,使之对称,这样才能使得两者上升时间下降时间相等、高低电平的噪声容限一样、充电和放电是时间相等。 6.12 锁相环有哪几部分组成? 锁相环路是一种反馈控制电路,简称锁相环(PLL)锁相环的特点是:利用外部输入的参考信号控制环路内部振荡信号的频率和相位。因锁相环可以实现输出信号频率对输入信号频率的自动跟踪,所以锁相环通常用于闭环跟踪电路。 锁相环在工作的过程中,当输出信号的频率与输入信号的频率相等时,输出电压与输入电压保持固定的相位差值,即输出电压与输入电压的相位被锁住,这就是锁相环名称的由来锁相环通常由鉴相器(PD)、环路滤波器(LF)和压控振荡器(VCO)三部 分组成。 锁相环中的鉴相器又称为相位比较器,它的作用是检测输入信号和输出信号的相位差,并将检测出的相位差信号转换成电压信号输出,该信号经低通滤波器滤波后形成压控振荡器的控制电压,对振荡器输出信号的频率实施控制。 告辞。
所以:Tsetup < T-T1max-T2max;
T1min + T2min > Tholdup。
0.1825 × 4 = 3.25,表示:11.01,所以0.8125=0.1101;
所以,12.8125 = 1100.1101。
A8D6 = 1010100011010110 = 124326。
OVM:Open Verification Methodology,Mentor和Cadence共同提出,引进了factory机制;
UVM:Universal Verification Methodology,通用验证方法学,Accellera提出的,继承了VMM和OVM的优点,克服了二者的缺点,代表了验证方法学的主流,并得到了三大EDA厂商Cadence、Synopsys和Mentor Graphics的支持。
a=b表示指针变量a的值为100,a表示一个地址为100的数据。
当运算器需要从存储器中提取数据时,它首先在最高级的Cache中寻找然后在次高级的Cache中寻找。如果在Cache中找到,则称为命中hit;反之则称为不命中hit。
5 平头哥
function
task
函数能调用另一个函数,但不能调用另一个任务
任务能调用另一个任务,也能调用另一个函数
函数总是在仿真0时刻就开始执行
任务可以在非零仿真时刻执行
函数一定不能包含任何延迟、事件或时序控制声明语句
任务可以包含延迟、事件或时序控制声明语句
函数至少有一个输入变量,函数可以有多个输入变量
任务可以没有或者有多个输入、输出和双向变量
函数只能返回一个值,函数不能有输出或者双向变量
任务不返回任何值,任务可以通过输出或者双向变量传递多个值
a
b
D
Q
0
0
0
1
0
0
1
0
0
1
0
1
0
1
1
0
1
0
0
1
1
0
1
0
1
1
0
0
1
1
1
0
6 其它
高速:LVDS、GTL、PGTL、CML、HSTL、SSTL等。
KVL:在任何一个闭合回路中,各元件上的电压降的代数和等于电动势的代数和。