FPGA 设计篇(06-05)量产项目中 FPGA 原型验证的不足之处

本文深入探讨了在量产项目中FPGA原型验证存在的问题,包括运行速度受限、模拟部分缺失、PLL功能限制、DFT测试不可行及特殊的时序和管脚约束。这些因素对高级数字IC设计工程师识别量产风险具有重要价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

芯片原厂必学课程 - 第六篇章 - FPGA 设计篇

06-05 量产项目中 FPGA 原型验证的不足之处

新芯设计:专注,积累,探索,挑战

🌏 一、引言

  对于量产项目中的 FPGA 原型验证而言,这是整个验证的关键路径,提供给了软件工程师进行验证和测试,也是能够复现各种复杂场景的重要支撑,提供给了验证工程师一个重要的参考点,然而,就是如此重要的一个 FPGA 原型验证,也难免存在一些 ASIC 验证中无法覆盖的测试点,因此,熟悉量产项目中 FPGA 原型验证的不足之处,有助于一名高级数字 IC 设计工程师准确识别量产风险

  NOTES:本文来自《芯片原厂必学课程 - 第六篇章 - FPGA 设计篇》技术专栏

06-05-01 FPGA 原型验证


🌏 二、正文

  ✅ FPGA 上的运行速度、工作频率、整体性能都是偏低的,有些模块的吞吐测试可能无法验证

############### TIMING CONSTRAINTS ###############

create_clock -name i_sys_clk -period 5.00 -waveform {0.00 2.50} [get_ports sys_clk_p]

set_clock_groups -asynchronous -group [get_clocks "i_sys_clk"]

create_clock -name SWD_TCK -period 100.00 -waveform {0.00 50.00} [get_ports SWD_TCK]
set_clock_groups -asynchronous -group [get_clocks "SWD_TCK"]
set_input_delay  -clock [get_clocks SWD_TCK] 60 [get_ports SWD_TMS]
set_output_delay -clock [get_clocks SWD_TCK] 30 [get_ports SWD_TMS]

create_clock -name vga_dclk_o -period 40.00 -waveform {0.00 20.00} [get_ports vga_dclk_o]
set_clock_groups -asynchronous -group [get_clocks "vga_dclk_o"]
set_input_delay  -clock [get_clocks vga_dclk_o] 24 [get_ports vga_data_o[*]]
set_input_delay  -clock [get_clocks vga_dclk_o] 24 [get_ports vga_hsync_o]
set_input_delay  -clock [get_clocks vga_dclk_o] 24 [get_ports vga_vsync_o]
set_input_delay  -clock [get_clocks vga_dclk_o] 24 [get_ports vga_de_o]
set_output_delay -clock [get_clocks vga_dclk_o] 12 [get_ports vga_data_o[*]]
set_output_delay -clock [get_clocks vga_dclk_o] 12 [get_ports vga_hsync_o]
set_output_delay -clock [get_clocks vga_dclk_o] 12 [get_ports vga_vsync_o]
set_output_delay -clock [get_clocks vga_dclk_o] 12 [get_ports vga_de_o]

create_clock -name cmos_pclk_i    -period 40.00 -waveform {0.00 20.00} [get_ports cmos_pclk_i]
create_clock -name cmos_xclk_o    -period 40.00 -waveform {0.00 20.00} [get_ports cmos_xclk_o]
create_clock -name QSPI_FLASH_SCK -period 40.00 -waveform {0.00 20.00} [get_ports QSPI_FLASH_SCK]
set_clock_groups -asynchronous -group [get_clocks "cmos_pclk_i"]
set_clock_groups -asynchronous -group [get_clocks "cmos_xclk_o"]
set_clock_groups -asynchronous -group [get_clocks "QSPI_FLASH_SCK"]

set_false_path -from [get_ports sys_rst_n]

set_false_path -from [get_pins u_arm_video_soc_wrapper/*] -to [get_pins *_ila_r_reg/D]
set_false_path -from [get_pins u_arm_video_soc_wrapper/*] -to [get_pins *_ila_r*]
set_false_path -from [get_pins *]                         -to [get_pins *_ila_r_reg/D]
set_false_path -from [get_pins *]                         -to [get_pins *_ila_r*]

  ✅ FPGA 上无法验证电源域、休眠唤醒、低功耗设计等等场景,FPGA 芯片是单独的电源域,或者设计者无法划分 FPGA 芯片中的电源域

  ✅ ANA 模拟部分,数字 FPGA 主要是基于 LUT 组成的,对于模拟部分无法实现,模拟部分只能通过其它的方式来验证或者来替代

  ✅ PLL 晶振部分,例如 FPGA 无法实现 ASIC 特有的模拟晶振,只能通过例化 FPGA PLL 或者简单的手写计数来作为 FPGA 时钟

// Standard Verilog HDL For "Clock Divider"
module ccu_clkdiv(
    input  wire clki ,
    input  wire rst_n,
    output reg  clko
);
always @(posedge clki or negedge rst_n) begin
    if(!rst_n)
        clko <= 1'b0;
    else
        clko <= ~clko;
end
endmodule

  ✅ DFT 测试部分,例如 FPGA 无法验证 SCAN MODE 的测试模式

  ✅ PAD 外围部分,例如 FPGA 无法验证 IO PAD 上下拉部分,FPGA 只能以同等功能的代码来代替

assign PAD =   enable ? dout : 1'bz;
assign din = (~enable)? PAD  : 1'b0;

  ✅ 时序约束部分和管脚约束部分,FPGA 不仅较难收敛同时不具备 ASIC 约束的参考性,FPGA 的时序约束和管脚约束是不同于 ASIC 的,这里约束的主要目的只是为了满足测试验证需求

06-05-02 FPGA 时序约束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

新芯设计

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

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

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

打赏作者

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

抵扣说明:

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

余额充值