📘

美芯晟

 

美芯晟笔试题

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
module SeqDetecter_1101(

input clk,

input rst_n,

input FSM_1101_in, //一位输入

output reg

Match_Flag        //1101检测成功标志信号

);

reg [2:0] next_state; //下一拍执行状态

reg [2:0] state; //当前拍未执行最新状态

parameter//一共五个状态,使用Gray码提高翻转效率

IDEL = 3'b000,

NUM_1xxx = 3'b001,

NUM_11xx = 3'b011,

NUM_110x = 3'b010,

NUM_1101 = 3'b110;

//第一段 下一状态更新

always@( posedge clk or negedge rst_n ) begin

if( !rst_n )

next_state <= IDEL;

else

next_state <= state;

end

//第二段 状态判断跳转

always@(*) begin

case(next_state)

IDEL: begin

if( FSM_1101_in == 1'b1 )

state <= NUM_1xxx;

else

state <= IDEL;

end

NUM_1xxx:begin

if( FSM_1101_in == 1'b1 )

state <= NUM_11xx;

else

state <= IDEL;

end

NUM_11xx:begin

if( FSM_1101_in == 1'b0 )

state <= NUM_110x;

else

state <= NUM_11xx;

end

NUM_110x:begin

if( FSM_1101_in == 1'b1 )

state <= NUM_1101;

else

state <= IDEL;

end

NUM_1101:begin

if( FSM_1101_in == 1'b1 )

state <= NUM_11xx;

else

state <= IDEL;

end

default:state <= IDEL;

endcase

end

//第三段 标志信号输出

always@( posedge clk or negedge rst_n ) begin

if( !rst_n )

Match_Flag <= 0;

else if( next_state == NUM_1101 )

Match_Flag <= 1'b1;

else

Match_Flag <= 1'b0;

end

endmodule
  1. 画一下异步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