【数字设计】澜起科技_笔试题目分享

本文详细介绍了ASIC设计流程,从需求分析到产品发布,涵盖FIFO深度计算、时钟域处理等关键环节。同时,讨论了DFF与LATCH的区别,阐述了产生Latch的原因及避免方法,并解析了无毛刺时钟转换电路、跨时钟域传输、静态时序分析和FIFO深度计算。内容深入浅出,适合数字IC设计与验证学习者参考。
摘要由CSDN通过智能技术生成
芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球
四社区联合力荐!近500篇数字IC精品文章收录
【数字IC精品文章收录】学习路线·基础知识·总线·脚本语言·芯片求职·EDA工具·低功耗设计Verilog·STA·设计·验证·FPGA·架构·AMBA·书籍

在这里插入图片描述

笔试

澜起科技的笔试涵盖内容较为常见,笔试题目包括FIFO的深度计算,跨时钟域的处理,DFF和LATCH的区别,STA静态时序分析等常见内容,具体题目如下
1.ASIC的设计流程

ASIC(Application-Specific Integrated Circuit)是专门为特定应用而设计的定制集成电路。ASIC 设计流程是从概念到最终产品的一系列步骤,通常包括以下阶段:

  1. 需求分析:明确 ASIC 的设计目标和需求,了解客户的需求和应用场景,制定设计规格。
  2. 架构设计:根据需求分析结果,确定 ASIC 的整体架构,包括功能模块、接口和数据通路等。
  3. RTL 设计:使用硬件描述语言(例如 Verilog 或 VHDL)编写 Register-Transfer Level(RTL)级别的设计代码,描述 ASIC 的逻辑功能和时序行为。
  4. 验证:对 RTL 设计进行功能验证和时序验证,确保设计符合规格要求,使用仿真工具和验证平台进行验证。
  5. 综合:将 RTL 设计转换为门级网表,通过逻辑综合工具生成综合后的设计。
  6. 物理设计:包括布局设计和布线设计。布局设计将门级网表映射到实际的芯片布局,布线设计将逻辑门之间的连线进行布线。
  7. 时序分析:对物理设计后的电路进行时序分析,确保设计满足时序约束和时序要求。
  8. DRC/LVS/ERC 验证:进行设计规则检查(DRC)、版图与源代码匹配检查(LVS)和电气规则检查(ERC),确保物理设计满足制造和可靠性要求。
  9. 版图生成:生成 GDSII 或其他格式的版图文件,用于芯片的制造。
  10. 芯片制造:使用版图文件制造 ASIC 芯片。
  11. 芯片测试:对制造好的芯片进行测试,确保芯片的功能和性能符合设计规格。
  12. 产品发布:将测试通过的芯片投入量产,并向客户发布产品。

2.DFF和LATCH的区别

DFF(D触发器)和 LATCH(锁存器)是数字逻辑电路中常用的存储元件,用于在时钟信号的控制下存储和传输数据。它们之间有以下区别:

  1. 时钟边沿触发:
  • DFF:D触发器是时钟边沿触发的,通常为上升沿或下降沿触发。只有在时钟信号的边沿到来时,输入数据(D输入)才会被传输到输出(Q输出)。
  • LATCH:锁存器是电平触发的,即只要使能信号(通常称为使能端或时钟使能端)为高电平,输入数据(数据输入端)就会立即传输到输出端(输出端)。
  1. 数据传输时刻:
  • DFF:数据在时钟边沿传输。例如,上升沿触发的 DFF 在上升沿时传输数据。
  • LATCH:数据在使能信号为高电平时传输。只要使能信号为高,输入数据就会被传输到输出。
  1. 时钟周期:
  • DFF:D触发器需要一个完整的时钟周期来完成数据传输,因为数据只在时钟边沿传输。
  • LATCH:锁存器的数据传输是即时的,只要使能信号为高,数据就会立即传输。
  1. 时钟控制:
  • DFF:时钟信号是唯一控制数据传输的信号。
  • LATCH:除了使能信号,锁存器通常还有其他控制信号,如清零(reset)信号或置位(set)信号。

总体而言,DFF 和 LATCH 都可以用来存储数据,但它们的触发方式和时钟控制不同。在大多数时序设计中,DFF 更为常见,因为它们可以提供更可靠的时钟同步和数据传输控制。LATCH 则更适合一些特定的应用场景,例如对输入信号响应时间要求较高的情况。

3.产生latch的原因,避免latch的方法

产生 Latch 的原因通常是由于在组合逻辑电路中存在非全时序赋值(Non-blocking assignments)或未完全覆盖所有可能的输入组合。当组合逻辑电路中的信号在某些输入组合下没有被赋值,就会导致 Latch 的产生。Latch 的存在可能会导致设计中的冗余逻辑、时序故障以及功耗等问题。
避免 Latch 的方法包括:

  1. 完全覆盖输入组合:在设计组合逻辑时,确保所有输入组合都有相应的赋值,这样可以防止 Latch 的产生。
  2. 使用 Sensitivity List:在使用 always 块描述组合逻辑时,使用敏感性列表(Sensitivity List)明确指定所依赖的输入信号。确保 always 块中的代码只在指定的输入信号发生变化时进行计算,避免未知的信号组合导致 Latch。
  3. 使用时钟触发器:在时序逻辑设计中,使用时钟触发器(例如 D 触发器)来存储状态,而不是使用锁存器。时钟触发器在时钟边沿进行状态转换,提供更可靠的时序行为,避免 Latch 的问题。
  4. 使用 Case 语句:在组合逻辑中使用 Case 语句,确保对所有可能的输入组合进行明确的处理。
  5. 好的设计实践:遵循良好的设计实践,如避免逻辑冗余、合理分割模块等,有助于减少 Latch 的产生。

综上所述,避免 Latch 的关键是在设计阶段充分考虑所有可能的输入组合,并使用时钟触发器等可靠的时序元件来实现逻辑功能,确保设计具有良好的时序行为和稳定性。

4.无毛刺时钟转换电路

【数字IC手撕代码】Verilog无毛刺时钟切换电路|题目|原理|设计|仿真

5.单bit 多bit跨时钟域的方法

6.写出gray code的生成方法和0-12位的8421码和格雷码,同时解释9位深的异步FIFO能否使用格雷码及其原因

【数字IC手撕代码】Verilog 2^N的格雷码二进制转换|题目|原理|设计|仿真

0-12 位的 8421 码和格雷码:
8421码:0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100
格雷码:0000, 0001, 0011, 0010, 0110, 0111, 0101, 0100, 1100, 1101, 1111, 1110, 1010

不能使用格雷码,因为尾首相接的时候不满足只有单bit变化

7.用verilog语言去描述一个DFF

module DFF(
  input clk,      // 时钟输入
  input reset_n,  // 异步复位输入,低电平有效
  input d,        // 数据输入
  output reg q    // 数据输出
);

always @(posedge clk or negedge reset_n) begin
  if (!reset_n)
    q <= 1'b0;   // 异步复位时输出为 0
  else
    q <= d;      // 在时钟上升沿时,输出等于数据输入
end

endmodule

8.sta静态时序分析
在这里插入图片描述

9.FIFO的读写深度判断
9.1 异步FIFO,写40MHz,读50MHz,一次突发传输的长度是120,计算需要的数据深度

要计算异步 FIFO 需要的数据深度,首先要考虑写入和读取的时钟频率不同,以及一次突发传输的长度。
写入时钟频率为 40 MHz,读取时钟频率为 50 MHz,一次突发传输的长度为 120。
数据深度可以通过以下公式计算:
数据深度 = 突发传输长度 × 读取时钟周期 ÷ 写入时钟周期
其中,读取时钟周期 = 1 ÷ 读取时钟频率,写入时钟周期 = 1 ÷ 写入时钟频率。
将数据代入公式进行计算:
读取时钟周期 = 1 ÷ 50 MHz = 20 ns
写入时钟周期 = 1 ÷ 40 MHz = 25 ns
突发传输长度 = 120
数据深度 = 120 × 20 ns ÷ 25 ns ≈ 96
因此,为了满足一次 120 个数据的突发传输,并保证读写时钟之间不出现数据溢出或丢失,异步 FIFO 需要的数据深度为 96。

9.2 假如两个连续写的操作之间夹杂着一个idle clock,那么计算FIFO所需深度

120×40ns÷25ns=192

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张江打工人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值