当前位置:首页 > 单片机 > 单片机
[导读]VerilogHDL综合性设计  1 时钟安排  选用上升沿触发的单时钟信号,尽量不使用混合触发的时钟信号。因为时钟周期在时序分析的过程中是关键问题,它还影响到时钟的频率。使用简单的时钟结构 利于时钟信号的分析和保持

VerilogHDL综合性设计

  1 时钟安排

  选用上升沿触发的单时钟信号,尽量不使用混合触发的时钟信号。因为时钟周期在时序分析的过程中是关键问题,它还影响到时钟的频率。使用简单的时钟结构 利于时钟信号的分析和保持,避免在时钟信号上添加buffer,还利于得到更好的综合结果。图1给出了上升沿触发的单时钟信号结构。

  

时钟信号结构" />

 

  尽量避免使用门控时钟。时钟门控电路通常与工艺和时序有关,错误的时序关系会导致错误的时钟和脉冲干扰。时钟的skew会导致hold time的混乱,如图2所示。此外,门控时钟会使设计的可测试性下降。

  

 

  同时,要避免使用内部的寄生时钟和寄生reset。寄生时钟不能作为扫描链的一部分,所以会使设计的可测试性下降,综合约束的设计难度提高。只有一些低功耗的设计需要门控时钟,在顶层模块中注意要把时钟或reset电路作为分立模块。

  2 综合代码

  使用可综合的代码可以提高电路的可测试性,简化静态时序分析,使门级的电路和初始的寄存器级代码功能一致。

  利用寄存器代替组合逻辑的反馈,避免使用锁存器(Latches)。寄存器受到时序逻辑的青睐,它可以维持一致性和综合的正确性。在设计中用reset信号来初始化寄存器的信号。在Verilog中不要使用initial语句对信号进行初始化。

  在每个always块中,指定完整的敏感信号列表。如果不指定完整的敏感信号,行为级的前端综合和后端综合网表的结果会不符。综合工具在 elaborate设计时会给出警告。若增加多余的敏感信号则会降低仿真的速度。另外,注意阻塞性赋值和非阻塞性赋值的问题,阻塞性赋值一般用于时序电路 中。

  Case语句相当于一个单层的多路器;If-then-else语句相当于一个层叠的组合多路器。单一多路器的速度会快一些,所以通常建议使用 case语句。避免使用full-case 和parallel_case,这两种语句会导致在仿真和综合过程中代码的解释出现差异。

  编写时序逻辑的代码要包括状态机和一个时序的进程,通过在进程外用assign语句来生成复杂的内部中间变量从而改进代码的可读性。使用define语句来定义状态向量。把有限状态机和非有限状态机放在不同的模块中有利于综合。

  在RTL代码中不要使用任何延迟常量。延迟量不仅会导致在一些环境中的不正确,还会使得仿真和综合的结果不一致,扰乱RTL仿真器代码的优化。

3 代码划分

  为了得到更好的综合结果,更快的综合速度,用简单的综合策略来满足时序的要求,推荐使用以下综合划分的技术。

  ● 所有模块都使用寄存器输出。对于每个设计的子模块都要记录所有的输出信号,这样可以简化综合的过程并可预测输出的驱动能力和输入的延迟。

  ● 把局部的相关联的组合逻辑放到同一个模块中,对于有不同目标的设计应放在不同的模块中。例如在综合的过程中,把需要优化面积和速度的关键路径逻辑放在分开的两个模块中,如图3所示。

  

 

  ● 综合时间的划分最主要的标准是逻辑功能、设计目标、时序和面积的需要。准确的时序计算和适当的约束对综合时间的影响远远大于电路规模的影响。把同一设计目 标的电路逻辑放到一起也会减少综合时间,而设计的约束过多会增加综合时间。减少综合时间的关键是在设计之前制定精确的时间预算,并使设计的宏模块达到预算 的要求,然后编写综合约束来满足预算,最后是运用综合工具的命令来实现约束。

  ● 避免时序异常。时序异常主要包括multicycle path和false path。如果设计中一定要用到多周期路径,应记录开始和结束点来确保在芯片级的有效。尽量避免使用异步逻辑,异步逻辑会给设计的正确性和验证带来困难。

  ● 注意glue模块的放置。将顶层的连接模块放到底层模块中,同时确保顶层含有I/O管脚和时钟发生器,如图4所示。

  

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

阿联酋迪拜2025年8月26日 /美通社/ -- 纳斯达克上市公司Robo.ai Inc.今日正式宣布完成品牌焕新升级,并于8月26日正式启用全新纳斯达克股票代码"...

关键字: AI 人工智能 代码 智能科技

北京2025年8月13日 /美通社/ -- 近日,北京积算科技有限公司(以下简称"积算科技")推出一站式AlphaFold3在线算力服务,现已开放免费使用。其内置优化后的AlphaFold3模型,支持...

关键字: ALPHA 代码 图形化 蛋白质

北京2025年7月21日 /美通社/ -- 浪潮信息宣布元脑企智一体机已率先完成对Kimi K2 万亿参数大模型的适配支持,并实现单用户70 tokens/s的流畅输出速度,为企业客户高效部署应用大模型提供高处...

关键字: 模型 AGENT TOKEN 代码

在现代电子设备中,晶振作为提供精确时钟信号的核心元件,其重要性不言而喻。从智能手机、计算机到汽车电子、通信基站,晶振的身影无处不在,它如同电子设备的 “心脏起搏器”,确保各种复杂电路有条不紊地运行。而晶振的核心 —— 石...

关键字: 晶振 时钟信号 振荡器

7月18日,一则“微信安卓安装包出现5处fxxk”的话题,迅速登上微博热搜,吸引了众多网友的热议和关注。

关键字: 代码 程序员

控制寄存器(Control Register)是中央处理器(CPU)中用于管理系统级操作的特殊寄存器,它为操作系统和硬件提供对处理器行为的精细控制。本文从计算机体系结构角度系统阐述控制寄存器的设计原理、功能分类、操作机制...

关键字: 寄存器 处理器

共鉴AI未来,缅怀先辈贡献 深圳 2025年5月21日 /美通社/ -- 5月16日下午,深圳市金澄智创AI+传承迎来了乔迁之喜,一场意义非凡的活动在新址盛大举行。活动现场星光熠熠,庄世平前辈之子庄荣新先生、南方财经...

关键字: AI AI技术 BSP 代码

在嵌入式系统开发中,硬件抽象层(Hardware Abstraction Layer,HAL)起着至关重要的作用。它为上层软件提供了统一的硬件访问接口,隐藏了底层硬件的细节,使得软件具有更好的可移植性和可维护性。C++作...

关键字: 嵌入式C++ HAL 寄存器 封装

采用51单片机最小开发板,由8位自制独立按键控制。单片机芯片为STC89C52RC,晶振为@12.000 mhz。8X8LED点阵屏模块由MAX7219驱动,MAX7219包含一个自动扫描电路。你只需要把要显示的数据发送...

关键字: 51单片机 MAX7219 寄存器

电源管理集成电路(PMIC)有益于简化最终应用并缩小其尺寸,也因此备受青睐。然而,当默认启动时序和输出电压与应用要求不符时,就需要定制上电设置。大多数情况下,电路没有可以存储这些设置的非易失性存储器(NVM)。对此,低功...

关键字: 电源管理 集成电路 寄存器
关闭