登录注册   忘记密码

做流片ASIC和做FPGA的RTL 设计之间有什么不同吗?

王二东 | 2017/8/18 17:04:23

请问诸位大拿,做流片的ASIC设计的RTL是否跟FPGA上做RTL是否不一样呢?我所了解的,似乎ASIC那边对于芯片验证投入很多精力,而FPGA由于可以重新编程,所以没有特别的人来做验证这块。但RTL是否有不一样呢,比如,ASIC那边做RTL的是否会需要考虑很多physical方面的问题,诸如设计时候要避免某些信号成为大扇出信号,或者将某些信号在不用的时候置零,使得dynamic power降低,等等。在FPGA上,这些问题似乎是不用考虑的。。。


  • WANAN  |   2017/8/21 9:21:11

    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时序预见性更好,可调整度高,所以可以写很大的逻辑。


  • Ailurus  |   2017/8/21 16:33:16

    设计方面,fpga考虑的更多的是怎么用ram去实现一个复杂功能,而不是用寄存器去搭,对于多路处理,fpga一般都是采用时分复用来节省资源,而不是例化多路,fpga考虑的更多是资源怎么充分利用,寄存器和ram的均衡,asic考虑功耗,可靠性比较多,两年前,做的一个项目直接从asic移植到fpga芯片直接资源爆掉(很猛的片子),发现有个功能点asic全部用寄存器搭的,没有办法方案重做,修改成ram方案,寄存器只有原来的1/10,ram多了很多,ram就在那里不用白不用,最近做的一个项目也是借鉴芯片方案,芯片中很多定点数的乘法都是用移位来实现的,为了节约面积这样很多系数就只能是1/2,1/4...1/2^n,会影响性能,逻辑的方案就不用这么搞了,我直接就用dsp已经在那里了,直接用,所以系数直接可以用理论算来的值,最终的结果和理论符合的很好。