首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
数字电路
» 数字IC低功耗设计入门(二)——RTL级低功耗设计(5)
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
数字IC低功耗设计入门(二)——RTL级低功耗设计(5)
发短消息
加为好友
look_w
当前离线
UID
1066743
帖子
8283
精华
0
积分
4142
阅读权限
90
在线时间
233 小时
注册时间
2017-6-23
最后登录
2019-5-18
论坛元老
UID
1066743
1
#
打印
字体大小:
t
T
look_w
发表于 2017-11-7 16:14
|
只看该作者
数字IC低功耗设计入门(二)——RTL级低功耗设计(5)
④门控时钟的处理
我们在门级网表中加入门控时钟之后,有时候需要对门控时钟进行修修改改,比如说删除一些门控时钟之类的。下面我们就来介绍一下常见的一些门控时钟处理。
·重新连接门控时钟
如下图所示:
上面的左边图中,寄存器A由CG1触发(也就是原来由上面的门控单元CG1进行控制)
。由于寄存器A距离门控时钟单元CG2更接近
,我们更想让寄存器A与门控单元CG2进行连接来减少连线的长度,因此我们需要进行重新连接。重新连接后,寄存器A由CG2触发,如上面右边的图所示。上面重新连接所使用的命令如下所示:
rewire_clock_gating
-gating_cell CG2 -gated_objects {reg_A}
此外,我们可以使用rewire_clock_gating的
-proximity
选项,使用这个选项后,Power Compiler会自动重新连接寄存器,使时钟门控单元CG到寄存器的连线最短:
rewire_clock_gating -proximity
·重新平衡门控时钟的扇出
如下图所示:
左图
是原来的设计。当我们对电路进行优化时(比如使用compiler_utral -retiming 或者 optimize_registers命令),设计中的寄存器可能被移动或删除,如
中图
所示。
寄存器优化后,门控时钟的扇出不平衡。而门控时钟有最小和最大扇出的约束,对于每一个单独的CG单元(如中图所示)最小扇出的条件不能满足。Power Compiler就需要相关的命令重新平衡门控时钟的扇出,使用的命令如下所示:
rewire_clock_gating -balance_fanout
使用上述命令后,Power Compiler将CG单元合并,以满足最小/最大扇出的约束。重新平衡后的设计如
右图
所示。
·合并门控时钟
如果两个或以上的门控时钟单元的输人逻辑相等,它们可以被合并。合并只能在一个层次内部进行。合并后,冗余的逻辑被删除。如下图所示:
合并的命令为"
merge_clock_gating_cells
"
·删除门控时钟
有时候,我们需要删除某些门控时钟,这个时候我可以使用remove_clock_gating命令。该命令即一些选项如下所示:
remove_clock_gating
[-gating_cells CG_cells_list]
[-gated_registers gated_register_list]
[-all] [hier]
如下图所示:
上图上半部分
是使用了
-gated_registers
这个选项,将原来的门控单元删除,换成“使能-载入”模式;
上图的下半部分
是使用了
-gating_cells
这个选项,原来的一个门控时钟删除。
因此我们可以通过指定门控时钟单元或通过指定寄存器删除门控时钟。如果在使用删除门控时钟命令时用了开关选项“
-all
",当前设计中的所有门控时钟都会被删除。
⑤手动插入门控时钟
上面介绍的是使用EDA工具,配合代码自动生成门控时钟。我们也可以以手工的方式设计门控时钟,下面是一个手动设计门控时钟的的代码例子:
assign Gated_Clock = Clock&Enable ;
always@(posedge Gated_Clock or negedge Reset)begin
if(!Reset)
Data_ Out<=8’b0;
else
Data Out<=Data Out+8'b1
end
对于手工门控时钟,Power Compiler将不插入时钟门控单元,也不能对它进行操作(比如重新平衡之类的)。
手工门控时钟可以被取代,取代的脚本如下:
······
create_clock -period 5 [get_ports clk]
set_clock_gating_style ...
replace_clock -gating_cells
······
取代前后的电路如下所示:
取代手工门控时钟的好处在于:取代后,它可以避免产生潜在的毛刺(glitch),也可以允许在它上使用其他的CG命令。例如我们可以使用remove_clock_gating命令去掉门控时钟或使用rewire_clock_gating命令重新连接门控时钟。
门控时钟的低功耗设计到这里就介绍完了,关于门控的STA、DFT和CTS的问题我们就不进行介绍了。
(5)其他
有的时候,我们不经意间就会引入多余的翻转,多余翻转就引起的多余的功耗。下面是多余翻转的例子(类似于操作数隔离):
上图中,当load_out无效时,如果laod_op有效,那么数据就会进行操作,也就是存在相应的翻转。因为输出是无效的,所以这些翻转是多余的,消耗了功耗,但却没有输出。因此我们就要注意,当load_out无效时,load_op也要设置为无效,这样就可以节省部分功耗。
对于上面的多余翻转,可以进行相应的压缩来节省功耗,如下所示:
sel_in同时控制了数据输入和多路选择器的输出。SEL=0时,读入A和B,选通操作1;SEL=1时,读入C和D,选通操作2;这时候就可以减少另一半操作引起的翻转,从而减少了功耗。
对于这种数据输入,然后进行操作选择性输出的,可以进行相应的门控来减少多余的翻转,从而减少功耗。
结合综合进行RTL级的低功耗就如上所述了,重点是
门控时钟的使用和操作数隔离技术
,这是我们前端设计人员需要懂的。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
MCU 单片机技术
无线技术
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议