(电路与系统专业论文)基于功能仿真的RTL功耗分析及优化[电路与系统专业优秀论文].pdf_第1页
(电路与系统专业论文)基于功能仿真的RTL功耗分析及优化[电路与系统专业优秀论文].pdf_第2页
(电路与系统专业论文)基于功能仿真的RTL功耗分析及优化[电路与系统专业优秀论文].pdf_第3页
(电路与系统专业论文)基于功能仿真的RTL功耗分析及优化[电路与系统专业优秀论文].pdf_第4页
(电路与系统专业论文)基于功能仿真的RTL功耗分析及优化[电路与系统专业优秀论文].pdf_第5页
已阅读5页,还剩71页未读 继续免费阅读

(电路与系统专业论文)基于功能仿真的RTL功耗分析及优化[电路与系统专业优秀论文].pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘要 c m o s 电路的动态功耗大约占全部功耗的7 0 9 0 。利用低功耗优化技术减少电路节点的无 用状态翻转可以显著的降低动态功耗。针对当前凭经验机械套用低功耗优化技术的现状,本论文提 出了一种基于典型功能仿真和代码解析以及建立可扩充低功耗优化技术库的寄存器传输级( r t l ) 功 耗优化方法,并使用软件编程完成两个工具来实现这一方法。使用v 撕l o gp l l ( p r o g r a m m i n gl a n g u a g e i n t e r f a c e ) 编程实现电路节点状态翻转信息获取工具( v e r i l o g _ i p ) 使用p e r l ( p r a c t i c a le x t r a c t i o na n d r e p o r t i n gi a n g u a g e ) i 吾言编程实现r t l 源代码功耗优化工具( 0 p 灯l p 1 ) 。功耗优化工具解析r t l 源代 码,生成逻辑表达式的逻辑树并且找出适合于逻辑重组、预计算和操作隔离三种低功耗优化技术的 电路结构;同时工具参照电路节点状态翻转信息给出功耗优化指导信息。一个基于我们的r t l 低功 耗优化方法的设计,优化流程被推荐并使用对实际设计进行测试。测试结果表明优化程序可以排除掉 大多数在电路当前工作状态下不适合优化的对象。参照优化指导信息可以准确地判断出最终的优化 对象以及适用的优化技术。实验结果显示使用操作隔离和预计算技术可以明显的降低包含算术比较 操作电路的功耗。优化前后电路总的节约功耗占优化前优化对象功耗的1 7 , - 3 0 。在优化电路的某 些特定工作状态中,这一比例甚至达到6 0 e 。实验结果也显示在功耗优化的同时电路的性能和面积 开始恶化。所以在做低功耗优化时需要在功耗、面积以及性能三个方面做出权衡。测试结果也证明 工具软件可以有效的指导设计者合理的使用低功耗优化技术、写出具有低功耗特性的r t l 代码并且 减少低功耗设计流程的迭代。 关键词:操作隔离预计算逻辑重组低功耗代码解析逻辑树r t lp l ip e r 东南大学颂t 学位论文 t h ed y a m i ep o w e ro f c m o sc i r c u i ti sr e s p o n s i b l ef o r7 0 , - , 9 0 o f t l a et o t a lp o w e r r e c l u c i n gc i r c u i t n o d e s u s e l e s st o g g l eh a s 也eg r e a te f f e c to i ls a v i n gt h ed y n a m i cp o w e rb yu s i n gt h el o wp o w e ro p t i m i z a t i o n t e c h n i q u e s t h ec t t l t e n tr t ll o wp o w e ro p t i m i z a t i o ni ss t i l ld e p e n d e d o i lt h ed e s i g n e r s e x p c f i e n c c t ia n di s a p p l i e dm e c h a n i c a l l y t h i sp a p e rp r e s e n t sar t ll o wp o w e ro p t i m i z a t i o nm e t h o db a s e do nt h et y p i c a l f u n c t i o n a ls i m u l a t i o n r t lc o d ep a r s ea n de x p a n d a b l eo p t i m i z a t i o nt e c h n o l o g yi i b r a 哆t w ot o o l sa 增 p r o v i d e dt or e a l i z et h em e t h o d t h et o o lv e r i l o g _ l op r o g r a m m e dw i mv e r i l o gi u ( p r o g r a m m i n gl a n g u a g e i n t e r f a c e ) w o f i 口t og e n e r a t et h ec i r c u i tn o d et o g g l em e s s a g e s t h et o o lo p t r t l p lp r o g r a m m e dw i t h l e r l ( p r a e t i e a le x t r a c t i o na n dr e p o r t i n gl a n g u a g e ) q 船t oo p t i m i z et h er t ls o u r c ec o d e t h et o o l o p t r t l p l 胛强髓t h er t l s o i i r c , i 。c o d ea n d g e n e r a t e st h el o g i ct r e eo f f i l ee x p r e s s i o n t h ec i r c u i ts l r u e t t t t w h i c ha f i tf o rt h eo p e r a t i o ni s o l a t i o n , p t e o m p u t i n ga n dl o g i cr o o r g a n i z a t i t e c h n i q u e sa 坤f o u n do u t t o o a c c o r d i n gt ot h ec i r c u i tn o d et o g g l em e s s a g e s 。t h eo p t i m i z a t i o ng u i d a n c em e s s a g e sa r cg e n e r a t e db y t h et o o lo l , t r i l p 1 a nv l s id e s i g n o p t i m i z a t i o nf l o wb a s e do no u rl o wp o w e ro p t i m i z a t i o nm e t h o di s p r o v i d e da n df i l ee x p e r i m e n t a lr e s u l t sa s u m m a r i z e da n da n a l y z e d t h em o s to p t i m i z a t i o nc a n d i d a t e s w h i c hmu n f i tf o rc i r c u i t sc u r r e n tw o r kc o n d i t i o nc b ef i l t e r e d t h ed e s i g n e r 铷d e t e r m i n et h el a s t c a n d i d a t e st l a r o u g l at h eo p t i m i z a t i o ng u i d a n c e e x p e r i m e n t a lr e s u l t sw i t hp o w e rr e d u e t i o mo fu pt o 1 7 * p 3 0 a n de v e nt o6 0 * oi ns o m l es p e c i a lw o r kc o n d i t i o nd e m o n s t r a t et h ee f f e c t i v e n e s so ft h em e t h o d 1 h er e s u l t si n d i c a t et h a tt h el o wp o w e ro p t i m i z a t i o nm a yd e t e r i o r a t et h es p e e da n da mt o o at r a d e o f f m u s t b em a d eb e t w e e nt h es p e e d ,a r e aa n dt h ep o w e r e x p e r i e n c eh a sp r o v e dt h ee f f e c to ft h es o t t w a r et o o l st o g u i d et h ed e s i g n e rt ow r i f et h er t l c o d ew i t ht h el o w p o w e rc h a r a c t e r k e yw o r d s :o p e r a t i o ni s o l a t i o n ;p r e e o m p u t i n g ;l o g i cr e o r g n i z a t i o n ;l o wp o w e r ;c o d ep a t ; l o g i ct r e e ;r t l ;i l i ;p e r l ; 东南大学学位论文独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已 经发表或撰写过的研究成果,也不包含为获得东南大学或其它教育机构的学位或证书 而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均己在论文中作了明 确的说明并表示了谢意。 研究生签名: r t l 低功耗优化技术的评估和软件实现。如上节所述,r t l 低功耗优化技术包括逻辑重组、 预计算、操作隔离、门控时钟以及状态机优化和总线编码等等。需要评估这些技术并从中 筛选出优化效率高并且适合于源代码解析和软件编程实现的技术。 软件工具的测试。提出基于我们优化工具的v l s i 设计,优化流程,并使用此流程进行软件 工具的实际测试。 基于这种低功耗优化方法思想实现的1 二具完全工作在r t l 级,减少了数据交换和第三方工具的 支持,使用便捷速度也更快。这一- 【具可以在主流的h d l 仿真工具中直接调用,所以可以在功能 调试的同时指导设计者做低功耗的优化。r t l 级是逻辑设计的起点,也可以是低功耗设计的起点。 由于避免了逻辑综合减少了早期低功耗设计流程的迭代,这一方法极大的加快了设计进度,提高了 产品的市场竞争力 1 3 论文的结构 本章主要介绍了集成电路低功耗设计及其e d a 优化工具的背景和现状,从而引出了论文所要 研究的方向并且描述了论文的主要上作及其意义。第二章将分析c m o s 电路功耗的来源。讨论在寄 存器传输级进行低功耗优化的理论基础和可行性;论证基于功能仿真优化方法的优点以及评估现有 的r t l 低功耗优化技术。第三章将讨论如何利用v e r i l o gp l i 完成对电路功能仿真过程中各节点工 作信息的提取。第四章主要论述了如何使用p e r l 语言对r t lh d l 源代码进行结构解析生成表达式 逻辑树以及如何软件实现各种低功耗优化技术。第五章将给出一个基于功能仿真的r t l 低功耗优化 方法的设计流程,并按照此流程对优化工具进行实测和分析。附录a 和附录b 分别列出了部分c 语言和p e r l 源代码。 2 r t l 低功耗技术分析 第二章r t l 低功耗技术分析 2 1 c m o s 电路功耗来源 比较于双极和n m o s 电路。c m o s 电路具有低静态功耗和高噪卢容限等特点。早期的电路设计 者往往只需要考虑c m o s 电路的动态功耗。然而在深弧微米工艺的条件f ,随着器件特征尺寸和阀 值电压的不断缩小各种物理效应已经不容忽视。这需要我们重新考虑小尺寸c m o s 电路的功耗问 题。公式( 2 一1 ) 给出了典型的c m o s 电路功耗组成:动态功耗、短路功耗、漏电流功耗以及静态功耗 只= k + 只脚+ + 只m ( 2 - 1 ) 动态功耗是由于c m o s 电路输出端电平发生翻转对负载电容进行充放电所消耗的功耗。如图 2 - i 所示,反向器翻转时电流k 充放负载电容c 导致了功耗p _ ,电流k 的大小取决于负载电 容c 和供电电压v o 公式( 2 2 给出了动态功耗和相关因素的关系。其中,口是状态翻转率,定义 每个时钟周期内平均的状态翻转次数。,为平均数据速率( 一般为电路的工作时钟频率) 。可以看到减 少负载电容、工作电压、翻转率以及上作频率都可以降低动态功耗。动态功耗一般占到平均功耗的 8 0 左右。 1 k = c x o r x f ( 2 - 2 ) v h v t f 1 m i 懿 ( a )( b ) 图2 1c m o s 反相器充放电过程 导通 均通 导通 图2 - l e o ) 为短路电流功耗的示意图。c m o s 电路上拉网络和下拉网络在逻辑状态转换的过程中 会存在一个瞬变的n m o s 管和p m o s 管都处于导通的状态。这将导致一个窄的从电源v d d 到地的 短路电流脉冲。这个短路电流引起的功耗为; 疗, 一 = k 岳( 一2 v , ) 3 f r ( 2 - 3 ) i 二 上式中,1 3 为m o s 管增益因子,、,t 为f 围值电压,t 是门输入上升下降时间,是输入波形的频率。 短路电流功耗p 岫,占整个功耗的1 0 左右。尽管这一功耗不能被完全忽略,但它不是c m o s 电路 功耗的主要成分。若要减小短路电流功耗,可从降低b ,导通范围( v d d 一2 v j 、上升下降时间t 以 3 东南大学硕士学位论文 及工作频率f = - 1 1 等几方面着手。 漏电流功耗可以用公式描述如下i l ,j : = 【,鼬+ j 删) ( 2 - 4 ) 其中,i 自代表流过扩散区和衬底之间形成的反偏二极管的电流。i 自。h h 代表讵阀值电流。 静态功耗是c m o s 电路处于静态或者非激活状态所消耗的功耗,一般而言c m o s 电路的静态 功耗占平均功耗的比例很小。 综上所述,c m o s 电路中所有节点的总功耗为: , = ( k + + + ) ; 。,。2 1。(2-5) 1 = 寺c t f 1 = 1 其中,动态功耗大约占全部功耗的7 0 0 0 9 0 ,所以总功耗近似等于动态功耗。对c m o s 电路功 耗的分析和优化而言,主要针对的是动态功耗。从公式( 2 5 ) 可以看出决定电路功耗的三个主要因素: 1 ) 工作电压,2 ) 工作频率,3 ) 负载电容和状态翻转率的乘积。c m o s 电路的低功耗设计必须综 合考虑这三个方面的因素。t 作电压v d d 和总功耗p 。存在平方关系,减小工作电压可以极大的降 低功耗。但是由于工作电压和制造工艺密切相关,不是设计者可以随意调节的参数,所以这种技术 一般运用于特定的设计层次( 如系统级或版图级) 。多电压以及可控电压源等低功耗技术就是在这一 方面的具体实现。目前运用最广泛的降低功耗的方法是降低工作频率,包括门控时钟,使用流水 线技术降低工作频率以及自动变频技术等等。在减小负载电容或者门状态翻转率方面虽然已经有了 很多优化技术,但是由于缺乏e d a 上具的支持在实用化方面发展比较缓慢。 2 2 r t l 级低功耗优化 通过上一节对c m o s 电路功耗来源的分析可以知道:降低电路节点的状态翻转率可以降低功 耗。通过分析数字电路可以发现很多电路节点大部分时间在做无用的翻转:其状态的改变导致了局 边节点的跳变,但是其信息却没有被传递出去并被后续电路利_ l i 。这些无用的翻转造成了功耗的浪 费。如果预先阻止电路节点的无用翻转或者减少跳动频率高的节点对周边节点的影响就可以在不影 响电路功能的前提卜降低功耗。 r t l 级适合于减小电路节点翻转率方向的低功耗优化。首先,r t l 代码描述了电路中寄存器 与寄存器之间的rj 逻辑关系以及较高层次的算术单元调_ i ( 如加法器、乘法器等等) ,可以在这个层 次对门逻辑或算术单元进行调整、重组和隔离处理。其次,优化过程中修改的电路结构( 可能会改 变电路功能) 需要不断进行同归功能验证。在r t l 级做优化不需要涉及到布局布线甚至逻辑综合的 步骤从而缩短这一回归验证流程、加速设计结果收敛。再次,通过分析r t l 级电路各节点翻转信息 不但可以为优化过程提供参考而且可以较准确的评估优化工= 作的收益。最后使用h d l 描述r t l 级电路是现阶段数字电路设计的主流。综上所述,设计者可以在r t l 级通过减少电路节点翻转率来 优化电路的功耗。 对于数字逻辑设计者而言,r t l 级既是逻辑设计的起点也可以是低功耗优化的起点。 2 2 1 r t l 级低功耗优化方法 现阶段已经出现了众多的r t l 低功耗优化技术。包括逻辑重组、预计算,操作隔离等等。如何 将这些技术运用到实际设计中是一个有待解决的工程问题。相对于时钟管理和电源管理这类系统级 4 k i l 低功耗技术分析 的优化技术,r t l 级优化技术处理层次比较微观和细节化;单一的优化局部电路并不能取得显著的 效果必须对整个电路有针对性的使用各种优化技术才能获取满意的优化结果。所以,r t l 级的低 功耗优化必须要有e d a1 :具的协助。 传统的r t l 级低功耗优化工具采用静态的预测分析方法:从电路中搜索适合优化条件的电路结 构然后给出提示和优化指导。这种方法在提高优化的全面性同时又给了设计者一定的能动性( 设计者 最终决定是否修改以及如何修改) 。但是,这种方法只解决了优化对象充分性( 范围全面性) 的问题而 没有解决优化对象必要性的问题。一方面,并不是所有符合优化结构的电路都需要做优化;另一方 面。低功耗优化很可能带来时序和面积上的恶化。依靠设计者来决定是否优化具有一定的盲目性, 所以优化工具必须具有一定的判断和筛选能力同时为设计者提供相应的决策信息。一种改进的优化 方法是把动态功能仿真和静态电路分析结合起来。静态电路分析搜索出电路中所有适合低功耗优化 的候选对象;动态仿真提供电路在典型工作状况下各节点的翻转信息。工具或者设计者可以参照翻 转信息对候选对象进行筛选和做出优化决策。 本论文重点研究的是这种基于功能仿真的r t l 低功耗优化方法。实现这一方法有两大难点:寻 找优化候选电路和获取电路节点翻转信息。每一种r t l 低功耗优化技术都对应着特定的电路结构和 运用环境。下面一节将着重介妥 各种优化技术的特点及其对应的电路特征并且评估其是否适合于 r t l 级优化工具的实现。 2 2 2 r t l 级低功耗优化技术 r t l 级低功耗优化技术种类繁多,本节着重讨论几种常用的同时适合于编程实现的技术。这些 低功耗优化技术明包括:逻辑重组、减少伪跳变、预计算、操作隔离以及门控时钟。在结合实例介 绍这些低功耗技术的同时也讨论了其使用软件实现的可行性。 2 2 2 1 逻辑重组( 1 0 9 i cr e o r g a n i z a t i o n l 在保证逻辑功能一致的前提下重组和优化逻辑结构可以限制无效开关活动的传播范围,减少逻 辑门翻转次数。试分析逻辑函数:f = a b + b c + c d ,该式可以分解为两种等价形式: f = b ( a + c ) + c d 和 f = a b + c c o + d ) 假设信号b 的活动率较高,则图2 - 2 所示电路( a ) 中信号b 的变化将传播到所有的4 个门单元;如果 重新组织逻辑如电路则其变化只传播2 个逻辑门。显而易见,在消耗相同硬件资源的情况f 电路 ( b ) 比电路( a ) 节省功耗。 a c f 日b c d 一高活动率信号 ( a ) f = a b + c c o + d ) 低活动率信号 ( b ) f = ( a + c ) b + o d f 图2 - 2 逻辑重组限制开关活动率传播 问题的关键在于找出对其它信号影响大且活动率高的信号通过典型功能仿真我们可以获取电 路节点的翻转信息从而找出一个逻辑表达式中高活动率的信号;通过逻辑表达式解析可以分析信号 在逻辑表达式中的层次( 深度) 从而评估其影响的传播范围。如果一个信号不但活动率高而且所处逻 辑层次深,那么它就是一个适合于逻辑重组技术的优化对象 5 东南大学预t 学位论文 2 222 减少伪跳变( g l i t c hr e d u c t i o n ) 由于各个信号传播路径的差异导致了逻辑门的输出在最终稳定前会发生额外的翻转( 抖动) ,这 种抖动义会向下一级逻辑传播并带来更多的逻辑门抖动。逻辑门的抖动是无效的翻转必然带来功 耗的浪费。若门级网络的逻辑深度为n 那么这些伪跳变会以n 2 的速度增长【“j ,可见伪跳变产生的 功耗是不容忽视的。在图2 - 3 的中给出了相同功能不同结构的等价电路以及伪跳变对各自的功耗的 影响。文献 1 9 1 对其做了解释:不考虑g l i t c h 时由于结构l 公用了加法器,所以功耗较小;考虑g l i t c h 时。即使信号x 和y 没有g l i t c h 比较器的输出也会产生g l i t c h 。在结构1 中带g l i t c h 的比较器输出信 号使得两个多路选择器输出频繁变化从而导致加法器在稳定前做了许多无用计算,增加了功耗:而 在结构2 中比较器的输出信号不影响加法器所以反而消耗了较少的功耗。 功耗, 无g l i t c h :8 2 3 , 9 u w 有g i i l c h :1 6 5 0 2 u w 结构l 功耗: 无g l i 妇9 5 1 7 u w 有甜妊c k1 3 5 7 7 u w 结构2 图2 - 3 等价功能的不同实现结构:g l i t c h 的影响 分析两个电路可发现限制g l i t c h 信号的传播范围、减小其对大组合逻辑电路的影响可以节省功 耗。一个关键问题是如何确定r t l 级的g l i t c h 源。由于r t l 级无法考虑电路的连线延时,所以只 能从数据通路的平衡性角度来考虑g l i t c h 问题。文献【9 】给出了常用数据通路( 包含g l i t c h 的跳转总数 , 非除g l i t c h 的有效跳转数) 的g l i t c h 情况:减法器( 2 3 8 2 5 9 9 4 5 1 、小于比较器0 8 1 5 1 2 9 5 ) 、等于比 较器( 3 6 5 3 6 5 ) 、3 :1 多路选择器( 1 7 9 1 5 9 8 4 5 ) 。可以看到绝大多数数据通路由于结构不平衡都会产 生g l i t c h ,可以作为r t l 级的g l i t c h 源。图2 - 3 中电路对应的r t lh d l 语句为: i f ( x y ) z = c + d ;e l s ez = a + b ; 或者, z = ( x 厶i 豁:8 蒙霍藿黧咖 史 取警前模 一个实例 夏 结束 是 图3 - 6 函数a d d _ w a t c h n o d e o 算法流程 1 4 基于功能仿真的电路节点翻转信息提取 实例。默认情况下,算法把设计中的所有r e g i s t e r 和n e t 类璎对象作为监控对象。在处理每个实例 时,算法首先读取当前实例中的所有n e t 类氆对象并且依据其属性分别处理:然后读取当前实例中 的所有r e g i s t e r 类璎并且依据其属性分别处理。对于s c a l a r 属性的对象,算法直接为其和一个单位 存储空间建立对应联系;对于e x p a n d e d v e c t o r 属性的对象则先读取和分析其位宽信息然后分别为 每一位比特建立对应存储空间的联系:对于v e c t o r u n e x 4 m d e d v e c m r 属性的对象则建立其首位比特 和一个连续存储,空间首地址的对应联系。 函数i n i t i a ln o d ea r r a y l 0 和i n i t i a ln o d ea m y 2 0 用于初始化各个监控对象的信息空问f 其以 t m o r t n o d e 数据结构的形式保存) 。其中。函数i n i t i a ln o d ea r r a y l o 用于初始化目标属性为s c a l m r 和a c c e x p a n d e d v e c t o r 的线网型对象以及属性为s c a l a r 的寄存器型对象;函数i n i t i a ln o d ea r r a y 2 0 用 于初始化目标属性为u n e x p a n d e d v e c t o r 的线网型对象以及属性为v e c t o r 的寄存器璎对象。图3 7 给出了函数i n i t m ln o d ea r r a y 2 0 的代码。可以看到,对于多位宽的监控对象首先获取其线宽范围信 息。变量d i f 的绝对值a b s ( d i r ) 提供了监控对象的线宽值;变量d i r 的符号决定了监控对象线宽定义 的方式( 是a 1 0 :1 型,还是a 1 :l o 型) 。监控对象的信息保存在e f f o r t中。初始化内容包括监控array 对象的句柄、名称、逻辑值以及各种逻辑状态的保持时间及跳变次数等等 图3 - 7 初始化监控对象信息 3 3 2 v c l 数据处理函数 v c l 数据处理函数m o i lc o n s u m e o 用于更新和处理监控对象的信息。在本论文中所有的监控对 象共享同一个v c l 数据处理程序。当任何一个监控对象发生变化时,v c l 数据处理函数被调用。 数据处理函数首先读取值变记录( 值变记录结构tv cr e c o r d 格式) ,其中用户数据项( u s e r 的是保存当前监控对象信息的地址指针,然后调用函数u p d a t e _ a r r a y ( ) 根据地址指针读取当前监控 对象以tm o r ln o d e 数据结构保存的信息并且根据值变记录更新其内容根据v c l 监控对象值变 的特点区别处理不同属性对象的信息更新:对于s c a l a r 属性的对象,直接更新其值变信息:对于 非s c a l a r 属性的对象其值变信息以字符串链表的格式返回。每个字符表示一个比特位。v c l 数据 处理函数首先需要判断每一位比特是否发生值变然后再做相应的更新。通过读取读取值变记录中的 v ct 目a s o n 项见3 2 2 节) ,函数m o n 根据监控对象的类型做相应的处理。图3 - 8 给出了函数m o r tc o n s u m e 0 的算法流程。 图3 - 8m 伽c 嘲m e 0 函数流程图 函数u p d a t e ) 用于更新监控对象对虑的信息。监控对象信息以数据结构保存。 ( 详见 2 3 - 9 u p d a t e 监控对象的一位 比特需要做信息更新时,函数p a a t e 根据值变记录( t 提供的当前信息以及节点信_ a r r a y 0 v cr e c o r d ) 息记录( tm o l ln o d e ) 提供的历史信息更新节点纪录。函数首先读取当前监控对象上次值变的时刻, 再根据当前时刻计算出两次相邻值变的时间间隔,并且获取监控对象的当前逻辑值。然后,函数使 用相邻值变时间间隔更新当前监控对象的各种逻辑状态持续时问值f t 0 t t , t x ) 同时更新监控对象的 跳变次数( 卫c ) 。接着函数处理节点活跃期信息:如果值变时间间隔小于定义的门限值l j 建立一个 活跃期监控并且分配一个th o tj , e r i o d 数据结构的存储空问开始持续监控此对象跳变情况。一旦时 闻间隔开始大于门限值则取消当前监控对象的活跃期监控。最后函数更新当前对象最后一次值变 基于功能仿真的电路节点翻转信息提取 的时刻i c t i m 。 i 读取i :次对象值变时刻i c t i m 2 计算两次值变问隔t := c u r r e n tt i m e i c t i m 3 获取对象当前逻辑值c t l r _ v a h u e 3 3 3 辅助函数 图3 - 9 函数u p d a t e _ a r r a y 0 算法流程 辅助函数n l o nn 1 i s c 0 用于处理各种原因的系统调用,如结束编译、同步、仿真结束等等。具体 的调用原冈预定义详见( p l i ,0 u s e r g u i d e a n d r e f e r e n c e ) 第二章。当用户在v e r i u s e r c 文件中定义 函数m o nm i s c o 以后,各种各样的预定义调用原因都可以激活这个函数。模拟器传递给函数 m o nm i s c 0 - - 个整数以判断楚何种原因引起的调用。圈3 1 0 给出了函数m o nm i s c o 的算法流程。本 软件中辅助函数只用于监控仿真结束、输出节点信息结果文件。当h d l 代码中执行$ f m i s h 0 系统任 务时。仿真结束原因( r e a s f i n i s h ) 激发一次调用,辅助函数m o bm i s c 0 调用函数w r i t en o d ea r r a y 0 输出监控节点的状态翻转信息文件( 按照3 2 3 节定义的格式) ;当同步函数t fi s y n c h r o n i z e 0 被执行时 同步当前用户任务原因( r e a s o ns y n c h ) 激发一次调用。目前辅助函数对此原因暂不傲处理;其它原因 引起的调用,辅助函数打印出不支持的警告信息。 1 7 东南大学硬上学位论丈 图3 - l o 函数m m i s c 0 算法流程 在输出节点工作状态信息时。需要特别关注仿真时间和精度问题。在w a l o g 语言中使用编译 指令、t i m e s c a l e 来定义时延单位和时延精度。具体格式为:t i m e s c a l e 时延单位,时延精度。举例而言 如果定义t i m e s c a l el o l 耐1 ,则5 2 2 对应着5 2 n s ,而6 1 7 对戍着6 2 n s 如果定义f i m e s c a l cl m ) l o o p s , 则5 2 2 对应着5 2 硝,而6 1 7 对应着6 2 n s p l i 中调用玎和 函数可以分别获取时延单位和时延精度。这两g e t t i m e u n i t o t fg e r t i m e p r e c i s i o n o 个函数都返回一个整数值。整数值和时延单位及时延精度的部分对应关系如表3 2 所示。完整的对 应关系包括从l o o s 到l 矗共1 8 组。一个译码函数t i m e _ d e c o d e 0 被使用以实现对应关系的转换a 表3 2 整数值和时延单位及时延精度的对应关系 整数馕时延单位,耩度 21 0 0 s ll o s 0l s - 7i o o n s - 8l o n s _ 9i n s 1 0 l o o p s 1 l l o p s 1 2 i p s 值变记录中的v c _ h i g h t i m e 和v ci o w t i m e 用于提供当前仿真时刻,两者都是3 2 位的整数。 厂- 、厂l _ 、 脚 v c _ h i g h t i m e ii五vc_lowtime 璐。 图3 - l l 时间记录格式 t 8 图3 - ii 给出时问记录的格式,目前只使用到低3 2 位比特时间记录按照t i m e s c a l e 定义的时廷 单位和时延精度记录当前仿真时刻。例如,当定义t n e s c a l ei n s l o o p s 时。仿真精度为l o o p s ,仿真 时延5 0 0 6 ( 实际为5 0 0 6 n s ) 在v cl o w f i m e 中保存为5 0 0 6 ( 十进制形式) 。我们最后输出的信息应该以 时延单位0 b ) 为准应该修l e 为5 0 i n s 。如果定义f i m e s c a l ei o n s l o o p s ,则仿真时延5 0 0 “实际为 5 0 0 6 m ) 在v cl o w t i m e 中保存为5 0 0 6 0 ( 十进制形式) 我们最后输出的信息应该以时延单位( 璐为准, 应该修l e 为5 0 0 6 n s 。 如何参照时延单位和时延精度对v c 中的数据进行处理和修正?图312给出了结果文iowtime 件输出函数w r i t en o d ea r r a y ( ) 的f 作流程。首先,函数打印输出文件的标题信息以及当前系统的工 作信息。然后,函数获取当前仿真环境的时延单位tu n i t 和时延精度tp r e c i s i o n 。接着,对变量t 恤i t 作修l e :参照表3 - 2 ,同一时间单位组的修正为此组的单位时间对应的整数值。例如,- 7 修l e 为母( 对 应于l o o n s 修正为i n s ) il 修正为1 2 ( 对应于l o p s 修正为i p s ) 。再根据时延单位tu n i t 和时延精度 tp r e c i s i o n 之间的筹值判断在十进制f 两者之间的倍数换算关系t ts p a c e 处理当前节点的各种时问记录并输出到结果文件中例如,图3 1 2 中表达式: t op ;( ( m o n _ a r r a y t i f i m o + 5 ( t _ s p a c e 1 0 ) ) t _ s p a c t ) 用于处理节点状态叼咱g 保持时间f r 0 ) 。其中,5 ( t 图3 1 2 函数w r i t e _ n o d e _ a r r a y o i 作流程 1 9 东南大学硕士学位论文 3 4 用户版本仿真器的生成 当用户的p l i 函数完成后必须将其和模拟器集成到一起。用户的函数代码必须通过编译和链 接后才能被模拟器识别。集成后的用户版本模拟器才能够识别和执行用户的p l i 函数。用户可以通 过两种方式生成用户版本的仿真器:动态链接和静态链接。我们以静态链接方式为例介绍嗣户版 本仿真器生成的流程。 静态链接方式编译和链接用户p l i 函数和模拟器的目标模块然后刨建一套新的可执行文件,新 的可执行文件支持用户的函数。一旦用户p l i 函数发生变化,可执行文件必须要重新编译。为了静 态的链接用户p l ! 函数和模拟器v e f i l o g - x l ,需要先运行配置命令v c o n f i g 以生成一个创建新版本模 拟器的脚本文件。配置命令v c o n f i g 的操作如下: 1 当提示用户选择链接方式时,选择 种s t a t i cw i t hu s e r p l i a p p l i c a t i o n , 2 当提示用户输入v d iu s 既c 的路径时,选择默认值。 3 当提示用户输入v e r i u s e r c 的路径时输入用户修改后的此文件的路径。 4 当提示用户输入需要链接的用户文件时,输入所有用户p l i 程序文件、库文件以及相 关的目标文件。 一旦配置文件v c o n f l g 完成后。创建新版本模拟器的脚本文件仃被创建。脚本文件_vlogstatic c r 是一个可以直接运行的 脚本文件。脚本文件分两个步骤处理和创建新版本的模v l o g s t a t i cc - s h c i ! 拟器:首先,预编译用户的p l ic 源代码并且生成源代码的目标代码。然后,编译和链接所有相关 代码并且生成新版本模拟器v e r i l o g 。 源代码的编译和链接需要调用程序设计语言编译1 pc u n i xc 程序c c 。如果没有安装c c 编译器,可以用g u n c 编译器g c c 替代。 直接实行脚本文件c ry l o gs t a t i c 生成支持用户p l i 函数的新版本v e r i l o g - x l 模拟器v e r i l o g j i p 将模拟器命令v e r i l o gi p 的路径加入到 的 变量中就可以使用了 u n i xp a t h 图3 - 1 3 c rv l o gs t a t i c 脚本文件 基于功能仿真的电路节点翻转信息提取 3 5 转换节点信息文件到s a i f 文件 在3 2 3 节介绍了节点信息的交换格式。提取电路节点工作信息的工具软件以此交换格式保存并 输出节点1 二作信息。目前常用的用f 功耗分析的数据交换格式为s a i l :格式。一个s a i f 文件包含了 h d l 仿真器产生的电路节点翻转信息。这些翻转信息可以用于做功耗分析s a i f 文件分为前反标 文件和后反标文件。r t l 前反标文件列出了一个r t l 设计中逻辑综合后不变的节点,提供了设计的 r t l 的标识符到综合门级网表的标识符之间的映射。逻辑综合后不变的节点是指直接从r t l 描述映 射到等价的门级描述的设计对象( 如线网,端口等等) 具体的s a i l :格式可以参照文献【2 9 】。p e r i 语 言脚本g e n s a i f p l 用于实现节点信息文件到r t l 前反标文件的转换。以下是一个运用实例: 其中,v e r i l o g d a t 文件是电路节点跳变信息文件。l p 文件是基于由t文件生1p v m , o g s a i f v e r i l o g 成的格式的文件。图3 1 4 给出了格式文件 的主体部分。可_ 以_ l p s a i l :s a i f v e r i l o g看到。1 p s a i f s a i f 格式文件按照层次化结构记录了设计中各个实例( i n s t a l ) 的信号节点的状态信息以及跳变信息 图3 1 4s a i f 文件示例 2 1 东南大学碗上学位论文 4 1 概述 第四章r t l 源代码解析及功耗优化 r t l 源代码的低功耗优化部分主要包括两个方面内容:源代码的解析和低功耗优化( 技术) 算法 本章将着重描述这两个方面内容:使用解析程序提取r t lh d l 源代码中逻辑表达式的逻辑结构: 根据表达式的逻辑结构以及节点工作信息调用优化( 技术) 算法进行功耗优化。图4 1 给出了整个r t l 源代码优化处理流程。首先,对r t lh d l 源代码进行预处理,产生没有注释语句的代码以方便后 续的处理。然后,获墩整个设计的项层模块名以及备层次的调用关系,对这些信息傲进一步处理并 以一定的数据结构( 散列i n f o 息并以散列l o g i ct r e e 的结构保存。最后,优化( 技术) 算法根据表达式的逻辑结构以及功能仿真生 成的节点信息筛选出优化对象并且给出相应的优化策略。 读取源史件 “1 ”:“” ,嚣、i 顼赴学姘i v - 获取,处理设计信息 解析代码 上 : i逻辑霞组优化i i 预计算优化 li 优化结果文件 i 一 图4 - lr t li - i d l 源代码优化处理流程 节点信息结果文件 图4 1 处理流程中的无注释r t l 源代码由软件自己生成并且保存在零时文件夹中,以确保不改 变用户的原始代码。优化( 技术) 算法可以根据实际需要以功能模块的形式添加或者删除,不但便于 平衡运行效率和优化效果而且提高了整个处理流程的可扩展性。节点信息结果文件包含电路节点工 作跳变的信息,可以由第三章介绍的方法获取。包含节点信息结果文件的优化流程考虑到了电路的 动态工作信息,可以更加准确地筛选出需要优化的对象;不包含节点信息结果文件的优化流程给出 电路中所有适合低功耗优化的候选对象。 一口 r t l 源代码解析及功耗优化 4 2 数据结构定义 源代码解析和低功耗优化( 技术) 的算法中涉及到一些特殊用途的数据结构。这些数据结构以p e d 语言的形式定义,本节将具体介绍这些数据结构。具体的p e r l 语言语法请参照p e r l 洲2 2 a 3 1 4 2 1 操作符优先级散列 解析表达式时要考虑到逻辑,算术操作的优先级问题。根据v e r i l o g 语言规定的逻辑,算术操作优 先级。定义p e r l 语言中的一个散列o p e r a t o r _ l i s t 用于判断表达式中操作符的优先级- 其中,- ! * 和u 有相同且最高的优先级,一;一定义了最低的优先级。使用散列结构不但可以快速判断 操作符而且可以比较操作符的优先级。例如,语句d e f m e d ( $ c p a 砷) f j j s t $ c h w ) 可以判断s c h “是 否是一个操作符;语句$ o p c r a t 0 1 _ i 血“$ o p - $ o 脚r - l 缸 $ o p _ - d l y 返回操作符$ o p 和$ o p - d i y 的优 先级比较结果。 4 2 2 设计信息散列 一个设计的r t lh d l 源代码是按照层次化结构组织的并且各个模块的代码可能保存在不同的 文本文件中。需要对整个设计的模块层次化和调用关系进行收集和处理。定义散列i n f o _ a r r a y 用于 保存设计的信息。 其中,$

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论