做FPGA,为啥加班这么多?

    很多年前我经常在想:做FPGA设计,为啥加班这么多,不停地调bug和维护bug,心力交瘁。直到做了IC设计,我才彻底懂了:看完FPGA设计和IC设计上的差别,你也会懂。

1.    设计上的差别(设计前有无最终硬件)

    FPGA设计和IC设计虽然都属于硬件设计,但他们设计却有很大的差别。FPGA是可编程门逻辑阵列,那FPGA设计就是用软件去编程FPGA芯片内部的逻辑来实现不同的应用开发,而IC是集成电路(芯片),IC设计就是造一个芯片,故本质的区别是:

    • FPGA设计是FPGA芯片上的应用程序开发,即在最终硬件(FPGA芯片)上开发;

    • IC设计是造一个芯片,即还没有最终硬件(被设计的芯片)。

2.    验证上的差别(能否用最终硬件来验证)

    上面设计上的差别已经提到,FPGA设计前已有最终硬件(FPGA芯片),因此验证:

    • 可以直接用FPGA来验证,即下载到FPGA芯片,跑一跑,看一看,再改一改,下载,再跑一跑,再改一改......

    • 在FPGA产品上通过客户使用来验证,客户发现bug,我们定位解决bug,客户再发现了bug,我们再定位解决bug......

    • 因为有最终硬件(FPGA芯片)可以验证,所以我们一般只需这几次跑通,不充分。

    而IC设计前还没有最终硬件(被设计的芯片),如果验证不到位,就会导致一次流片的失败,而一次流片就是数亿的损失,因此验证需要:

    • 使用验证方法学UVM来尽可能充分验证各个模块的功能,前仿真、后仿真;

    • 使用FPGA、硬件模拟加速器等,尽可能接近最终芯片来验证各个功能;

    • 因为没有最终的硬件(被设计的芯片)可以来验证,所以我们验证的会非常充分。

3.    规范流程上的差别(需不需要规范流程)

    上面验证上的差别,可以看出FPGA设计时,可以在最终硬件(FPGA芯片)上多次试错,甚至到客户那里还能再多次试错,因此规范流程上:

    • 不规范也可以:多试几次又不是不行,问题又不是不能被解决,花20%设计,花80%调bug,还需要加班来维护,又不是不行,多加班能解决的都不是问题,为什么解决也不那么重要,只要最终硬件(FPGA芯片)上跑的没问题就OK

    • 规范更好:代码写的规范,有详细的设计文档,关注EDA工具综合布局布线的报告等,上板前做一些仿真,这样让你花80%设计,花20%调bug,少加班,就能够不断的升级迭代设计,少bug不怎么需要维护,有bug也能快速解决。

    但是,IC设计时,没有最终硬件(FPGA芯片)可以多次试错,就一定要严格规范设计的流程,尽可能去模拟最终硬件验证,保证流片回来的芯片不出问题,因此规范流程上:

    • 要严格规范,充分验证,出现bug需要定位到设计根源上并解决,解决后还需要再遍历验证一遍。

    所以,做FPGA,为啥加这么多班?我觉得就是因为不够重视规范和验证,至于FPGA设计重视规范和验证,又是怎么理解和落地了?

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值