FPGA 和ASIC开发的区别

FPGA和ASIC区别很多。ASIC的逻辑通常远远大于FPGA的,门数上有数量级的差别,运行时钟也远远高于FPGA。而且,ASIC只有一次机会,FPGA因为可以编程,所以coding的灵活性相对提高。仅仅从RTL设计上来说:
(1)ASIC更趋于保守,对逻辑的任何改动都要三思,并且要做备选的选择,以防改错。RTL的任何修改几乎都是增量修改,即便以前的逻辑错了,也不会删掉,而是多做一个分支。
(2)ASIC对coding style的要求更高。所有模块的coding风格要求一致,这样有利于后端以及后续的check。
(3)ASIC设计对时钟和复位更加重视。尤其是时钟,对ASIC的设计极其关键,复位对BIST测试又很关键。ASIC在这方面都需要采用库来进行设计。ASIC通常不会用counter分频,这样会导致时钟不干净,除非是很低频的时钟。ASIC对于跨时钟域的信号处理也谨慎很多。对于clock的关闭和打开也需要严格检查。
(4)ASIC要考虑SCAN测试和BIST的问题,所以设计的时候还需要为SRAM做BIST插入,需要为SCAN预留接口,虽然大部分都是工具干的,但是经常RTL作者也要手动做一些顶层工作,比如SCAN时钟的来源等逻辑。
(5)FPGA多用现成IP,需要考虑资源的均衡,不能把某一资源撑爆了,而且FPGA存在资源浪费问题。ASIC很少考虑这种问题,ASIC考虑的永远是性能和功耗,在逻辑选择上除了SRAM,CLK和复位相关,都是手写的,逻辑基本没有浪费,也更加紧凑。
(6)ASIC时序预见性更好,可调整度高,所以可以写很大的逻辑。

FPGA 和ASIC开发流程的区别:

第一步,首先是要实现功能,方式一般采用HDL描述,如verilog,VHDL。当然对于小规模电路也可以采用电路图输入的方式。

第二步,得保证电路功能的正确性,也叫验证,可以通过软件仿真,硬件仿真等方式实现。软件仿真一般比较直观,方便调试,因为每一时刻的状态都可以看到,这好比调试软件程序。硬件仿真一般就是指FPGA验证,就是把电路用FPGA实现,然后去跑,这个的好处就是速度很快,譬如一个视频解码核,解一帧图像出来,软件仿真就算用最好的服务器,也得跑上多少秒,但是在FPGA中实现的话,基本就是多少 毫秒了。这对于一个需要大规模验证的电路来说,是必不可少的。
前面两步对于数字IP来说,ASIC和FPGA基本一致,除非一些实现技巧的差别。
第三步,在你描述的电路正确性得到确保之后,你就要实现它,就是要把你写的那些代码变成实实在在的电路,如寄存器还是 与非门,这个过程就叫综合。由于电路规模日益复杂,一般最基本的电路就被做成了cell,如寄存器, 与非门,就不会再细化到用三极管怎么去搭的问题了。这一步对于FPGA和ASIC来说就是最小的那个单元不一样。FPGA是做好的电路,一般顾及通用性和效能,基本电路单元就做得比较大,如LUT,就是由寄存器和 与非门构成,你可能只用了其中一个与门,但是还会占用这么一个单元。对于ASIC来说,两输入的与非门,就是一个简单的门电路,甚至为了区分 驱动能力和时序特性差异,还分了好几个等级,有的面积小,有的 驱动能力强。总的来说这一步就是工具把你的描述变成基于库的电路描述。
第四步,你得到基于库的电路描述之后,就要考虑这些单元怎么摆放的问题,这叫布局布线。FPGA的话连线资源有限,所以需要不断地调整,在保证时序要求的情况下,把你的电路映射到其固定的资源分布图中间。ASIC的话一般是根据周边电路需求,时序要求,把你的电路放到芯片的某个位置。在摆好之后还得考虑连线是否能通,各级延时是否能满足电路的建立和保持时间要求等等。
第五步,输出。FPGA就是输出一个配置文件,告诉 FPGA芯片该怎么样去配置其电路,使其实现预期功能。该文件可以在FPGA上电之后再由PC下载进去,也可以保存在Flash里,电路上电之后自动配置。ASIC就是输出一个版图文件,告诉代工厂该怎么去腐蚀硅片,该怎么连金属等等。
当然在这过程中间会有各种各样的辅助步骤。总的来说都是为了确保你设计的电路正确及正确实现你的电路。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FPGA(现场可编程门阵列)和ASIC(专用集成电路)的开发流程有一些差异。下面是它们各自的开发流程: FPGA开发流程: 1. 设计:使用硬件描述语言(如VHDL或Verilog)进行FPGA设计,描述设计的功能和逻辑。 2. 合成:将设计代码转换为逻辑门级别的表示,生成综合网表。 3. 实现:将综合网表映射到FPGA的可编程逻辑资源(如LUT、FF等)上,生成物理约束文件。 4. 布局布线:根据物理约束文件,进行FPGA芯片的布局和布线,确定信号路径和时序约束。 5. 配置:生成FPGA配置文件,将设计加载到FPGA芯片中,使其实现设计功能。 6. 调试和验证:在FPGA上进行设计功能和性能的调试和验证。 ASIC开发流程: 1. 规划:进行全面的设计规划,包括功能需求、性能目标和功耗要求。 2. 设计:使用硬件描述语言进行ASIC设计,描述设计的功能和逻辑。 3. 验证:进行功能仿真和时序验证,确保设计的正确性和可靠性。 4. 合成:将设计代码转换为门级网表表示,生成综合网表。 5. 布局与布线:进行物理布局和布线,将综合网表映射到芯片上,并考虑信号延迟等因素。 6. 验证:进行物理验证,包括功耗分析、时序分析等,确保设计在物理层面满足要求。 7. 掩膜制作:生成用于制造芯片的掩膜数据。 8. 制造:进行芯片的制造和封装。 9. 测试:对制造好的芯片进行测试,包括功能测试、可靠性测试等。 需要注意的是,ASIC开发流程相比FPGA更为复杂和耗时,需要更多的前期规划和验证工作。而FPGA开发流程相对灵活,可以在开发过程中进行快速原型设计和调试。选择使用FPGA还是ASIC需要根据具体应用需求、设计目标和资源限制进行评估和决策。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值