wonder · 2020年06月16日

Verilog设计与逻辑综合实例解析(代码风格)

以下要点总结了设计阶段的主要考虑因素:

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
未经作者同意,请勿转载!

推荐阅读
想了解更多内容,欢迎关注芯片数字实验室专栏
1 阅读 233
推荐阅读
0 条评论
关注数
1146
内容数
122
前瞻性的眼光,和持之以恒的学习~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
Arm中国学堂公众号
关注Arm中国学堂
实时获取免费 Arm 教学资源信息
Arm中国招聘公众号
关注Arm中国招聘
实时获取 Arm 中国职位信息