以下要点总结了设计阶段的主要考虑因素:
1、寄存关键模块的所有输出。这将使得在系统级集成期间,接口时序很容易满足
2、根据时钟域和功能目标,对设计进行划分(Partition)
3、遵循命名约定,便于以后的维护。
4、避免实例化特定工艺的门
5、在设计中使用参数化代码
6、避免在设计内部生成时钟和复位
7、在顶层的模块实例化时避免使用胶合逻辑(glue logic)
什么是“snake”路径,为什么要避免它们?
一条snake路径,就是一条穿越多个层次的路径。
设计中必须避免使用snake路径,原因如下:
在对顶层进行静态时序分析时,它将构成一个很长的时序路径。但是,在模块级的静态时序分析时可能不会被发现。
综合工具需要付出更多的努力来优化跨层次的时序路径,同时增加综合时间。
为了避免snake路径:
1、寄存不同功能模块的输出。
2、在功能上划分设计,以避免跨越层次结构的过长的时序路径。
3、定期在集成后的,即使没有完全通过验证的设计中执行综合,检查是否存在snake路径。这将通过时序报告提供早期的反馈。
划分设计时有哪些注意事项?
大型设计需要以分层的方式处理。在划分这些设计时需要考虑以下因素:
1、功能:层次结构中逻辑的功能是划分设计的主要标准。典型层次结构的划分是:
1.1、地址和数据路径:此模块通常包含地址和数据寄存器,用于驱动总线的地址和数据。
1.2、控制逻辑:该模块通常包含有限状态机(FSM)
2、时钟域:在多时钟设计中,建议将同一个时钟域中的模块划分在单个模块。当信号需要与不同时钟域中的模块进行交互时,需要通过一个同步模块,它将源时钟域中的信号同步到目的时钟域。
3、面积:模块中的逻辑太少会产生太多的层次结构,单个模块中的逻辑过多会在以后的Floorplan期间产生问题。
本文转载自公众号:芯片数字实验室
原文链接:
https://mp.weixin.qq.com/s/3krhDvZiFpSJuBTQD53CxQ
未经作者同意,请勿转载!
推荐阅读
想了解更多内容,欢迎关注芯片数字实验室专栏