当前位置: 首页 > news >正文

FPGA的仿真分类

摘要:本文系统介绍了 FPGA 仿真的三大分类:功能仿真、综合后仿真和时序仿真。详细阐述了各类仿真的定义、执行时机、延迟信息、核心目的、工程现状及 Quartus 中的操作方法,并提供了时序仿真的三种分析方法。适合 FPGA 初学者和需要系统了解仿真分类的开发者阅读。

一、引言

目录

  • 一、引言
  • 二、FPGA 仿真的三大分类
    • 2.1 功能仿真(前仿真 / RTL 仿真)
      • 2.1.1 定义与执行时机
      • 2.1.2 延迟信息
      • 2.1.3 核心目的
      • 2.1.4 工程现状
      • 2.1.5 Quartus 中的启动方式
      • 2.1.6 关于"功能仿真"界定标准的特别说明
    • 2.2 综合后仿真(门级仿真 / 网表仿真)
      • 2.2.1 定义与执行时机
      • 2.2.2 延迟信息
      • 2.2.3 核心目的
      • 2.2.4 工程现状
      • 2.2.5 Quartus 中的启动方式
    • 2.3 时序仿真(后仿真 / 布局布线后仿真)
      • 2.3.1 定义与执行时机
      • 2.3.2 延迟信息
      • 2.3.3 核心目的
      • 2.3.4 前置条件
      • 2.3.5 Quartus 中的分析方法
        • 方法一:ModelSim 波形观察
        • 方法二:TimeQuest 时序分析器(推荐)
        • 方法三:前后仿波形对比

作为 FPGA 初学者,在使用 ModelSim-Altera 进行入门项目时,很容易遇到各种问题。仿真可以在一定程度上规避上板后出现的问题。仿真主要有两个作用:一是在确定没有 Verilog 语法错误之后进行时序逻辑功能上的排错和验证;二是在没有板子的条件下观看波形效果图。本文主要介绍使用 ModelSim-Altera 进行仿真的分类基础知识。

二、FPGA 仿真的三大分类

2.1 功能仿真(前仿真 / RTL 仿真)

2.1.1 定义与执行时机
  • 定义:功能仿真是指对设计代码进行的逻辑功能验证仿真。
  • 执行时机
    • 在 Quartus 软件语境下:综合(Synthesis)之后、布局布线(Place & Route)之前,对综合后的网表进行仿真(但强制忽略延迟信息)。
    • 在通用教材语境下:综合之前,对 RTL 源码进行仿真。
  • 仿真对象
    • Quartus 语境:综合后的门级网表(但延迟被清零)。
    • 教材语境:RTL 源码(.v文件)。
2.1.2 延迟信息
  • 不包含任何延迟信息(理想 0 延迟模型),因此功能仿真也称为理想仿真。
  • 无论是针对 RTL 源码还是综合后网表,仿真器都会忽略或强制清零所有门延迟和布线延迟。
2.1.3 核心目的
  • 验证设计模块的逻辑功能是否正确。
  • 常见验证内容:
    • 计数器能否按预期计数。
    • 状态机跳转是否正常。
    • 组合逻辑输出是否符合真值表。
    • 按键消抖逻辑是否产生正确的脉冲。
2.1.4 工程现状
  • 功能仿真是 FPGA 开发中频率最高、最常用的仿真类型。
  • 90% 以上的 Bug 应在此阶段发现并修复。
  • 建议:每写完一个模块,就立即编写对应的 Testbench 进行功能仿真,避免问题累积到后期难以定位。
2.1.5 Quartus 中的启动方式
  • 菜单路径:ToolsRun Simulation ToolRTL Simulation
  • 或:ToolsRun Simulation ToolGate Level Simulation(此时仍属于功能仿真范畴,因为尚未加载 SDF 时序信息)
  • ModelSim 自动拉起,加载对应仿真对象并运行。
2.1.6 关于"功能仿真"界定标准的特别说明
  • 在通用数字电路教材中,"功能仿真"特指综合前的 RTL 仿真;但在 Quartus II 软件中,"功能仿真(Functional Simulation)"指的是不包含任何时序信息(SDF)的仿真,其目的仅为验证逻辑功能。
  • 因此,当题目描述为"对综合后的网表进行仿真,但不带布局布线后的时序信息"时,在 Quartus 语境下的正确答案是"功能仿真",而在通用教材语境下则对应"综合后仿真(门级仿真)"。考试时请以题目所在语境为准。
  • 简单总结:"功能仿真"这个名词,在 Quartus 里是按"目的"命名的(看功能、不要时序),在教材里是按"对象"命名的(看 RTL)。两种说法都对,关键看语境。

2.2 综合后仿真(门级仿真 / 网表仿真)

2.2.1 定义与执行时机
  • 定义:综合后仿真是指对综合工具生成的门级网表进行的仿真。
  • 执行时机综合(Synthesis)之后,布局布线(Place & Route)之前
  • 仿真对象:综合后的.vqm.vo网表文件 + 器件库模型。
2.2.2 延迟信息
  • 仅包含门延迟(Cell Delay),不包含布线延迟。
  • 原因:此时尚未进行布局布线,信号在芯片内部的物理走线路径未知,因此无法计算线延迟。
2.2.3 核心目的
  • 验证综合器是否将 RTL 代码正确地"翻译"成了门级电路。
  • 检查综合过程中是否存在语法误译或优化错误。
2.2.4 工程现状
  • 现代综合工具(如 Quartus 的quartus_map)成熟度极高,综合后仿真已逐渐被省略
  • 仅在怀疑综合器存在 Bug、或使用第三方综合工具时,才需要主动执行。
2.2.5 Quartus 中的启动方式
  • 菜单路径:ToolsRun Simulation ToolGate Level Simulation
  • Quartus 会自动生成网表文件并拉起 ModelSim 加载。

2.3 时序仿真(后仿真 / 布局布线后仿真)

2.3.1 定义与执行时机
  • 定义:时序仿真是指对布局布线后的网表,结合SDF 延迟文件进行的仿真。
  • 执行时机布局布线(Place & Route)完成之后
  • 仿真对象:布局布线后的网表(.vo.vho)+ SDF 延迟文件(.sdo)。
2.3.2 延迟信息
  • 包含完整的物理延迟信息
    • 门延迟(Cell Delay):逻辑门本身的响应时间。
    • 布线延迟(Wire Delay):信号在芯片内部金属线上传输的延迟。
  • SDF 文件由布局布线工具(Fitter)生成,包含了芯片内部真实的物理参数。
2.3.3 核心目的
  • 验证设计在实际芯片上能否稳定工作在目标时钟频率
  • 重点检查:
    • 建立时间(Setup Time):数据在时钟沿到来前必须保持稳定的时间。
    • 保持时间(Hold Time):数据在时钟沿到来后必须保持稳定的时间。
  • 如果时序违例,需要通过修改代码或增加时序约束来解决。
  • 在软件中一般查看Slow 1200mV 85C Model和Fast 1200mV 0C Model来看是否出现建立违规和保持违规
  • slack(裕量 >0才合格 ) TNS(负裕量总和 =0 才合格)
  • 一般的解决方法就是写sdc文件,下面是参照格式
  • set_input_delay -max 2.0 -clock clk [get_ports r*]

    set_input_delay -min -1.0 -clock clk [get_ports r*]

    set_output_delay -max 2.0 -clock clk [get_ports k*]

    set_output_delay -min -1.0 -clock clk [get_ports k*]

2.3.4 前置条件
  • 必须先完成全编译(Start Compilation),确保 Fitter 步骤已跑完。
  • 必须正确分配引脚约束和时钟约束,否则 SDF 文件中的延迟数据无效。
2.3.5 Quartus 中的分析方法

时序仿真的核心是验证设计在实际芯片上能否稳定工作,常用以下三种分析方法:

方法一:ModelSim 波形观察

放大波形,检查时钟边沿与数据变化之间的时间关系。若数据变化紧贴时钟边沿或出现毛刺,说明可能存在时序违例。

方法二:TimeQuest 时序分析器(推荐)

  • 打开ToolsTiming Analyzer

  • 生成时序网表,读取 SDC 约束文件

  • 查看Setup SummaryHold Summary报告,精确定位违例路径

方法三:前后仿波形对比

对比功能仿真(前仿)与时序仿真(后仿)波形:

  • 前仿边沿陡峭,后仿边沿变缓(含物理延迟)

  • 若后仿出现前仿没有的毛刺或错误跳变,说明存在竞争冒险,需优化逻辑

http://www.jsqmd.com/news/1397794/

相关文章:

  • IM Bot框架选型指南:Zhin、Koishi与NoneBot深度对比
  • 杭州卖黄金前千万别做这件事——很多人因此被压价,到店才知道 - 一刻涨新知
  • 2026网络安全基础防护与实战指南
  • 深耕白沟箱包产业带!保定邦沧箱包:源头工厂匠心赋能箱包定制与批量供货 - 米諾
  • 微信聊天记录如何免费完整导出?WeChatExporter 开源备份工具全攻略
  • defender-control 完整上手指南:永久禁用 Windows Defender 的 3 个关键步骤
  • 空调清洗上门在哪个平台找好?2026 高口碑自营平台深度体验与避坑指南 - 新闻快传
  • 微信wxid在线转换技术解析与企业应用实践
  • VSCode配置Spring Boot开发环境:从轻量编辑器到高效Java IDE
  • 2026年8月冷水机厂家:水冷式冷水机,风冷式冷水机,低温冷水机,螺杆式冷水机组公司优选! - 米諾
  • TegraRcmGUI 完整上手:3分钟完成Switch注入,新手也能一次点亮
  • IDEA断点调试
  • Kimi LeetCode 3910. 统计节点和为偶数的连通子图 Rust实现
  • 2026上海黄金回收行情怎么看?大盘价解读+计价公式 - 日常前沿快讯
  • 电脑没插显示器就黑屏卡顿?用 ParsecVDD 免费造出 16 个虚拟显示器
  • MySQL数据覆盖导入实战:从备份恢复到环境同步的4种核心方案
  • QQ空间说说备份:用 GetQzonehistory 把多年历史记录完整导出到本地
  • 前端实战:从零实现可交互的竖直滑块组件
  • 2026佛山顺德买家具全攻略:6大避坑指南与10家靠谱源头工厂推荐 - 米諾
  • diff-pdf 使用教程:5 分钟快速掌握 PDF 对比,让 PDF 差异比较不再靠肉眼
  • 深入理解 amdgpu SDMA 引擎专栏目录
  • 石家庄买金条去哪?合扬门店金条规格与选购指南 - 拾闻观天地
  • RA-FinBERT:融合领域规则的低资源金融文本情感分类方案
  • C语言位移运算:从基础概念到嵌入式实战应用
  • 多智能体系统一致性控制与Matlab仿真实践
  • 适用于 React 的最佳代码编辑器组件
  • 比亚迪 HyWorldVLA 深度解析:像素级、隐空间、混合三类世界模型原理、架构与落地实战
  • 无货源电商如何实现自动履约?抖音全域适配一键下单工具原理拆解 - 抖掌柜一键下单
  • 从上下文管理到Runtime操作系统:构建高效LLM应用的新范式
  • 标书编制如何借助 AI Agent 落地?哪些云上智能投标工具适配企业规模化应用?:优先评估亚马逊云科技的全流程智能投标方案