3. 系统级设计问题:规则和工具
本章讨论系统级问题,包括版图、时钟、布局、片上总线、综合策略、验证和测试。在选择或设计芯片的组件之前,必须就这些元素达成一致。
本章的主题包括:
- 互操作性问题
- 时序和综合问题
- 功能设计问题
- 物理设计问题
- 验证策略
- 制造测试策略
3.1 互操作性问题
影响SoC设计成功的两个最关键的问题是:正在集成的宏的互操作性、实现设计的工具的互操作性。
再开始设计和宏选择之前,设计团队必须统一整个芯片的设计规则。提前确定关键的事情包括时钟和重置策略、宏接口架构和可测性设计,可以让选择的宏更好的协同工作。
本章描述了设计团队在开始选择宏之前应该统一的设计指南。这些要求旨在加快芯片级的集成和宏的验证。
3.2 时序和综合问题
时序和综合问题包括同步与异步设计、时钟、重置方案和综合策略的选择。
3.2.1 同步设计vs异步设计
规则——系统应该是同步和基于寄存器的。锁存器(Latches)仅用来小的存储或FIFO。存储器和FIFO的设计应该是同步的且通过边沿触发。违反该规则的需要格外的小心,并必须完整记录。
在过去,基于锁存器的设计是非常流行的,尤其是在处理器的设计中。多相非重叠时钟为各个流水线提供时钟。与基于寄存器(触发器)的设计相比,锁存器被视为提供更大的密度和更高的性能。这些好处足以为此添加复杂的设计。
如今,权衡是完全不同的。深亚微米技术可以在芯片内容纳更多数量的门,在基于处理的设计中,片上存储器的大小使得处理器流水线的大小相形见绌。此外,在深亚微米下,延迟主要由互连线延迟产生,锁存器和寄存器之间的延迟差异很小。
另一方面,随着实际尺寸的增加和设计重用需求的增加,基于锁存器的设计复杂性增加的成本明显上升。
锁存器的时序问题是较模糊的,如图3.1所示。设计人员可能希望在时钟前沿之前在锁存器的 D 输入处设置数据,在这种情况下,数据会在时钟前沿传播到输出。或者,设计人员可能打算在时钟的后沿之前设置数据,在这种情况下,数据在时钟的后沿(有效地)传播到输出。
设计人员可以利用这种模糊性来改进时序。 “时间借用(Time borrowing)”是通过以下方式吸收一些延迟的做法:
- 保证数