FPGA与ASIC以及SOC设计的区别
✏️

FPGA与ASIC以及SOC设计的区别

Tags
基础知识
FPGA
IC设计
Published
July 31, 2024
Author
内容摘要
标签
是否记得
知道但不熟

FPGA设计流程

notion image

LUT

FPGA的核心存储单元在于LUT,目前大多采用SRAM工艺实现,其工作流程是:
  1. 在FPGA上电时,会使用一个配置文件(configuration file)对所有的LUT进行初始化。这个过程本质上是利用LUT RAM的写端口对其进行编程。
  1. 配置文件包含了每个LUT要实现的逻辑功能的真值表。它会将这些真值表预先写入LUT内部的SRAM单元。
  1. 具体来说,配置文件会将每个输入组合对应的输出结果,写入到SRAM单元的相应地址位置。每个SRAM单元存储1bit,对应一个输入组合的输出值。
  1. 一旦完成配置,LUT的SRAM单元就成为一个只读的逻辑查找表。在电路工作时,输入信号的组合会作为地址,从SRAM中读取预先写入的逻辑结果并输出。
  1. 在某些FPGA中,LUT还可以被直接用作RAM。此时会有额外的输入端口用于写数据和写使能,与用于读取的地址端口共享。

IOB(可编程输入/输出单元)

就是板载IO接口,并且FPGA中的IO接口被划分为若干组bank,每一个bank都必须使用相同的电压标准。

数字时钟管理模块

你的开发板有没有DCM?在verilog设计中有没有用到?
我无法确定安路的开发板里DCM存不存在或者它具体指的是什么,我只知道安路的开发板里时钟资源如下:
  • 针对高速I/O接口设计的2路IOCLK
  • 16路全局时钟
  • 支持4个PLLs用于频率综合
  • 5路时钟输出
  • 分频系数1到128
  • 支持5路时钟输出级联
  • 动态相位选择
可以认为,DCM描述的是一个时钟整体,它指代了开发板上的各种时钟控制模块。在实际开发中,我通常使用的PLL锁相环是一个软核IP,也就是需要我手动调试verilog代码并综合到目标电路中,例如,修改时钟输出频率与相移等。进而引发新的思考,如何在不使用IP核的情况下进行时钟分频?

嵌入式RAM(BRAM)

你的开发板中BRAM有多大?
安路开发板板载1Mbits的BRAM,大概是0.128M(兆),板载8M的SDRAM。
zynq开发板板载4.9Mbits的BRAM,大概是0.6125M(兆),板载1G的SDRAM。
BRAM在开发过程中可以被配置成双扣RAM等,那如果只用verilog如何实现

嵌入式IP单元

什么是硬核和软核?

硬核IP(Hard IP)是已经经过物理设计和验证的IP模块,通常以特定工艺节点的版图形式提供。它们的设计已经固定,不能轻易修改,具有高性能和高可靠性,适合对性能和可靠性要求较高的应用,如处理器核心、存储器接口和高速通信接口等。硬核IP可以直接集成到芯片设计中,减少了设计和验证的时间。
软核IP(Soft IP)是以源代码(如Verilog或VHDL)或综合后的网表形式提供的IP模块。它们可以根据不同的设计需求进行修改和优化,适应不同的工艺节点和设计要求,提供了更大的设计灵活性和可移植性。软核IP常用于需要灵活设计和定制的应用,如嵌入式处理器、DSP核心和定制逻辑模块等。

ASIC设计流程

notion image

最首要的问题,ASIC设计工程师与FPGA工程师的区别在哪

ASIC设计工程师要交付哪些东西?

  1. 设计文档
  • 详细的设计文档,包括芯片架构、功能描述、模块设计、时序分析、功耗分析、形式验证等内容。
  • 这些文档需要清晰、完整、准确地描述芯片的设计过程和结果,为后续的芯片制造、测试和应用提供指导。
  1. RTL代码
  • 用Verilog或VHDL等硬件描述语言编写的RTL代码,是芯片设计的核心。
  • RTL代码需要经过严格的语法和功能验证,确保其能够正确地实现芯片的功能。
  1. 网表
  • 网表是描述芯片互连关系的文本文件,是逻辑综合和物理设计的基础。
  • 网表需要经过格式检查和逻辑验证,确保其能够正确地反映RTL代码的设计意图。
FPGA设计工程中也会产生网表文件
FPGA设计工程中也会产生网表文件
  1. GDSII流文件
  • GDSII流文件是芯片物理设计的最终成果,用于制造芯片的光罩。
  • GDSII流文件需要符合制造工艺的要求,并经过严格的检查和验证,确保其能够正确地制造出芯片。
  • 我感觉GDSII文件和bitstreams文件有着相似之处,他们都是由RTL设计完成后综合产生的文件,用来描述电路的某种物理布局结构,最大的区别在于,bitstreams文件产生后可以立马下载进FPGA中进行运行,但GDSII文件还需要经过物理设计、制造、测试等多个阶段才能产生最终实际的芯片。

ASIC设计工程师和DFT工程师是什么关系

DFT设计工程师主要负责生成可测性设计,报错scan、mbist等,产生测试向量,协助后端工程师完成时序收敛。这些虽然也可以用verilog实现,但一般都有专用的DFT工具,例如synopsys的DFT工具。从网上找了一些工具的使用流程,方便认识一下这些DFT工具怎么用的:

Synopsys DFT Compiler使用示例

使用Synopsys DFT Compiler进行DFT插入和优化涉及多个步骤,包括准备设计环境、配置DFT选项、插入DFT结构、生成测试向量和验证。以下是一个详细的指南,帮助你逐步完成这些任务。

使用Synopsys DFT Compiler的步骤

  1. 准备设计环境
    1. 首先,确保你的设计环境中已经安装了Synopsys工具,并配置好相应的环境变量。例如:
      source /path/to/synopsys/setup.csh
  1. 读取设计网表
    1. 在启动Synopsys Design Compiler的命令行界面(dc_shell)后,读取综合后的设计网表:
      read_verilog design_netlist.v
  1. 定义DFT约束和配置
    1. 设置扫描链的配置和其他DFT选项:
      # 设置扫描链数量 set_scan_configuration -scan_chain_count 10 # 设置扫描链的最大长度 set_scan_configuration -max_length 500 # 设置插入DFT时的约束 set_dft_configuration -dft_enable scan
  1. 插入扫描链
    1. 插入扫描链结构:
      insert_dft
  1. 插入BIST结构
    1. 如果需要插入内建自测试(BIST)结构,可以进行如下设置:
      # 创建逻辑BIST create_bist -type logic -pattern_count 100 # 插入BIST insert_bist
  1. 插入边界扫描(Boundary Scan)
    1. 插入JTAG边界扫描结构:
      insert_boundary_scan
  1. 验证DFT结构
    1. 运行静态时序分析和功能验证,确保DFT结构不影响设计的正常功能和时序:
      check_dft check_timing
  1. 生成测试向量
    1. 生成用于制造测试的测试向量:
      generate_patterns -format STIL -output test_patterns.stil
  1. 故障模拟和覆盖率分析
    1. 运行故障模拟,分析测试向量的覆盖率:
      run_fault_simulation -report coverage_report.txt
  1. 导出插入DFT后的网表
    1. 最后,导出包含DFT结构的设计网表:
      write_verilog design_with_dft.v

示例脚本

下面是一个完整的Tcl脚本示例,可以用来自动化上述过程:
# 设置环境变量和路径 source /path/to/synopsys/setup.csh # 读取设计网表 read_verilog design_netlist.v # 设置扫描链配置 set_scan_configuration -scan_chain_count 10 set_scan_configuration -max_length 500 set_dft_configuration -dft_enable scan # 插入扫描链 insert_dft # 插入BIST create_bist -type logic -pattern_count 100 insert_bist # 插入边界扫描 insert_boundary_scan # 验证DFT结构 check_dft check_timing # 生成测试向量 generate_patterns -format STIL -output test_patterns.stil # 运行故障模拟和覆盖率分析 run_fault_simulation -report coverage_report.txt # 导出插入DFT后的网表 write_verilog design_with_dft.v

注意事项

  • 设计准备:确保设计在插入DFT结构之前已经过详细验证,避免引入新的问题。
  • 工具版本:不同版本的Synopsys工具可能有不同的命令和选项,请参考相应版本的用户手册。
  • 测试验证:在实际生产中,生成的测试向量需要在实际测试设备上验证,确保测试方案的有效性。
通过上述步骤和示例脚本,可以有效地使用Synopsys DFT Compiler进行可测试性设计的插入和优化。
根据实习的经验,DFT工程师和ATE工程师在某种程度上是有交叠的,只不过对于大公司来说他们的工作分得很开,但小公司却有可能一人担任两个工作。