前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >门控时钟和逻辑等价性检查

门控时钟和逻辑等价性检查

作者头像
ExASIC
发布于 2021-11-02 01:43:39
发布于 2021-11-02 01:43:39
1.3K00
代码可运行
举报
文章被收录于专栏:ExASICExASIC
运行总次数:0
代码可运行

每当问到“怎么降低动态功耗”,一般的答案就是插门控时钟。那为什么插门控时钟就能降低动态功耗呢?门控时钟一定能插得进去吗?对逻辑等价性检查(LEC)有什么影响?

先来看看门控时钟的原理。​

有下面的一段代码,当然data_en满足时才采数据。对应的门级电路如下图。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module top
  (
   input wire clk,
   input wire rst_n,
   input wire data_en,
   input wire data_in,
   output reg data_out
   ) ;

  always@(posedge clk, negedge rst_n)
    if(!rst_n)
      data_out <= 1'b0;
    else if(data_en)
      data_out <= data_in;

endmodule // noclkgate

插入门控时钟,就是把数据通路的条件不满足时的时钟停掉,去除不必要的采样。比如用一个与门来处理一下时钟,如下图。

为了让门控时钟的高低电平不变,也不产生毛刺,有一些办法。一个方法是把data_en用clk下降沿的DFF打一拍,然后再与。另一个方法是用latch来实现,如下图。

一般的工艺库里都一个stdcell把inv+latch+and打包在一起,叫做Integrated Clock Gate(ICG)单元。

为了方便,我们常常在RTL​直接例化库里的ICG,来做全局的门控时钟。也可以ICG包在一个module里,方便换不同的工艺。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module top
  (
   input wire clk,
   input wire rst_n,
   input wire data_en,
   input wire data_in,
   output reg data_out
   ) ;

  wire        gclk;

  TLATNTSCAW7T icg_0 ( .CK(clk), .E(data_en), .SE(1'b0), .ECK(gclk) );

  always@(posedge gclk, negedge rst_n)
    if(!rst_n)
      data_out <= 1'b0;
    else
      data_out <= data_in;

endmodule // noclkgate

​是不是所有的DFF都可以插入门控时钟呢?

不是的。只有带使能的DFF,就是数据保持不变的时刻才可以停时钟。例如信号打拍的DFF需要每个时钟都采样,每个时钟都在工作。 除了latch型门控时钟外,还有一种​自异或型门控时钟。就是根据数据有没变化判断要不要采样。数据翻转率小的DFF适合用这种门控时钟。

​插入门控时钟后,对逻辑等价性检查有什么影响?

在做逻辑等价性检查时,也需要对门控时钟进行设置,比如Cadence的LEC需要set flatten model -gated_clock,Synopsys的formality则需要set verification_clock_gate_edge_analysis true 。在做LEC时,需要把ICG的上的enable合成到数据通路上去。而一般的Latch则不需要,与DFF一样,Latch也是需要作为Keypoint进行逻辑锥对比的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ExASIC 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
“自异或”门控时钟
上次的文章《门控时钟和逻辑等价性检查》里提到“除了latch型门控时钟外,还有一种自异或型门控时钟。就是根据数据有没变化判断要不要采样。数据翻转率小的DFF适合用这种门控时钟”。
ExASIC
2021/11/02
1.2K1
谈谈跨时钟域传输问题(CDC)
CDC(Clock Domain Conversion)问题,一直是IC前端设计,FPGA设计的热点问题,特别是在校招面试笔试时候,是问的最多的一个问题,我之前关于这个问题以及相关问题,写了一些总结,但比较分散,今天简单汇总总结一下。
Reborn Lee
2020/06/29
3.6K0
基于FPGA的二值图像的膨胀算法的实现
二值图像(Binary Image)是指将图像上的每一个像素只有两种可能的取值或灰度等级状态,人们经常用黑白、B&W、单色图像表示二值图像。二值图像是指在图像中,灰度等级只有两种,也就是说,图像中的任何像素不是0就是1,再无其他过渡的灰度值。
FPGA开源工作室
2019/10/29
9760
基于FPGA的二值图像的膨胀算法的实现
一道简单的笔试题_时钟切换电路(Glitch-free clock switching circuit)
DFF1和DFF3作用:在选择路径插入一个上升沿触发器,用于缓存数据,将数据传递给下一级;若去掉,会电路产生由异步信号引起的亚稳态;
数字芯片社区
2020/07/23
2.8K0
一道简单的笔试题_时钟切换电路(Glitch-free clock switching circuit)
UART接口控制器
主设备与从设备通过总线来进行数据通信,是一个数字系统不可或缺的一部分,本篇讲述一种常见的总线控制器UART串行数据接口,也称为串口。 串口的标准一般有,RS-232、RS-422与RS-485标准,我们讲述的是RS-232接口信号。
全栈程序员站长
2022/10/05
7220
UART接口控制器
题解 | Verilog刷题解析及对应笔试面试注意点【6-9】(涉及==和===、for展开问题等)
目的:不仅仅是解题,更多的是想从真实的FPGA和数字IC实习秋招和实际工程应用角度,解读一些【笔试面试】所注意的知识点,做了一些扩展。
FPGA探索者
2022/05/26
1.3K0
题解 | Verilog刷题解析及对应笔试面试注意点【6-9】(涉及==和===、for展开问题等)
FPGA乒乓操作你了解吗? 还不赶快来看
什么是FPGA操作 你了解其中的奥秘吗 想知道更多? 跟小编一起来学习吧 乒乓操作的处理流程为:输入数据通过“输入数据选择单元"将数据等时分配到两个数据缓冲模块中,在第一个缓冲周期,将输入的数据流缓存到“数据缓冲模块1"中,在第二个缓冲周期,通过“输入数据单元”切换,将输入的数据缓存到“数据缓冲模块2’’,同时将“数据缓冲模块1”缓存的第一个周期数据通过“数据选择单元”的选择,送到“数据流运算处理模块’’进行处理,在第三个缓冲周期通过“输入数据选择单元"的再次切换,将输入的数据流缓存到“数据缓冲模块1”中,
瓜大三哥
2018/06/11
1.8K0
【收藏】FPGA数字IC刷题58个Verilog代码及讲解(状态机、跨时钟、同步/异步FIFO、DMUX、奇数/小数分频)
牛客 Verilog 刷题入门篇1~24 + 进阶篇1~34 题解代码,所有代码均能通过测试,配合视频讲解效果更佳。本文给出代码,部分题目给出必要说明。 很多题目本身出题有些问题,着重理解题目,没必要钻牛角尖。
FPGA探索者
2022/11/01
3K0
【收藏】FPGA数字IC刷题58个Verilog代码及讲解(状态机、跨时钟、同步/异步FIFO、DMUX、奇数/小数分频)
详解串行通信协议及其FPGA实现(二)
基于Verilog实现标准串口协议发送8位数据:起始位 + 8位数据位 + 校验位 + 停止位 = 11位,每1位的时间是16个时钟周期,所以输入时钟应该为:波特率*16,带Busy忙信号输出。实现方法比较简单,数据帧的拼接、计数器计时钟周期,每16个时钟周期输出一位数据即可。
单片机点灯小能手
2020/07/16
7590
字符效果仿真
2.修改字模格式,删除提示信息,标点符号等;去掉全部0x,并逐一合并两项;(可以使用perl、python等提高效率)
数字芯片社区
2020/09/03
5230
字符效果仿真
FPGA零基础学习:SPI 协议驱动设计(上)
本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的“傻瓜式”讲解,让电子、信息、通信类专业学生、初入职场小白及打算进阶提升的职业开发者都可以有系统性学习的机会。
FPGA技术江湖
2021/03/23
1.1K0
FPGA零基础学习:SPI 协议驱动设计(上)
【Verilog刷题篇】硬件工程师进阶1|序列检测
问题描述:请编写一个序列检测模块,检测输入信号a是否满足01110001序列,当信号满足该序列,给出指示信号match。
程序员洲洲
2024/06/07
1220
【Verilog刷题篇】硬件工程师进阶1|序列检测
FPGA零基础学习:SPI 协议驱动设计
本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的“傻瓜式”讲解,让电子、信息、通信类专业学生、初入职场小白及打算进阶提升的职业开发者都可以有系统性学习的机会。
FPGA技术江湖
2020/12/30
1.6K0
基于FPGA的二值图像的腐蚀算法的实现
图1 a一幅大小为486x486的连线模板二值图像,图1b~d分别使用11x11,15X15和45X45的模板进行腐蚀。我们从这个例子看到,腐蚀缩小或细化了二值图像中的物体。事实上,我们可以将腐蚀看成是形态学滤波操作,这种操作将小于模板的图像细节从图像中滤除。
FPGA开源工作室
2019/10/29
1.3K0
基于FPGA的二值图像的腐蚀算法的实现
九种移位寄存器原理与设计(循环(左、右、双向)移位寄存器、逻辑和算术移位寄存器、串并转换移位寄存器、线性反馈移位寄存器LFSR)
经典电路设计是数字IC设计里基础中的基础,盖大房子的第一部是打造结实可靠的地基,每一篇笔者都会分门别类给出设计原理、设计方法、verilog代码、Testbench、仿真波形。然而实际的数字IC设计过程中考虑的问题远多于此,通过本系列希望大家对数字IC中一些经典电路的设计有初步入门了解。能力有限,纰漏难免,欢迎大家交流指正。快速导航链接如下:
Loudrs
2023/05/16
13.6K0
九种移位寄存器原理与设计(循环(左、右、双向)移位寄存器、逻辑和算术移位寄存器、串并转换移位寄存器、线性反馈移位寄存器LFSR)
奇偶校验器设计(奇偶校验与奇偶检测,XOR法和计数器法|verilog代码|Testbench|仿真结果)
经典电路设计是数字IC设计里基础中的基础,盖大房子的第一部是打造结实可靠的地基,每一篇笔者都会分门别类给出设计原理、设计方法、verilog代码、Testbench、仿真波形。然而实际的数字IC设计过程中考虑的问题远多于此,通过本系列希望大家对数字IC中一些经典电路的设计有初步入门了解。能力有限,纰漏难免,欢迎大家交流指正。快速导航链接如下:
Loudrs
2023/05/14
4.2K0
奇偶校验器设计(奇偶校验与奇偶检测,XOR法和计数器法|verilog代码|Testbench|仿真结果)
FPGA综合项目——SDRAM控制器
再者就是通信处理模块,具体的通信设置,发送什么命令是写?什么命令是读?发的什么数据?等等。
全栈程序员站长
2022/09/16
6470
FPGA综合项目——SDRAM控制器
FIFO系列(二):同步FIFO的verilog设计
关于同步fifo的设计疑惑了半天,本以为这个代码是错的,后来自己又写了一遍,但是写到最后又觉得这个是正确的,主要是wr_cnt和rd_cnt的理解。
根究FPGA
2020/06/29
3.5K0
FPGA系统性学习笔记连载_Day10 【时序逻辑、竞争冒险、同步复位、异步复位】
本系列为FPGA系统性学习学员学习笔记整理分享,如有学习或者购买开发板意向,可加交流群联系群主。
FPGA技术江湖
2021/04/01
6310
FPGA系统性学习笔记连载_Day10 【时序逻辑、竞争冒险、同步复位、异步复位】
基于FPGA的灰度图像均值滤波算法的实现
均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标像素为中心的周围8个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。
FPGA开源工作室
2019/10/29
1K0
基于FPGA的灰度图像均值滤波算法的实现
推荐阅读
相关推荐
“自异或”门控时钟
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验