1、简述ASIC设计流程,并列举出各部分用到的工具?
说实话,半路出家,没弄过ASIC,但是经常遇到ASIC与FPGA开发做比较的题目,不得不主动了解下ASIC:
ASIC全称: Application Specific Integrated Circuit,是一种为专门目的而设计的集成电路。
现代ASIC常包含整个32-bit处理器,类似ROM、RAM、EEPROM、Flash的存储单元和其他模块. 这样的ASIC常被称为SoC(片上系统)。
FPGA是ASIC的近亲,一般通过原理图、VHDL对数字系统建模,运用EDA软件仿真、综合,生成基于一些标准库的网络表,配置到芯片即可使用。它与ASIC的区别是用户不需要介入芯片的布局布线和工艺问题,而且可以随时改变其逻辑功能,使用灵活。
以上是百度的内容,下面给出设计流程:
除了细微地差别,看起来和FPGA的设计流程差不多,这样就比较好联想记忆了。
下面给出详细说明:
ASIC开发基本流程
芯片架构,考虑芯片定义、工艺、封装
RTL设计,使用Verilog、System Verilog、VHDL进行描述
功能仿真,理想情况下的仿真
验证,UVM验证方法学、FPGA原型验证
综合,逻辑综合,将描述的RTL代码映射到基本逻辑单元门、触发器上
DFT技术,插入扫描链
等价性检查,使用形式验证技术
STA,静态时序分析
布局规划,保证没有太多的内部交互,避免布线上的拥堵和困扰
时钟树综合,均匀地分配时钟,减少设计中不同部分间的时钟偏移
DRC,设计规则检查
LVS,布线图和原理图进行比较
生成GDSII
这整个流程称为RTL2GDSII,利用GDSII来生产芯片的过程称作流片(Tapeout),以上是一个Fabless公司的简易设计流程,最后将GDSII送至Foundry生产芯片。
2、简述FPGA的开发流程?
FPGA的开发流程可以从FPGA的开发工具ISE或者Vivado上看出,例如ISE:
如VIvado:
大概是如下流程:
从ISE以及Vivado开发工具上可以看出的过程有:RTL代码的编写,可以使用原理图、Verilog HDL以及VHDL来开发,之后可以进行功能仿真,验证设计是否正确,是否符合逻辑,之后就可以进行综合,将RTL代码映射到基本逻辑门单元,触发器上。之后进行实现,实现包括三个步骤:
翻译,映射以及布局布线。
这三者完成了什么工作,见:https://blog.csdn.net/Reborn_Lee/article/details/81434974
这是在ISE中有的套路,在Vivado开发工具中可没这么复杂,vivado生成的网表格式是一致的,没有ISE那么多,那么杂。
最后生成bit流文件,烧写进FPGA即可。
3、名词解释:
ROM:Read Only Memory,只读存储器,手机、计算机等设备的存储器,但现在的所说的ROM不只是Read Only了,也是可以写入的。
RAM:Random Access Memory,随机存取存储器,手机、计算机的运行内存。
SRAM:Static Random-Access Memory,静态随机存取存储器,只要供电数据就会保持,但断电数据就会消失,也被称为Volatile Memory
DRAM:Dynamic Random Access Memory,动态随机存储器,主要原理是利用电容存储电荷的多少来代表一个bit是0还是1,由于晶体管的漏电电流现象,电容会放电,所以要周期性的给电容充电,叫刷新。SRAM不需要刷新也会保持数据丢失,但是两者断电后数据都会消失,称为Volatile Memory
SDRAM:Synchronous Dynamic Random Access Memory,同步动态随机存储器,同步写入和读出数据的DRAM。
EEPROM:Electrically Erasable Programmable Read Only Memory,电可擦除可编程只读存储器,
DDR:Double Data Synchronous Dynamic Random Access Memory,双倍速率同步动态随机存储器,双倍速率传输的SDRAM,在时钟的上升沿和下降沿都可以进行数据传输。我们电脑的内存条都是DDR芯片。
FLASH: Flash Memory,闪存,非易失性固态存储,如制成内存卡或U盘。
关于这部分,我以前也有总结过:
RAM
ROM
IP核
参考链接:http://ninghechuan.com/2019/02/22/%E4%BD%A0%E8%A6%81%E7%9A%84FPGA&%E6%95%B0%E5%AD%97%E5%89%8D%E7%AB%AF%E7%AC%94%E9%9D%A2%E8%AF%95%E9%A2%98%E9%83%BD%E5%9C%A8%E8%BF%99%E5%84%BF%E4%BA%86/