ASIC设计各阶段需要注意的问题

设计流程
(前端设计;后端设计)

(1)
[1.1] 系统结构分析设计
[1.2] RTL编码
[1.3] 功能验证
(2)
[2.1] 逻辑综合
[2.2] PreLayout STA
[2.3] 形式验证 [between RTL Code and 逻辑综合的Netlist]
(3)
[3.1] FloorPlan
[3.2] Placement
[3.3] 插入Clock Tree
[3.4] 全局布线 Global Routing
(4)
[4.1] 形式验证 [between 逻辑综合的Netlist and 带CT信息的Netlist]
[4.2] STA
(5)
Detailed Routing DRC
(6)
PostLayout STA
(7)
Tape-out

划分(Partitioning),将芯片在TOP-1级进行功能划分,分为IO Pads、边界扫描逻辑、核心功能逻辑、PLL时钟模块

1)在RTL级编码时,应该尽量避免采用例化标准单元门的方式编码
危害:降低代码可读性;采用新工艺或单元库时,需要反复修改代码
2)没有对所有条件分支赋值引起潜在的Latch、always块中的敏感列表不全、阻塞与非阻塞赋值
3)在定义时序块时,有的信号不需要复位,可能一起复位导致与我们设想的不同
4)应尽量避免把时钟当作信号使用,在RTL验证时不会发现问题,在后端设计时忽略对时钟skew的控制,会产生意外

为了更好的综合和STA,需要对设计进行划分,将异步时钟域之间有数据交换的部分单独处理,其他模块在单一的同步时钟域中工作。

异步时钟域之间的亚稳态问题,使用两级触发器来消除(单bit数据)
在同步时钟域中亚稳态问题是hold问题,通过EDA工具或插入Buffer消除
多位接收控制信号之间的skew引起的问题,可能是由于launch时钟本身的skew或传输延迟引起的
对多位宽的数据,使用异步FIFO或握手协议

复位策略
Removal问题,需要保证所有的触发器在同一节拍内离开Reset状态,Reset信号完成时不能与时钟边沿太靠近,以防进入亚稳态

[同步复位]
优点:复位的时刻发生在时钟的边沿,可以防止复位信号的Glitch
如果是内部产生的Reset信号,必须保证Reset脉冲足够宽,至少两个cycle,能够让时钟采到
缺点:在上电时,无法对一些电路复位;综合时可能把同步复位的逻辑移到触发器的D输入端,作为普通信号处理,由于Reset信号有传输负载和延迟,会导致DataPath上有较长的延迟
[异步复位]
优点:不需要活动的时钟,DataPath十分干净
如果异步复位有Glitch可以使芯片进入复位状态,可以通过两级DFF接受Reset,再通过Tree给复位触发器使用

门控时钟
优点:降低功耗、面积,简化逻辑,提高频率

总线实现:
方法一:采用三态总线
优点:挂在总线上的各部件可以分布在芯片的各个部分
注意点:需要保证任何时候,不发生总线冲突,为消除隐患,可使用独热码;需要连到上拉电阻上,以防止在一段时间内不驱动总线产生的总线数据不确定
缺点:来自总线连接的多个电路单元/总线布局本身带来的电容负载对性能和面积造成不利影响;给DFT设计带来困难

方法二:采用多路选择结构的总线
在非定制ASIC中多使用

猜你喜欢

转载自blog.csdn.net/weixin_43194246/article/details/108542617