MPS芯源2022数字IC

答案为个人整理,欢迎指正

1、Please code the divider by 3 with Verilog(50% duty cycle).用Verilog设计一个3分频器,要求50%占空比。

 module div(
    input clk         ,
    input rst_n       ,
    
    output clk_div3
 );

 parameter N = 3;

 reg    clk_p;
 reg [2:0] cnt_p;

 always@(posedge clk or negedge rst_n)begin
    if(!rst_n)
        cnt_p <= 'b0;
    else begin
        if(cnt_p == N - 1)
            cnt_p <= 'd0;
        else
            cnt_p <= cnt_p + 1'b1;
    end
 end

 always@(posedge clk or negedge rst_n)begin
    if(!rst_n)
        clk_p <= 'b0;
    else if((cnt_p == (N-1)/2) || (cnt_p == N - 1))
        clk_p <= ~clk_p;
 end

 reg       clk_n;
 reg [2:0] cnt_n;

 always@(negedge clk or negedge rst_n)begin
    if(!rst_n)
        cnt_n <= 'b0;
    else begin
        if(cnt_n == N - 1)
            cnt_n <= 'd0;
        else
            cnt_n <= cnt_n + 1'b1;
    end
 end

 always@(negedge clk or negedge rst_n)begin
    if(!rst_n)
        clk_n <= 'b0;
    else if((cnt_n == (N-1)/2) || (cnt_n == N - 1))
        clk_n <= ~clk_n;
 end

 assign clk_div3 = clk_n | clk_p;
 endmodul

2、Please describe the digital P&R flow.请简述数字后端P&R流程。

 数字IC笔试题-芯源 - 菜鸟芯片师 - 博客园前言 由于最近开始找数字IC的工作,所以准备多练笔试题,下面贴上芯源笔试题,来源微信公众号<数字IC打工人> 参考资源: 1. mu_guang_ 2. 李锐博恩 3. https://www.cnblogs.com/cutewei/p/15412757.html

后端设计流程:
  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实现异或。

 

4、What are recovery and removal times?请描述recovery时间和removal时间的概念。

撤销复位时,恢复到非复位状态的电平必须在时钟有效沿来临之前的一段时间到来,才能保证有效的恢复到非复位状态,此段时间为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的建立和保持时间要求(不考虑时钟延时)。

 T_{co} + T_{delay}<= T - T_{setup};

T_{co} +T_{delay}>= T_{hold};

解得:

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?异步信号如何进行同步?

方法:

单bit:从慢到快,采用两级触发器,减少可能出现的亚稳态影响;从快到慢,信号展宽

多bit:异步FIFO、DMUX、Dual RAM;握手协议,有效使能后,确认;

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。

 

//检测10010
module test(
    input  clk   ,
    input  rst_n ,
    input  din   ,
    output flag
);

parameter IDLE =4'd0;
parameter   S1 =4'd1;
parameter   S2 =4'd2;
parameter   S3 =4'd3;
parameter   S4 =4'd4;
parameter   S5 =4'd5;

reg [3:0] state,next_state;
always@(posedge clk or negedge rst_n)begin
    if(!rst_n)begin
        state <= IDLE;
    end
    else begin
        state <= next_state;
    end
end

always@(*)begin
    next_state = IDLE;
    case(state)
        IDLE:
            if(din)
                next_state = S1;
            else 
                next_state = IDLE;

          S1:
            if(din)
                next_state = S1;
            else 
                next_state = S2;

          S2:
            if(din)
                next_state = S1;
            else 
                next_state = S3;

          S3:
            if(din)
                next_state = S4;
            else 
                next_state = IDLE;

          S4:
            if(din)
                next_state = S1;
            else 
                next_state = S5;

          S5:
            if(din)
                next_state = S1;
            else 
                next_state = S3;

        default:next_state = IDLE;
    endcase
end

assign flag = (state == S5)?1'b1:1'b0;

endmodule

不会写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. 请对下图中的输入时钟和输入数据进行时序约束。

输入引脚时钟约束_Xilinx FPGA编程技巧之常用时序约束详解_夜魔残月的博客-CSDN博客大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。今天给大侠带来Xilinx FPGA编程技巧之常用时序约束详解,话不多说,上货。基本的约束方法为了保证成功的设计,所有路径的时序要求必须能够让执行工具获取。最普遍的三种路径以及异常路径为:输入路径(Input Path),使用输入...https://blog.csdn.net/weixin_33573857/article/details/112771595

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,如何去定位,且可能是什么问题?
后仿出现X态原因_enmouhuadou的博客-CSDN博客1、仿真pattern自身原因,比如程序使用了未初始化(写)的存储区,读出红X的数据并使用,导致红X传播;2、仿真环境或者平台原因,模型或者整chip顶层PIN脚的信号没有驱动,是高阻Z态,进入数字逻辑内部变成红X传播;3、DFF、gating cell等由于setup/hold不满足,或者rst信号的recovery/removal不满足,或者异步逻辑同步的第一拍DFF,产生红X引起传播;4、信号的电平宽度比这个cell的门延时还短的时候,信号经过这个cell后的输出是红X5、不带复位端的DFF引https://blog.csdn.net/m0_49540263/article/details/119777061

1、仿真pattern自身原因,比如程序使用了未初始化(写)的存储区,读出红X的数据并使用,导致红X传播;
2、仿真环境或者平台原因,模型或者整chip顶层PIN脚的信号没有驱动,是高阻Z态,进入数字逻辑内部变成红X传播;
3、DFF、gating cell等由于setup/hold不满足,或者rst信号的recovery/removal不满足,或者异步逻辑同步的第一拍DFF,产生红X引起传播;
4、信号的电平宽度比这个cell的门延时还短的时候,信号经过这个cell后的输出是红X
5、不带复位端的DFF引起X传播

X态也就是亚稳态,他是会传播的:亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进入亚稳态时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。在这个稳定期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。

14、Please describe the ECO flow(includingpre-mask ECO and post-mask ECO).请描述ECO流程,包括pre-mask和post-mask ECO。

ECO有两种,pre-mask ECO和post-mask ECO,它的分界线就是base later tape out之前和之后。pre-mask ECO的流程是

1)后端写出网表,给前端

2)前端修改这个网表(一般不再做综合),可以使用任何标准单元(只要不是dont_use),交给后端

3)后端读入ECO网表,和ECO之前的place和route

4)ECO place&route,STA, DRC/LVS

post-mask ECO流程,假设你不想动base layer

1)后端写出网表,给前端

2)前端修改这个网表(一般不再做综合),只能使用spare cell或者像gate array一样的ECO cell

3)后端读入ECO网表,和ECO之前的place 和route

4)如果使用spare cell,不用ECO place;如果用ECO cell,要将ECO cell放在以前带gate array功能的fill cell的位置上,再按照指定的layer做ECO route。

15、What are various techniques to resolverouting congestion?如何解决routing congestion问题?

1. Change the power strap metal to a higher layer so that it does not impact cell placement.
2. Change the location of the power strap routes to avoid the congested area.

提示:
1) routing congestion发生在后端,前端一般不太考虑这个问题,需要后端自己去想办法解决,但是解决的办法不只在后端,也有一些方法需要前端的配合
2) 阻塞有多种情形,要分别讨论,没有一个统一的解决办法。

答案:
1)阻塞在RAM(macro)之间:可能RAM之间的距离没有计算正确,可以加大RAM之间的间距;扭转RAM的方向,使得RAM的IO pin朝向更容易走线的那边;如果是多个RAM共用地址或者数据线,尽量把RAM的地址数据pin对齐

2)阻塞出现在RAM和帮助单元交界的地方:在RAM周围加一条halo(keepout);把RAM放在四周,尽量把中间留下的空间变成方形;在有阻塞的地方加一些由小的placement blockage组成的矩阵

3)阻塞出现在标准单元的某一块:也可以加一些由小的placement blockage组成的矩阵;module/instance padding;利用placement guide减少那块地方的标准单元个数;scan chain reordering也会改善一些阻塞;定义density上限;使用congestion driven的placement,并且要求place之后做congestion优化;在综合是禁止使用那些pin太多太密集的标准单元(多半是那些复 杂的组合逻辑单元);请前端使用RAM代替触发器矩阵;请前端修改算法

4)应该尽量减少power route占有的资源,谨慎选择power mesh使用的金属层,VIA的大小等。在detail route完成之后,你如果已经试了各种解决signal congestion的方法,还有少量DRC无法解决时,可以考虑切掉部分power mesh

16、Please describe the rtl with INV, AND, OR andDFF. 请用与、或、非门和寄存器画出代码所描述的电路。

always@(posedge clk 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.芯片的功耗分为哪种类型,请描述降低功耗的方式。
IC常用知识4-静态功耗和动态功耗_mu_guang_的博客-CSDN博客_静态功耗和动态功耗文章目录1. 简介2. 静态功耗3. 动态功耗3.1 开关功耗3.2 短路功耗4. 低功耗设计4.1 RTL级4.2 门级电路5. 相关题目:1. 简介CMOS电路功耗主要由动态功耗和静态功耗组成,动态功耗又分为开关功耗、短路功耗两部分2. 静态功耗静态功耗也称为待机功耗,包含有电路中晶体管的漏电流所导致的功耗3. 动态功耗3.1 开关功耗动态功耗包括:开关功耗或称为反转功耗、短路功耗或者称为内部功耗;开关功耗:电路在开关过程中对输出节点的负载电容充放电所消耗的功耗。比如对于下面的CMOS非https://blog.csdn.net/mu_guang_/article/details/115719673

CMOS电路功耗主要由动态功耗和静态功耗组成,动态功耗又分为开关功耗、短路功耗两部分.

RTL级
1.并行结构:并行结构一定程度可以减低某一区域的频率,从而可能降低功耗。
2.流水结构:“路径长度缩短为原始路径长度的1 /M。这样,一个时钟周期内充/放电电容变为C/M。如果在加入流水线之后,时钟速度不变,则在一个周期内,只需要对C/M进行充/放电,而不是原来对C进行充/放电。因此,在相同的速度要求下,可以采用较低的电源电压来驱动系统。”
3.优化编码:通过数据编码来降低开关活动,例如用格雷码取代二进制。
4.操作数隔离:“操作数隔离的原理就是:如果在某一段时间内,数据通路的输出是无用的,则将它的输入置成个固定值,这样,数据通路部分没有翻转,功耗就会降低。”

4.2 门级电路
1.门控时钟技术: 芯片工作时,很大一部分功耗是由于时钟网络的翻转消耗的,控技术基本原理就是通过关闭芯片上暂时用不到的功能和它的时钟,从而实现节省电流消耗的目的,门控时钟对翻转功耗和内部功耗的抑制作用最强,是低功耗设计中的一种最有效的方法。
2.多电压供电
3.多阈值电压
根据多阈值电压单元的特点,为了满足时序的要求,关键路径中使用低阈值电压的单元(low Vt cells),以减少单元门的延迟,改善路径的时序。而为了减少静态功耗,在非关键路径中使用高阈值电压的单元(high Vt cells),以降低静态功耗。因此,使用多阈值电压的工艺库,我们可以设计出低静态功耗和高性能的设计。
4.动态电压调节
5.动态频率调节

18、Two modules share one single port ram,please design an Arbiter with following requirements (按要求编写代码):

a)Module A has high priority;

b)Basic ram signal: clk, rst_n, wren, addr [7:0], wdata [7:0], rdata [7:0];

c)Ram read access latency is 2 Tclk;

​​​​​​​先放着

19、Implement below RTL logic with DFF andNOR/NAND/INV cells(按要求编写代码):

always@(posedge clk or negedge rst_n) begin

    if(!rst_n)

        C<=1'b0;

    else if (B)

        C<=~A;

    else;

end

 门控时钟(Clock-gating) - 哔哩哔哩门控时钟(Clock-gating):是数字电路设计中常用于低功耗设计的一种设计,数字电路中的功耗可以分为动态功耗和静态功耗两部分,现在的数字集成电路基本都采用CMOS结构,静态功耗几乎很小,主要的功耗来源于动态功耗的消耗,从电路层面来说就是数据的不停翻转,从MOS管层面来看就是由于电平的翻转引起的电容充放电的变化,进而导致动态功耗的增加;在电路正常工作的时候,不可避免的是要产生一定的功耗,但是在电路不工作时候,由于一些电平翻转导致的功耗就是无用的,比如:数字电路中的时钟作为整个电路的驱https://www.bilibili.com/read/cv9288590/

芯片设计进阶之路——门控时钟 - 知乎https://zhuanlan.zhihu.com/p/139363948

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值