打印
[产品应用]

MPS芯源2022数字IC

[复制链接]
173|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
t60yz|  楼主 | 2023-2-24 23:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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


使用特权

评论回复
评论
t60yz 2023-2-24 23:18 回复TA
———————————————— 版权声明:本文为CSDN博主「狗哥天下第一」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_44072819/article/details/124087011 
沙发
t60yz|  楼主 | 2023-2-24 23:18 | 只看该作者
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

使用特权

评论回复
板凳
t60yz|  楼主 | 2023-2-24 23:19 | 只看该作者
后端设计流程:
  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

使用特权

评论回复
地板
t60yz|  楼主 | 2023-2-24 23:19 | 只看该作者
Please use a MUX and INV to implement aXOR.如何用一个2选一的MUX和一个INV实现异或。

使用特权

评论回复
5
t60yz|  楼主 | 2023-2-24 23:20 | 只看该作者
What are recovery and removal times?请描述recovery时间和removal时间的概念。

使用特权

评论回复
6
t60yz|  楼主 | 2023-2-24 23:20 | 只看该作者
撤销复位时,恢复到非复位状态的电平必须在时钟有效沿来临之前的一段时间到来,才能保证有效的恢复到非复位状态,此段时间为Recovery time。类似于同步时钟的setup time



如图所示,rst_n为0表示复位,clk上升沿触发,rst_n从0到1上升沿与时钟上升沿之间的时间差必须不小于Recovery time才能保证寄存器恢复到正常状态。

我的理解,恢复时间为,撤销复位时,到下一个有效时钟上升沿的时间,如上图。

使用特权

评论回复
7
t60yz|  楼主 | 2023-2-24 23:20 | 只看该作者
去除时间:Removal time

复位时,在时钟沿来临之后复位信号还需要保持的时间是去除时间,类似于同步时钟的 hold time。



如图所示,rst_n为0表示复位,clk上升沿触发,rst_n保持为0经过clk上升沿后仍需要保持一段时间,才能保证寄存器有效复位。

使用特权

评论回复
8
t60yz|  楼主 | 2023-2-24 23:24 | 只看该作者
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的建立和保持时间要求(不考虑时钟延时)。





解得:

使用特权

评论回复
9
t60yz|  楼主 | 2023-2-24 23:24 | 只看该作者
6、What's the difference between a LATCH anda DFF?请描述LATCH和DFF的概念和区别?

使用特权

评论回复
10
t60yz|  楼主 | 2023-2-24 23:25 | 只看该作者
What's the difference between asynchronous and an asynchronous circuit?同步电路和异步电路的区别是什么?

同步电路:存储电路中所有触发器的时钟输入端都接同一个时钟脉冲源,因而所有触发器的状态的变化都与所加的时钟脉冲信号同步。

异步电路:电路中没有统一的时钟,有些触发器的时钟输入端与时钟脉冲源相连,只有这些触发器的状态与时钟同步,而其他的触发器状态变化不与时钟脉冲同步。

使用特权

评论回复
11
t60yz|  楼主 | 2023-2-24 23:26 | 只看该作者
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摆在一起。

使用特权

评论回复
12
t60yz|  楼主 | 2023-2-24 23:26 | 只看该作者
How do you synchronize an asynchronousinput?异步信号如何进行同步?

方法:

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

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

使用特权

评论回复
13
t60yz|  楼主 | 2023-2-24 23:26 | 只看该作者
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。

使用特权

评论回复
14
t60yz|  楼主 | 2023-2-24 23:26 | 只看该作者
//检测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

使用特权

评论回复
15
t60yz|  楼主 | 2023-2-24 23:26 | 只看该作者
不会写testcase

使用特权

评论回复
16
t60yz|  楼主 | 2023-2-24 23:27 | 只看该作者
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接口配置,有哪些针对门级仿真的测试用例?

不会

使用特权

评论回复
17
t60yz|  楼主 | 2023-2-24 23:29 | 只看该作者
Please constrain the timing of clock andinput signal in the waveform, both are input pins for a chip. 请对下图中的输入时钟和输入数据进行时序约束。


使用特权

评论回复
18
t60yz|  楼主 | 2023-2-24 23:29 | 只看该作者
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,如何去定位,且可能是什么问题?

使用特权

评论回复
19
t60yz|  楼主 | 2023-2-24 23:30 | 只看该作者
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态也就是亚稳态,他是会传播的:亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进入亚稳态时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。在这个稳定期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。

使用特权

评论回复
20
t60yz|  楼主 | 2023-2-24 23:30 | 只看该作者
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。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

107

主题

846

帖子

0

粉丝