Verilog代码规范(二)-- 时钟复位

本文详细介绍了Verilog编程中关于时钟和复位的规范,包括时钟统一管理、避免多时钟在同一always块、同步与异步复位的优缺点及应用、复位信号的正确使用等,强调了异步复位同步释放的最佳实践,旨在提高代码质量和可综合性。
摘要由CSDN通过智能技术生成

代码规范(二)

上次代码规范主要介绍了模块格式,信号命名,注释,表头等内容,今天主要介绍一些时钟复位的相关内容;


一、时钟部分

1. 时钟生成和门控放在某个特定模块crm中统一管理。

如果时钟在某个模块的内部产生,则spyglass会报W401的warning,提示时钟信号不是当前模块的输入信号。

 

2. 块中使用不止一个时钟,会导致不可综合

虽然很多综合工具支持多时钟的综合,但是并非好的代码习惯;除非你确认综合工具支持多时钟输入的综合,否则依然建议只有单时钟输入,将原来的代码块拆分;

module mod(in1, in2, clk1, clk2, out1);
input in1, in2;
input clk1, clk2;
output out1; 
reg out1;
 always@(posedge clk1 or posedge clk2)
 out1 = in1 ^ in2;
endmodule

 

3. 在同一个always中,不可以存在多个时钟

从器件上来说,cell只有一个时钟驱动,因此多个时钟出现在同一个always中,理论上是 不可综合的设计。

 

4. 除非特别设计,否则在模块中同时使用时钟的上升沿和下降沿


二、 复位部分

1. 使用异步复位同步释放

(1)同步复位和异步复位的概念

同步复位:顾名思义,同步复位就是指复位信号只有在时钟上升沿到来时,才能有效。否则,无法完成对系统的复位工作。用Verilog描述如下:

always @ (posedge clk) begin
	if (!Rst_n)
	  ...
  end

异步复位:它是指无论时钟沿是否到来,只要复位信号有效,就对系统进行复位。用Verilog描述如下:

always @ (posedge clk,negedge Rst_n) begin
	if (!Rst_n)
	  ...
  end

(2)各自的优缺点:

同步复位的优点大概有3条:

  • 有利于仿真器的仿真。
  • 可以使所设计的系统成为100%的同步时序电路,这便大大有利于时序分析,而且综合出来的fmax一般较高。
  • 因为他只有在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的毛刺。

同步复位的缺点主要有以下几条:

  • 复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。同时还要考虑,诸如:clk skew,组合逻辑路径延时,复位延时等因素。
  • 由于大多数的逻辑器件的目标库内的DFF都只有异步复位端口,所以,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会耗费较多的逻辑资源。

异步复位的优点有:

  • 大多数目标器件库的dff都有异步复位端口,因此采用异步复位可以节省资源。
  • 设计相对简单。
  • 异步复位信号识别方便,而且可以很方便的使用FPGA的全局复位端口GSR。

异步复位的缺点有:

  • 在复位信号释放(release)的时候容易出现问题。具体就是说:倘若复位释放时恰恰在时钟有效沿附近,就很容易使寄存器输出出现亚稳态,从而导致亚稳态。
  • 复位信号容易受到毛刺的影响。

综上,一般都推荐使用异步复位,同步释放的方式,而且复位信号低电平有效。这样就两全其美了。(后续会有文章介绍同步复位异步释放的相关内容)

 

2. 复位信号不能接静态信号0/1;

这种情况spyglass的check item中也有体现,如果接0/1,那么必须要确认确实符合design意图。

 

3. 在同一个设计单元中,复位信号或者置位信号不可同时使用其正负极;

一般出现在两个不同IP,一个需要positive reset,一个需要negative reset,但顶层统一输入negative reset给两个IP时就会报错;

还有一种情况就是design就是这么设计的(基本不会这么做);

 

4. 在同一个always中,不可以存在多个异步复位或者置位

不符合器件的原理,始终要明白寄存器只有一个复位输入端;

 

5. 异步复位/置位信号不是module的input信号

和时钟一样,所有的时钟复位信号不应该在模块内部自己产生,需要由统一的crn管理时钟复位。这样有利于综合和dft的设计。

 

6. 复位/置位在同步和异步电路中同时使用

基本不会有这种使用场景,对DFT测试capture和scan是不利的,务必出现这样的设计。

 

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值