基于MVTools的数字低功耗设计验证
张 尧zhangyao@ict.ac.cn
中国科学院计算技术研究所
摘要
随着设计复杂度的提高,功耗问题成为制约一款芯片成功实现的最重要的因素之一。大量的低功耗设计技术被用于芯片设计者所采用,如电源关断、多电压供电、动态电压频率调整等。随着越来越多的低功耗设计技术被采用,对于设计的验证也带来了许多新的问题。本文通过结合一款龙芯处理器的开发分析低功耗验证的重点和难点,并讨论如何通过使用Synopsys公司的MVTools完成验证目标。结果表明,MVTools能很好的结合低功耗设计并顺利完成验证工作。
Abstract
With the growing complex of the IC chip, power becomes one of the most important key concerns when designing a chip. Lots of the advanced low power technologies were introduced, like Power-gating, Multi-Voltage, DVFS, etc. With more and more technology is adopted, it will bring new challenges to our verifi cation of the design. This paper will show the challenges that being encountered during one the recent Loongson Processor’s development, and discuss on how to solve the verifi cation problems by using the Synopsys MVTools. The result shows that the MVTools can work well with the low power design and finish the verifi cation successfully.
1. 引言
随着微处理器设计技术和半导体制造工艺的进步,芯片的规模和复杂度急剧增大,超高的功耗密度对系统的稳定性造成很大影响,同时缩短了便携设备的电池使用时间,增加了芯片封装及散热的成本。图1为ITRS对片上系统的功耗预测图,可以看出随着
工艺的发展,功耗密度将继续增加,功耗壁垒已经成为提升微处理器性能的重大障碍之一。

图 1 SoC功耗趋势(来源ITRS2010)
集成电路的总功耗由静态功耗和动态功耗两部分组成。影响功耗的因素有很多,如工作电压,工作频率,工艺,温度等。为了降低芯片功耗,在设计时必须采用有效的低功耗设计技术。
传统的低功耗设计技术包括门控时钟(clock gating),多阈值电压库(multi-VT)。一些新式的低功耗设计技术(见图2)有多电压供电(multi-voltage),电源关断(power gating),动态电压频率调整(DVFS),低电压待机(low-VDD standby)等。

图 2 高级低功耗设计技术
随着芯片设计中采用越来越多的低功耗设计技术,芯片的结构复杂度随之增加,同时给验证工作带来了挑战,传统的验证只针对芯片设计的逻辑功能正确性,而采用低功耗设计技术后,芯片中加入了电压域的概念,不同的电压域之间可能会加入隔离单元(isolation cell)或电平转换器(level shifter),这些单元的缺失和不正确使用将使电路工作不正常,其次,对于电压域电源的开关,如果控制时序不正确,同样会导致芯片工作失效。除此之外,低功耗验证还有许多需要考虑的地方,所以低功耗验证是现代SoC设计中不可缺少的重要环节。
低功耗验证面临的电路失效一般有三种类型:
• 功能结构错误(Structural Errors),如隔离单元,电平移位器的错误,功能模块在错误的电压域等。
• 控制时序错误(Control Sequence Errors),如错误的控制信号,掉电上电控制时序错误等。
• 系统架构错误(Architectural Errors),如不正确的电源管理策略,此类错误需要在整体系统的联合验证中才能表现出来。
龙芯2H提供面向低成本电脑及嵌入式应用的单芯片解决方案,其中包含GS464处理器核,3D图形处理单元,高清媒体解码器,DDR2/3内存控制器,HT/PCIE总线控制器,并且包含SATA,USB,GMAC等一系列接口。图3为龙芯2H的功能框图。

图 3 龙芯2H SoC结构图
为了满足系统功耗要求,本项目采用多种低功耗设计技术,如power gating,DVFS等。运用了多种电压控制技术的设计方案提出了难度不断升高的验证挑战。所以要顺利地完成一款多电压域芯片的验证工作,需要有先进的验证工具配合,而SYNOPSYS公司的MVTools为低功耗验证提供了一个很好的解决方案。
2. Synopsys低功耗验证解决方案
Synopsys为低功耗验证提供了基于MVTools的解决方案,可以很好的解决传统验证工具无法适应的低功耗验证难点。MVTools主要包含MVSIM和MVRC两个工具,分别完成动态仿真和静态验证两个工作。MVTools支持基于UPF的低功耗设计流程,可以很好的与低功耗设计联系起来,与业界其它低功耗验证工具相比,MVTools有着很大的优势。

图 4 Synopsys低功耗验证解决方案
多电压设计方案要求对所有功率状态,功率转换和次序进行验证。功率控制的设计还要求对各电压进行精确的解释。任何一点错误都可能导致设计进入不确定的状态下,并导致设计方案死锁或功能混乱。传统的仿真不能解释各种电压波形的本质,也不能为所有电压控制方案提供全面的覆盖。而MVSIM是一款voltage-aware的协仿真器,这款仿真器能够完整地理解电压的波形本质,并让工程师能够全面地验证各种与功率管理相关的多种电压控制技术在设计中行为的正确性。MVSIM的主要特色和优点有:
• 全面覆盖所有的多电压设计技术,节省调试时间,降低产品成本。
• 完整地理解行业标准统一电源格式(UPF,IEEE-P1801)所表达的功率设计意图,能够对各类多电压设计技术进行全面的覆盖。
• 真正的voltage-aware仿真,可对各类电源部件进行voltage-aware建模,如调压器、电平转换器以及功率开关,提高功率验证的精确程度。
• 自动内嵌断言,能够降低未检测到错误而带来的风险,并缩短验证时间,提升精确性。
设计方案需要在从RTL阶段到网表阶段之间随着设计进度进行验证。在设计方案的每一个阶段,都必须对功率实施方案进行验证,检测其是否符合功率设计意图。哪怕只有一项错误也会使设计处于不确定状态而导致整个芯片的故障。MVRC是一款voltageaware的静态检测器产品,可供工程师快速验证各种为实现功率管理而运用了多种电压控制技术的设计方案。此外,MVRC还能够从系统架构(architectural)以及结构(structural)的全局视角验证保护电路是否得到正确实施。MVRC的主要特色和优点有:
• 无需构建测试平台就能快速查找出功率管理方面的错误,从而缩短了设计验证用时。
• 能够对设计方案的功率体系架构进行验证。
• 验证跨越多个电压岛的控制信号网络的完整性。
• 根据功率设计意图执行结构检测,检查保护单元在逻辑电路方面及功率连线之中的错误。
• 自动推导出采用层次化功率管理的设计方案的功率状态表。
3. 基于MVSIM的动态仿真验证
3.1 MVSIM验证流程
图5展示了MVSIM验证的运行流程,与传统RTL仿真验证相比,源文件增加了UPF设计,用来对设计的电源信息进行描述。编译过程先通过MVCMP对设计进行编译,然后MVDBGEN将产生一个包含电源信息的数据库,MVSIM和VCS通过该数据库进行仿真。该步骤会在apdb/ev/EXTERNAL的目录下产生一些RTL设计代码,这些代码中添加了一些信号,仿真时是对这些文件进行仿真。

图 5 MVSIM验证流程
一般利用VCS+MVSIM验证的运行脚本为:
mvcmp -upf
mvcmp -sv ${ARCHPRO_ROOT}/templates/upf_package.
sv \
-f fi le.list
mvdbgen-top top_module
vcs +vpi -load “libmvsim-vcs.so:mvsimInit” \
-P /templates/mvsim_vcs.tab \
-f apdb/ev/vcs_options_1 -f ./apdb/ev/cmdfi le_1
在运行前,需要对archpro.ini文件进行简单配置。比较重要的一些选项有UPF_ON_OFF, SIMULATION_MODE等,在不同的验证阶段(RTL,Gate-level Netlist)时需要设置到相应的选项值,才能获得准确的仿真结果。
3.2 Power-Gating功能验证
降低功耗最直观的思想就是在不需要电路工作时把它的电源关掉,同时随着集成电路工艺的发展,静态功耗占总功耗的比例也在增加,传统的门控时钟策略已经不能完全满足电路降低功耗的需求,所以设计中加入门控电源策略,将不使用的模块电源关闭,达到降低功耗的目的。有两种关断电源的方式,一种是外部关断,通过发送控制命令对系统PCB上的电源芯片进行开关控制;另一种是内部关断,这种方法控制起来更加灵活,内部模块电路通过一个电源开关网络连接到供电电源上,电源开关网络是由一个很大数量的CMOS开关阵列,控制着电路与VDD或VSS的连通与关断,开关网络通过门控电源控制器控制。图6展示了一般门控电源设计的结构框图。

图 6 门控电源结构图
对门控电源进行验证仿真,需利用UPF对门控电源开关进行建模,其中掉电上电指示可以通过延时确定,也可以通过门控电源开关的ACK信号确定,在UPF中,可设置ACK信号的延时,单位为仿真的时间分辨率。
create_power_switch power_switch \
-domain PD_XX \
-input_supply_port {VIN VIN} \
-output_supply_port {VOUT VOUT} \
-control_port {power_reqn power_reqn} \
-on_state {XX_ON VOUT {power_reqn}} \
-off_state {XX_OFF {!power_reqn}}
-ack_port {power_ack powr_ack} \
-ack_delay {power_ack 20000}
UPF中除了电源开关,还应对隔离单元进行设置,并且要在电源状态表中加入该电压域的状态信息。
门控电源设计的验证重点是控制区域的掉电和上电时信号的时序关系及低功耗状态时保护单元的应用是否正确。图7展示了一种掉电和上电过程各控制信号的时序关系。对于门控电源设计隔离单元的隔离值需要考虑,对于某些低电平有效的信号可能需要隔离到值“1”,隔离值需要根据具体设计设置。

图 7 门控电源掉电上电时序图
通过上述分析,对于门控电源我们的验证目标有以下几条:
• 能否正常进入低功耗状态,掉电时信号时序是否正确。
• 进入低功耗状态后,保护单元状态是否正确,是否有隔离值错误的隔离单元,是否还有其它上电区域进入掉电区域的信号还在变化。
• 电路是否能正常启动,启动后电路是否能正常工作
• 电源控制单元状态机各跳转条件覆盖完全,相关各种配置状态覆盖。
图8是利用MVSIM对门控电源设计的仿真波形图,掉电后门控电源区域的信号变为X,表示掉电,可以看到,隔离单元工作正常,上电掉电时序正常。

图 8 门控电源仿真波形
3.3 Multi-Voltage设计验证
上述门控电源技术可以同时减少动态功耗和静态功耗,但是该技术是基于功能模块在运行上具有时间间隔性,对于处理器核来说,大部分情况下会有负载,只是负载程度随时间不同而不同,减少动态功耗最有效的方法之一是动态电压频率调整(DVFS),该技术根据负载程度不同,实时更新处理器的电压和频率值,从而在满足计算需求的前提下降低功耗。图9为DVFS控制的结构图。对于DVFS的验证,需要创建一个模拟主板上数字可调的开关电源模块,该模块可以很容易通过使用MVSIM中的几个supply函数创建。电压值为real格式,通过数字VID控制电压值。

图 9 DVFS系统结构图
DVFS系统的电压频率调整时序是设计关键,对于提升系统性能的调整,首先应调节电压上升至设定值,然后再调整频率到一个更快的值;与之相反,对于降低系统性能的调整,首先调整频率到一个较低的值,然后再降低电压到相应设定值。其次,电平转换器(level shifter)的放置也不能错误,电压范围不正确的电平转换器会使系统在某些状态条件下无法正常工作。
根据上述分析,DVFS系统的验证目标有:
• DVFS系统电压频率调整状态机的时序,提升性能和降低性能的状态都要覆盖到。
• level shifter的电压转换范围确认。
• 各种DVFS的配置状态需要覆盖完全。
图10为DVFS状态转换的波形图,可以通过波形看出电压频率随相应测试激励而变化,图中显示的是一个降压降频的过程,状态机控制先进行降频操作,然后进行降压操作,可以观察到电压和频率的变化,DVFS控制信号的时序满足设计规范。

图 10 DVFS转换时序波形
3.4 MVSIM仿真总结t
由于MVSIM是一款可以识别电压信息的仿真器,所以在低功耗动态仿真中可以更真实的模拟电路的运行情况,从而发现在传统验证中无法或很难发现的问题。
在使用MVSIM仿真的过程中,由于许多模型(如PLL等)有以下类似的语句:
initial begin
xx_signal = 1’b0;
#200;
xx_signal = 1’b1;
end
这种情况下,如果时刻0该模块所在电压域未上电或者该电压域掉电后重新上电,信号xx_signal无法实现设计时序,信号保持x状态,导致该模型无法正常工作。后在solvnet上找到解决方法。
在archpro.ini文件中的[MV]类别中,有专门针对于掉电后上电时需要re-initialization的模块选项:
reinit_modules = < list of modules for Initial block reval >
在列表中的模块在该电压域重新上电后会重新初始化,这样相关仿真模型的行为不会发生错误。
4. 基于MVRC的静态功能检查
4.1 MVRC验证流程
图11为MVRC进行静态仿真的流程图,其中前两部分与MVSIM仿真基本一致,通过mvcmp和mvdbgen产生低功耗仿真数据库。
在mvdbgen时,如果数据库用来进行MVRC仿真,按照文档说明,最好加上-rc编译选项。

图 11 MVRC验证流程
4.2 MVRC检查的错误类型
MVRC检查UPF的一致性,通过分析PST推导出所需的保护单元(ISO/LS),然后与UPF中定义的保护单元相比较,判断UPF的设计是否存在问题,如缺失ISO/LS,或者有冗余的ISO/LS,这一步一般在RTL验证阶段使用,验证UPF正确性。
report_protection –critique
检查架构(Architecture)问题,如重要的信号(时钟,复位及其相关使能信号等)是否穿过关断电压域等问题。这部分验证可以在RTL,Gate-Netlist及PG-Netlist阶段进行。
report_architechture –island_order \
[-signal ]
检查结构(Structure)问题,检查电路中ISO/LS的实现与UPF及其PST是否一致,即保护单元实现是否完整和正确。这部分验证只在Gate-Netlist阶段使用。
report_protection –intent
4.3 验证流程与结果分析
一般在RTL阶段,使用以下命令脚本:
#Read the MV Database
read_db
#UPF critique and Power Architecture Checks
report_protection -critique -no_design_checks -severity WARNING
#Micro-architecture checks
report_architecture -island_order -signal
其中所有的report_xx可替换成check_xx,可以得到不同的报告格式。MVRC的使用比较方便,运行完程序后直接分析输出报告即可。
5. 结论及建议
随着现代SoC设计应用越来越多低功耗技术,传统的验证手段已经不能满足要求,本文通过结合实际项目开发过程,分析了Synopsys的MVTools工具在低功耗验证中的重要作用,在验证过程中,找出了一些传统验证工具很难发现的问题,大大加速了项目的验证速度,最终完成验证目标。
6. 致谢
在完成项目的验证过程中,得到了课题组许多同事的大力支持,在此对他们表示感谢。同时,也要感谢Synopsys的时昕工程师,给我们提出了很多宝贵的建议与支持。
7. 参考文献
[1] Michael Keating et al. Low Power Methodology Manual For System-on-Chip Design
[2] Srikanth Jadcherla et al. Verifi cation Methodology Manual for Low Power
[3] https://solvnet.synopsys.com/
[4] Synopsys Low Power Verfi cation Tools Suite User Guide
[5] Weiwu Hu et al., “The Godson Processor: its research, development, and contributions,” Journal of Computer Science and Technology, vol. 26, no. 3, pp. 363-372, 2011



