展讯2015年校园招聘数字工程师试题(回忆版)

一 名词解释: DLL, AMBA ,STA,CRC(还有几个记不清了,因为别的不知道) 

DLL:延时锁相环

AMBA:高速微控置总线,

STA: 静态时序分析

CRC: 循环冗余校验

二 数字前端设计的基本流程以及主要工具:

前端设计的流程及使用的EDA工具如下:

1、架构的设计与验证:按照要求,对整体的设计划分模块。

   架构模型的仿真可以使用Synopsys公司的CoCentric软件,它是基于System C的仿真工具。

2、HDL设计输入:设计输入方法有:HDL语言(Verilog或VHDL)输入、电路图输入、状态转移图输入。

   使用的工具有:Active-HDL,而RTL分析检查工具有Synopsys的LEDA。

3、前仿真工具(功能仿真):初步验证设计是否满足规格要求。

   使用的工具有:Synopsys的VCS,Mentor的ModelSim,Cadence的Verilog-XL,Cadence的NC-Verilog。

4、逻辑综合:将HDL语言转换成门级网表Netlist。综合需要设定约束条件,就是你希望综合出来的电路在面积,时序等目标参数上达到的标准;逻辑综合需要指定基于的库,使用不同的综合库,在时序和面积上会有差异。逻辑综合之前的仿真为前仿真,之后的仿真为后仿真。

   使用的工具有:Synopsys的Design Compiler,Cadence的 PKS,Synplicity的Synplify等。

5、静态时序分析工具(STA):在时序上,检查电路的建立时间(Setuptime)和保持时间(Hold time)是否有违例(Violation)。

   使用的工具有:Synopsys的Prime Time。

6、形式验证工具:在功能上,对综合后的网表进行验证。常用的就是等价性检查(Equivalence Check)方法,以功能验证后的HDL设计为参考,对比综合后的网表功能,他们是否在功能上存在等价性。这样做是为了保证在逻辑综合过程中没有改变原先HDL描述的电路功能。

   使用的工具有:Synopsys的Formality

三,画出xz+y(~z)的cmos图,我似乎也没有做正确。


还要把这个图转换成cmos的实现。

四,静态时序分析与动态时序分析的区别和联系:

动态时序验证是在验证功能的同时验证时序,需要输入向量作为激励。随着规模增大,所需要的向量数量以指数增长,验证所需时间占到整个设计周期的50,且这种方法难以保证足够的覆盖率,因而对片上系统芯片设计已成为设计流程的瓶颈,所以必须有更有效的时序验证技术取代之。 
动态时序仿真的优点是比较精确,而且同静态时序相比较,它适用于更多的设计类型。 但是它也存在着比较明显的缺点: 首先是分析的速度比较慢; 
其次是它需要使用输入矢量,这使得它在分析的过程中有可能会遗漏一些关键路径(critical paths),因为输入矢量未必是对所有相关的路径都敏感的。 
静态时序分析技术是一种穷尽分析方法,用以衡量电路性能。它提取整个电路的所有时序路径,通过计算信号沿在路径上的延迟传播找出违背时序约束的错误,主要是检查建立时间和保持时间是否满足要求,而它们又分别通过对最大路径延迟和最小路径延迟的分析得到。静态时序分析的方法不依赖于激励,且可以穷尽所有路径,运行速度很快,占用内存很少。它完全克服了动态时序验证的缺陷,适合进行超大规模的片上系统电路的验证,可以节省多达20的设计时间。因此,静态时序分析器在功能和性能上满足了全片分析的目的。

五,建立时间和保持时间的概念。(这个很基础)它们与时钟频率以及输入电压的关系(这个不懂!!希望高手指点)

具体问题,如果建立(保持)时间发生违规,提高和较低频率有什么作用?提高降低输入电压有什么作用?

六,给出Verilog代码要求只用与、非、或门实现功能:(a是双输入的)

case(a) begin

2'd0: d<=b;

2'd1:d<=c;

2'd2:d<=1'b1;

2'd3: d<=b^c;

end


七:也是Verilog代码:主要考察同步复位,异步复位的实现,也要求只用与、非、或门和寄存器实现。

always @(posedge clk or negedge rst_n)

if(!rst_n) a<=1'b0;

else if(ena)

      a<=b;


always @(posedge clk )

if(!rst_n) a<=1'b0;

else if(ena)

      a<=b;


always @(ena or b or rst_n)

if(!rst_n) a<=1'b0;

else if(ena)

      a<=b;


八:只有一个8*8的乘法器如何实现16*16的无符号乘法,写出HDL(思路把乘法改成移位相加的形式,类似于我们实际笔算的乘法操作)

module test(clk,rst_n,x,y,z);
input clk,rst_n;
input[15:0] x,y;
output reg [31:0] z;
reg [31:0]z_r;
reg [2:0] num;
reg [7:0] r1,r2;
reg [15:0] temp;
//output z=x*y
always @ (posedge clk or negedge rst_n)
if(!rst_n) begin
 num<=3'd0;
 z<=32'd0;
end
else begin
num<=num+1'b1;
if(num==3'd5) begin
   z<={temp[15:0],16'd0}+z_r;
   num<=3'd0;
end
case(num)
  3'd0:begin
    r1<=x[7:0];
    r2<=y[7:0];
  end
 3'd1:begin
   temp<=r1*r2;
r2<=y[15:8];
 end
 3'd2:begin
   z_r<=temp;
   temp<=r1*r2;
r2<=y[7:0];
 end
 3'd3:begin
   z_r<={16'd0,temp[15:0]}+z_r;
   temp<=r1*r2;
r1<=x[15:8];
 end
 3'd4:begin
   z_r<={16'd0,temp[15:0]}+z_r;
   temp<=r1*r2;
 end
endcase
end
endmodule 

题目整体上不是特别难,但是好久不接触有些生疏了,希望造福下一届!!


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值