FPGAASIC开发流程
目录
1、FPGA与IC区别
2、IC设计分类
3、IC设计中需要考虑的因素
4、ASIC设计流程
4.1 设计流程
4.2 IC设计过程中用到的EDA工具总结
5、 FPGA设计流程
1、FPGA与IC区别
FPGA全称是Field Programmable Gate Array,中文名叫现场可编程门阵列
ASIC全称是Application Specific Integrated Circuit,是指专用集成电路
(1)ASIC:需制作掩模;设计时间长,硬件不能升级;芯片面积小,性能可以得到较好的优化;适合芯片需求量大的场合:片量用于平摊昂贵的光罩掩模制版费,降低单片生产成本。
(2)FPGA/CPLD:可以编程,不需要后端设计/制作掩模;开发门槛较低,设计时间较短,可方便和快速地升级优化硬件;芯片面积大,性能不够优化 ;适合芯片需求量小的场合:不用支付昂贵的光罩掩模制版费。作为数字ASIC设计流程中的必要步骤:ASIC设计中前端设计的FPGA原型验证(HDL功能验证)。
FPGA | ASIC | |
灵活性 |
高 | 低 |
开发流程与周期 |
开发时间短、开发流程更简单 | ASIC更加复杂,尤其是全定制设计,需要大量的人力物力进行设计开发,但体积小、功耗低 |
速度和性能 |
FPGA内部都是通用的结构,它可以根据需求的不同去实现乘法器、多路选择器等等组合逻辑,在结构上的通用性必然导致性能冗余 | ASIC内部都是固定的结构 |
成本 | 小批量的,FPGA成本低 | 大批量的,ASIC成本低 |
行业现状 |
Xilinx(赛灵思)和Altera(阿尔特拉) |
2、IC设计分类
(1)数字IC:处理数字信号,可以做成很大的规模;
ASIC:(需制作掩模),Application Specific Integrated Circuit 专用集成电路;
FPGA/CPLD:(可以编程,不需制作掩模),Field Programmable Gate Array 现场可编程门阵列;Complex Programmable Logic Device 复杂可编程逻辑器件;
(2)模拟/射频IC:处理模拟信号,规模远不如数字IC,放大器( RF放大器、中放、运放、功放);比较器;振荡器;混频器;模拟PLL;稳压稳流源等
(3)数模混合信号IC: ADC、DAC;某些Driver;电源管理等等
(4)SOC:System on Chip(系统集成电路,片上系统)
3、IC设计中需要考虑的因素
(1)满足功能和性能的要求(性能:速度、功耗);
(2)降低芯片成本(包括:设计、制造、测试);
(3)延长芯片的使用寿命,如热均匀分布等;
(4)缩短芯片面市时间(Time-to-Market);
4、ASIC设计流程
数字IC设计方法:
层次化:从高层次的系统抽象描述,逐级向下进行设计/综合、验证,直到物理版图级的低层次描述(系统(功能)级→寄存器传输级(RTL)→门级→电路级→ 物理版图级);
结构化:把复杂的系统划分成一些可操作的模块,允许多个设计者同时设计,而且某些模块的可以复用;
4.1 设计流程
一、确定项目需求
市场需求--调研--可行性研究--论证--决策--任务书
1. 确定芯片的具体指标:
①物理实现
制作工艺(代工厂及工艺尺寸);
裸片面积(DIE大小,DIE由功耗、成本、数字/模拟面积共同影响);
封装(封装越大,散热越好,成本越高)。
②性能指标:
速度(时钟频率);
功耗。
③功能指标:
功能描述
接口定义
2. 系统级设计:
用系统建模语言(高级语言 如matlab,c等)对各个模块描述,为了对方案的可行性进行验证
二、前端设计(RTL前端+功能验证(最终得到的是RTL Source Code))
RTL级代码----功能仿真----逻辑综合----等价性检查,形式验证----静态时序分析
1. RTL 寄存器传输级设计
利用硬件描述语言,如verilog对电路以寄存器之间的传输为基础进行描述;
2. 功能验证(动态验证、前仿真):
对设计的功能进行仿真验证,需要激励驱动,是动态仿真。
仿真验证工具:Mentor公司的 Modelsim,Synopsys的VCS,还有Cadence的NC-Verilog均可以对RTL级的代码进行设计验证。
该部分称为前仿真,接下来逻辑部分综合之后再一次进行的仿真可称为后仿真。
3. 逻辑综合(Design Compile):
把代码语言描述的模块转化成包含与,或,非,寄存器等基本的逻辑单元的网表,需要指定特定的综合库,添加约束文件;逻辑综合得到门级网表(Netlist)。
4. 形式验证(静态验证):
从功能上,对综合后的网表进行验证,检查验证生成的网表功能是否与设计的电路功能相同。 常用的就是等价性检查方法,以功能验证后的HDL设计为参考,对比综合后的网表功能,他们是否在功能上存在等价性。这样做是为了保证在逻辑综合过程中没有改变原先HDL描述的电路功能。
等价性检查用到Synopsys的Formality工具。
5. STA静态时序分析:
从时序上对电路进行验证,检查电路是否存在建立时间(setup time)和保持时间(hold time)的违例。
工具:Synopsys的prime time。
6. DFT(design for test)可测性设计:
常用方法:在设计中插入扫描链,将非扫描单元(如寄存器)变为扫面单元。
工具:Synopsys的DFT Compiler。
三、后端设计(逻辑综合+后仿真(最终得到的是GDSII文件))
布局规划—布局布线----版图物理验证(包括LVS和DRC等)----流片
1. 布局布线(Place and Route):
布局规划主要是标准单元、I/OPad和宏单元的布局。I/O Pad预先给出了位置,而宏单元则根据时序要求进行摆放,标准单元则是给出了一定的区域由工具自动摆放。布局规划后,芯片的大小,Core的面积,Row的形式,电源及地线的Ring和Strip都确定下来了。如果必要在自动放置标准单元和宏单元之后,你可以先做一次PNA(power network analysis)。
包括时钟树插入(布局时钟线),布局布线用到Synopsys的IC Compiler(ICC)工具。
在布线(普通信号线)之前先布局时钟线,即时钟树综合CTS(Clock Tree Synthesis),用到Synopsys的Physical Compiler工具。
2. 寄生参数提取(Extrat RC):
提取延迟信息
3. 静态时序分析(STA):
加入了布局布线延迟,更真实的时序分析
4. 版图物理验证:
对完成布线的物理版图进行功能和时序上的验证(包括DRC和LVS等),DRC(设计规则检查)、LVS(版图一致性检查)
工具:Mentor:Calibre
Synopsys:Hercules
Cadence:Diva/dracula
5. 生成GDSII文件,Tap_off 流片
4.2 IC设计过程中用到的EDA工具总结
数字前端设计工具 | 编写RTL代码工具 | gvim / notepad++ |
功能验证 |
Mentor公司的QuestaSim Synopsys的VCS Cadence的NC-Verilog |
|
数字逻辑综合工具 |
Cadence:Genus Synopsis:(DC) Design Compiler |
|
形式验证 | Synopsys的Formality | |
静态时序分析STA | Synopsys的PT(Prime Time) | |
数字后端设计工具 | 布局布线(Place and Route) |
Synopsys的Astro Synopsys的(ICC)IC Compiler (ICC是Astro的下一代取代产品) |
时钟树综合CTS(Clock Tree Synthesis) | Synopsys的Physical Compiler | |
DRC(设计规则检查)、LVS(版图一致性检查) |
Mentor:Calibre Synopsys:Hercules Cadence:Diva/dracula |
5、 FPGA设计流程
FPGA设计流程: RTL级代码----功能仿真-----逻辑综合-----门级仿真-----布局布线----时序仿真----版级验证与仿真
典型 FPGA 的开发流程一般如下图所示, 其包括功能定义/器件选型、设计输入、功能仿真、综合优化、综合后仿真、实现、布线后仿真、板级仿真以及芯片编程与调试等主要步骤。
1、功能定义/器件选型
在 FPGA 设计项目开始之前需要进行方案论证、系统设计和 FPGA 芯片的选型等准备性工作,在确定并评估好方案后需要进行系统功能的定义和模块的划分。
在设计方法上,一般都采用自顶向下的设计方法,首先将整个系统划分成若干个基本模块,然后再将每个基本模块划分为下一层次的基本单元,这样依次划分后确定好各个模块的功能以及各个模块需要设计的输入输出信号,再通过 EDA 工具进行各个模块的设计。
2、设计输入( Design Entry)
设计输入是指在 EDA 工具中,通过使用该开发软件设计出所希望得到的系统或电路的一个过程。
最常使用的方式是通过硬件描述语言( HDL)的方式来描绘设计出最终的数字电路。另一种设计方式是使用原理图输入的方法进行设计输入。
3、功能仿真( RTL-Simulation)
功能仿真也称为综合前仿真,用户设计好数字逻辑后需要检查自己的设计是否符合预期,在不需要综合之前通过仿真软件对电路进行逻辑验证。在功能仿真器件电路可以不用考虑延迟等因素,仅对初步的功能进行检验。通过建立测试平台即 Testbench,利用波形编译器(仿真软件)和硬件描述语言建立好波形文件和激励信号,在仿真软件上会模拟实际电路的波形显示出输出波形信号,并生成报告文件。
常用的硬件描述语言的仿真工具有 Model Tech 公司的 ModelSim、 VCS、 Ncsim 以及 NC-VHDL 等软件。
4、 综合优化( Synthesis)
综合即针对给定的电路实现功能和实现该电路的约束条件,如速度、功耗、成本及电路类型等,通过计算机进行优化处理获得一个能满足上述要求的电路设计方案。
常用的综合工具有 Synplicity 公司的 Synplify/Synplify Pro 软件以及各个 FPGA 厂家自己推出的综合开发工具。
5、 综合后仿真
综合后仿真是用来检查综合结果是否和原设计一致。
后仿真与前仿真的区别在于: 前仿真是指综合前的仿真,如在 Modelsim 对撰写的代码直接进行仿真,而后仿真是综合后的仿真,也就是功能仿真。
6、 布局布线( Place & Routes)
布局布线可理解为利用实现工具把逻辑映射到目标器件结构的资源中从而决定逻辑的最佳布局,选择逻辑与输入输出功能链接的布线通道进行连线,并产生相应文件(如配置文件与相关报告)。
7、 时序仿真( Timing)
时序仿真,也称为后仿真,是指将布局布线的延时信息反标注到设计网表中来检测有无时序违规(即不满足时序约束条件或器件固有的时序规则,如建立时间、保持时间等)现象。时序仿真使用布局布线后器件给出的模块和连线的延时信息, 在最坏的情况下对电路的行为作出实际地估计。
8、 板级仿真与验证
板级仿真主要应用于高速电路设计中,对高速系统的信号完整性、电磁干扰等特征进行分析,一般都以第三方工具进行仿真和验证,在实际的工作中一般接触较少。
9、 编程与调试
设计的最后一步就是芯片的编程与调试。编程是指将 FPGA 开发工具最后产生使用的数据文件(位数据流文件, Bitstream Generation)加载到 FPGA 芯片中。
逻辑分析仪(Logic Analyzer, LA)便是 FPGA 设计的主要调试工具。目前,主流的 FPGA 芯片生产商都提供了内嵌的在线逻辑分析仪(如 Xilinx ISE 中的 ChipScope、 Altera QuartusII 中的 SignalTapII 以及 SignalProb),它们只需要占用芯片少量的逻辑资源便可达到同样的效果,在实际的工程调试中发挥了极大的作用。
FPGAASIC开发流程相关推荐
- 简述Web程序开发流程
总体开发流程 分析需求, 列出功能清单或写需求说明书. 设计程序功能, 写功能规格书和技术规格书. 进入开发与测试的迭代. 调试和性能等专项测试. 部署上线 运维 前端开发流程 根据功能规格绘制页面草 ...
- 移动端开发者眼中的前端开发流程变迁与前后端分离
写在最开始 这是一篇面向移动端开发者的科普性文章,从前端开发的最初流程开始,结合示范代码,讨论开发流程的演变过程,希望能覆盖一部分前端开发技术栈,从而对前端开发的相关概念形成初步的认识. 本文会提供一 ...
- node.js的开发流程_Node.js子流程:您需要了解的一切
node.js的开发流程 by Samer Buna 通过Samer Buna Node.js子流程:您需要了解的一切 (Node.js Child Processes: Everything you ...
- 软件开发流程包含哪些内容
2019独角兽企业重金招聘Python工程师标准>>> 能否开发出一个好的软件,关键是看软件开发前期所做的工作,重点是这个软件有没有一个好的 软件开发流程,因为一个好的软件开发流程关 ...
- TCP 网络应用程序开发流程
TCP 网络应用程序开发流程 1. TCP 网络应用程序开发流程的介绍 TCP 网络应用程序开发分为: TCP 客户端程序开发 TCP 服务端程序开发 说明: 客户端程序是指运行在用户设备上的程序 , ...
- web开发流程 - 网上商城示例
一.需求确定 1:通过各种手段确定系统的功能与性能 1)功能:注册.浏览.搜索... 2)性能:可同时支持n个并发访问,并且响应时间不低于m毫秒... 3)手段:头脑风暴(brain ...
- Leangoo阶段式硬件产品开发流程
一.概述 本场景描述的是基于阶段式硬件研发流程以及在Leangoo中如何实现. 二.硬件产品开发流程 下图所示的是一个硬件产品开发大体上所需要经历的全部流程: 1)立项 在立项之前首先需要确定产品定位 ...
- 究竟什么样的开发流程是规范的?
概述 有读者反馈,读了文章 一线技术管理者究竟在管什么事?收获满满,但还有点不过瘾,还想了解更细的东西... 这篇文章分享开发流程规范,目的是提高产品质量,优化开发流程,供大家参考. 规范是死的,人是 ...
- 敏捷开发流程的8个步骤
一.敏捷开发流程的8个步骤包括: 1.目标制定,目标对齐:通过市场调研.业务思路.风险评估制定公司规划和目标,根据这一目标产生所有部门的目标并实现对齐: 2.产品规划:产品研发部门根据目标制定产品关键 ...
- 如何让Git适应敏捷开发流程?
一旦涉及版本控制系统,Git实际上代表敏捷开发的水平.Git作为一款强大的开源系统,有较强的灵活性,可以按需匹配任何开发团队的工作流程.而这种分布式相比较集中式来说,自然赋予系统更好的性能特征,且允许 ...
最新文章
- FZU 1889 龟兔赛跑
- Cloudify — Plugins
- OpenCV学习之视频读取与帧的提取、显示及保存
- 干货 | 广电行业数字化时代的「数据破局」指南
- Elasticsearch系列「零」架构解析与最佳实践
- 计划B? 那是计划N…没什么。 拼图于2015年问世
- ai怎么渐变颜色_你根本想不到AI的混合工具有多神奇!
- android handler2--消息队列源码解析
- User Interaction Design
- Windows7中被大家忽略的实用七大功能
- 最新sfc模拟器安卓汉化版_卡车模拟器山货运卡车3D游戏安卓最新版 v1.0 卡车模拟器山货运卡车3D游戏下载...
- java创作2019-7-19日报管理系统
- 从零开始学androidNotification通知.四十四.
- oeasy教您玩转vim - 88 - # 自动命令autocmd
- linux集群高可用--crm
- Cuba 设置debug模式
- python画五角星
- BEV蒸馏来了!BEVDistill:用于多目3D目标检测的跨模态BEV蒸馏
- python项目作业_期末作业.py · 光辉/python练手小项目 - Gitee.com
- ALS爱立思常见问题汇总