基于SystemC与RTL的带功耗管理模型的联合仿真环境
📑 目录
- 1. 
- 2. 
- 3. 
- 4. 
- 5. 
- 6. 
- 7. 
- 8. 
- 9. 
- 10. 
基于SystemC与RTL的带功耗管理模型的联合仿真环境
作者: Thai Minh Nguyen, Renesas Design Vietnam Co., Ltd.
会议: SNUG Singapore 2008
页数: 10
源文件: SNUG_2008_Singapore_Mills_SystemC_and_RTL_CoSimulation_environment_with_Power_Management_paper.pdf
Page 1
基于SystemC与RTL的带功耗管理模型的联合仿真环境
Thai Minh Nguyen Renesas Design Vietnam Co., Ltd. thaiminh.nguyen@rvc.renesas.com
摘要
性能与功耗之间的权衡是当今SoC 系统级芯片的基本需求。合理应用动态功耗管理 DPM可以在不降低性能的前提下减少功耗。
DMS(Dynamic Module Stop,动态模块停止 DMS)通过根据模块状态自动调整提供给模块的时钟来执行功耗管理。本文展示了如何开发和验证Verilog DMS模型,并展示了在SystemC虚拟平台环境中通过使用VCS联合仿真(Co-simulation)功能进行功耗和性能评估的结果。
Page 2
目录
1.0 引言 2.0 联合仿真概述 3.0 DMS模型规格 3.1 DMS模型概述 3.1.1 功能特性 3.1.2 接口 3.1.3 位置 3.2 DMS模型功能 3.2.1 基本功能 3.2.2 调试功能 3.3 如何通过DMS模型结果确定实际设计中的DMS规格 4.0 DMS Verilog模型开发 4.1 为什么需要DMS Verilog模型 4.2 DMS Verilog模型验证环境 4.3 开发和验证Verilog模型的难点 4.3.1 设计Verilog模型的难点 4.3.2 SystemC与Verilog之间的通信 5.0 DMS Verilog模型应用结果 6.0 对未来功能的期望 6.1 对VCS和其他仿真器的期望 6.2 对其他仿真器的期望 7.0 结论 8.0 致谢 9.0 参考文献
图表目录
图1:DMS的输入/输出端口 图2:DMS在SoC虚拟平台中的位置 图3:等待周期与惩罚周期 图4:评估报告示例 图5:功耗与性能分析 图6:选择的等待周期数较小 图7:选择的等待周期数较大
Page 3
1.0 引言
如今,SoC 系统级芯片变得越来越复杂。设计人员必须关注许多副作用,例如芯片尺寸、软件复杂度以及另一个重要因素——功耗。为了防止实际芯片功耗规格不达标,设计人员必须在设计的早期阶段就考虑这一问题。
作为移动产品的自然需求,产品必须支持大量功能、长电池续航和小尺寸。设计人员必须同时考虑提升设备功能和降低设计功耗。这些特性是帮助设计赢得市场竞争的关键因素。
在移动产品的实际应用中,某些应用并非始终处于活动状态,有些硬件模块也不会被使用。当某个模块未被使用时,可以将其停止以节省功耗。DMS(动态模块停止)模块正是基于上述降低功耗的思想而设计的。该模块根据每个硬件模块的状态控制提供给它们的时钟。
由于停止模块的机制会影响SoC的性能,因此必须考虑时钟停止机制以满足每个产品的性能需求。因此,需要通过DMS模型在虚拟平台中对时钟供给调整机制进行仿真,以找到最适合每个设计的机制。
基于SystemC模型的设计允许设计人员创建仿真真实SoC行为的虚拟平台。规格的可靠性可以在此平台上得到评估,软件也可以基于虚拟平台进行开发。SystemC和C语言是高抽象层次语言,因此设计人员可以对虚拟平台进行参数化,以便有效复用并生成信息丰富的评估报告。
本文将讨论DMS模型——一种功耗和性能优化模型。该模型将帮助设计人员评估和确定实际设计中真实功耗管理模块的规格。
我们利用VCS的联合仿真功能来验证该模型,因为缺乏统一的语言环境。我们将在本文中分享一些使用VCS联合仿真的经验。
2.0 联合仿真概述
联合仿真 Co-Simulation能够对同时使用Verilog和SystemC描述的混合环境进行仿真。联合仿真器的存在将开启许多提高SoC设计生产力的解决方案。
- 复用现有的Verilog RTL 寄存器传输级设计或验证环境,以开发用SystemC编写的更高层次的设计或模型。 - 创建新的C或SystemC测试平台来验证RTL设计。使用C/SystemC测试平台,设计人员可以在开发时间和C/SystemC语言的高抽象描述能力方面获得优势。 - 设计人员可以利用Verilog或VHDL编写的RTL设计以及C语言编写的软件进行早期系统测试。
Page 4
3.0 DMS模型规格
3.1 DMS模型概述
3.1.1 功能特性
DMS模型支持以下两种功能:
- 真实DMS的基本功能,即控制提供给连接在系统总线上的模块的时钟。 - 生成用于功耗和性能分析的评估报告。
3.1.2 接口
DMS接口包括两个输入信号——时钟信号(clk)和请求信号(req),以及两个输出信号——门控时钟信号(gated_clk)和门控请求信号(gated_req),如图1所示。
3.1.3 位置
DMS模型放置于系统总线与所连接模块之间的接口处,如图2所示。
3.2 DMS模型功能
3.2.1 基本功能
DMS模型的基本功能即真实DMS模块的原始功能。该功能是基于模块的状态控制提供给模块或总线的时钟。基本功能的具体行为如下:
- 当某个模块在一定时间(等待周期)后未被访问时,停止向该模块提供时钟以节省功耗。提供给所连接模块的时钟即为gated_clk,如图3所示。
Page 5
- 当gated_req有效且gated_clk激活后,已停止的模块将完全恢复活动状态。自req信号有效起,经过一定的时钟周期(惩罚周期)后,gated_clk和gated_req才会被激活。
3.2.2 调试功能
DMS模型支持用户调试功能。这些功能将帮助用户轻松探索各种规格并检查评估结果。
a) 可配置的规格
该模型的规格可以通过外部文件轻松调整。如果用户想要更改模型的设置(例如更改等待周期数),只需修改配置文件即可。这种参数化将帮助设计人员减少大量开发时间。
b) 评估报告生成与预测
DMS模型将在一个文本文件中生成仿真执行结果的摘要,其中包含以下信息:
- 虚拟平台在一种典型DMS设置下的实际执行结果。 - 对其他具有不同DMS设置的虚拟平台执行结果的预测。
图4展示了一个评估报告输出的示例。该报告包含多种DMS等待周期数设置的评估结果。用户可以从这些结果中选择适合实际DMS的等待周期数。
惩罚周期数反映了对性能的影响。如果该数值较大,意味着性能将大幅下降,因为所连接模块的处理在某些惩罚周期中被延迟。设计人员必须考虑减小该数值以达到高性能目标。
时钟门控比率表示在总仿真周期中时钟被门控(停止)的周期所占的百分比。这也意味着如果时钟供给由DMS模型控制,可以节省多少功耗。在实际SoC中,设计目标是通过实际DMS实现高时钟门控比率以降低功耗。
时钟门控比率 = 总门控时钟周期 / 总时钟周期
Page 6
3.3 如何通过DMS模型结果确定实际设计中的DMS规格
DMS模型为所有连接的模块生成调试信息。每个模块可以由DMS模型以不同的等待周期数设置进行控制。设计人员将对评估结果进行分析,然后为SoC中实际DMS模块的每个模块决定合适的等待周期数值。如果实际DMS配置了合适的等待周期数,所连接模块将具有较小的惩罚周期数和较高的时钟门控比率。
图5展示了根据图4中评估报告输出的功耗与性能之间的权衡关系。从该图中可以看出,如果将等待周期数设置为16,时钟门控比率将达到90.1%,总惩罚周期数为215(占最大惩罚周期数的68.7%)。如果某个模块对功耗和性能没有特殊要求,则等待周期数16是较好的设置,因为它可以在较高的时钟门控比率和较少的惩罚周期之间取得平衡。
Page 7
根据SoC特定应用中每个实际模块的需求,设计人员可以选择相应的等待周期数以达成目标。例如,如果某个模块不需要高性能但需要节省功耗,则较小的等待计数器值适合该模块。
4.0 DMS Verilog模型开发
4.1 为什么需要DMS Verilog模型
最初,DMS模型采用SystemC开发并连接到SystemC虚拟平台。该虚拟平台由系统级设计人员使用,用于评估SoC的硬件性能。之后,由于以下原因,还需要面向Verilog-RTL环境的DMS模型:
- 基于SystemC模型的设计越来越流行,但RTL 寄存器传输级设计仍然是当前主流的设计方法学。RTL级设计包含大量设计资源,如仿真环境、测试向量。如果DMS能够在此环境中运行,我们可以复用现有RTL设计环境中庞大的验证资源来评估新一代SoC。 - 某些SoC设计尚不具备等效的SystemC虚拟平台来进行功耗和性能评估。它们需要将DMS应用于RTL-Verilog仿真环境。
因此,DMS不仅适用于SystemC环境,对Verilog RTL仿真环境也非常有用。为了支持面向RTL Verilog环境的DMS模型,我们有两种解决方案:
- 将SystemC模型连接到Verilog环境 - 提供一个用Verilog编写的DMS模型
当然,用户可以在其RTL仿真中使用SystemC版本的DMS。如果用户想将SystemC模型集成到Verilog仿真环境中,他们需要修改当前环境以支持联合仿真。但许多用户由于以下原因不希望更改当前的仿真环境:
- 修改仿真环境所需的时间 - 需要更换当前仿真器 - 仿真变得更复杂,他们希望专注于设计而非处理联合仿真 - 联合仿真环境下仿真时间会增加
为了规避以上缺点,用户同时需要DMS的Verilog模型和SystemC模型。最终,如果DMS拥有SystemC和Verilog两个版本,其应用范围将得到扩展,设计资源也能得到节省。
Page 8
4.2 DMS Verilog模型验证环境
DMS Verilog模型的验证无需Verilog测试平台。该Verilog模型必须通过SystemC虚拟平台和联合仿真器进行验证。我们使用VCS 2006.06.SP1-8-E1版本来搭建验证环境,因为它支持联合仿真功能。
首先需要解决的问题是如何将DMS Verilog模型连接到SystemC测试平台。VCS支持用户通过vlogan命令为Verilog模块创建封装器(wrapper)以及与SystemC部分的接口。
vlogan -cpp g++ -sysc -sc_model dmstp dmstp.v +lint=PCWM -sverilog
创建封装器后,仿真环境通过syscsim命令进行编译。
syscsim -cpp g++ -cc gcc -sysc -timescale=1ns/1ps -debug_pp ini_test_module.cpp tgt_test_module.cpp
4.3 开发和验证Verilog模型的难点
4.3.1 设计Verilog模型的难点
DMS模型需要记录对目标模块(即时钟供给由DMS模型控制的模块)的所有请求信息。这一功能很难用Verilog实现。我们使用了一些SystemVerilog语法来实现此功能。使用了打包结构体的动态数组及其方法(如push_back()和size())来存储和访问未知数量的请求信息。这些语法被VCS所支持。由于一些用户的仿真器不支持动态大小的打包结构体,因此转而使用分离的动态大小简单数组。
4.3.2 SystemC与Verilog之间的通信
在利用VCS联合仿真支持功能验证DMS模型时,遇到了以下问题:
- 变量的交叉引用: 目前,SystemC的变量无法通过层次化路径访问。数据只能通过端口信号在SystemC和Verilog之间传递。
- 从SystemC测试平台调用Verilog任务和函数: DMS的某些调试功能(如导出性能信息的功能)是通过Verilog任务来执行的。当Verilog DMS在联合仿真环境中验证时,这些任务不能直接从SystemC测试平台调用,只能通过SystemC测试平台经由端口信号发送的事件来触发。
- DPI(直接编程接口)任务和函数必须由用户手动声明:
VCS仅支持用户自动生成封装器和接口。用户必须像使用SystemVerilog的DPI特性一样,手动声明将从SystemC测试平台调用的任务和函数。以下步骤展示了如何声明DPI任务和函数:
- 在Verilog源代码和SystemC源代码中声明导出任务。
- 调用syscan命令声明导入任务/函数:
syscan -export_DPI DmsDumpPerformance
Page 9
由于VCS不支持用户分析和导出DPI任务和函数,存在很多不便之处。特别是当任务和函数的数量非常大时,很容易出现人为错误。
5.0 DMS Verilog模型应用结果
在成功搭建联合仿真环境后,DMS Verilog模型通过虚拟平台及其测试向量进行了验证。以下选取了一些典型结果来说明DMS Verilog模型如何为SoC规格的考量做出贡献。
图6展示了连接DMS Verilog模型的某个模块的功耗和性能评估结果。该模块要求实现高性能操作,即必须具有较少的惩罚周期。选择的较优等待计数器值为2。因为如果增加等待周期数,时钟比率会下降,但惩罚周期数仍然很高。
图7展示了需要实现低功耗的模块的评估结果。选择的较优等待周期数为128,因为此时惩罚周期数较少,且时钟门控比率可接受。
Page 10
如果包含DMS模型的RTL Verilog设计在各种激励下进行评估,将生成大量有用的功耗和性能信息。通过这些评估收集到的数据将反馈给设计人员,以优化设计的功耗和性能规格。
6.0 对未来功能的期望
6.1 对VCS和其他仿真器的期望
在联合仿真环境下开发和验证Verilog模型时存在一些不足。希望VCS联合仿真功能能够提供以下特性:
- SystemC部分的变量可以从Verilog部分访问,反之亦然。 - 可以通过实例层次化路径从SystemC调用Verilog任务和函数。 - 仿真器能够自动分析和声明DPI任务。
6.2 对其他仿真器的期望
VCS支持了一些非常有用的SystemVerilog描述,这对于描述与总线事务相关的某些功能至关重要,例如动态大小的结构体数组。期望其他仿真器也能支持此类SystemVerilog描述,以帮助用户更容易地实现或使用他们的SystemVerilog模型。
7.0 结论
DMS模型不仅对SoC硬件规格的评估和优化具有重要意义,而且对设计方法学也有价值,因为它引入并证明了系统级设计的优势。
联合仿真功能使系统级设计更加高效,因为设计人员可以通过复用系统级设计的输出来减少RTL验证的时间和资源,反之亦然。尽管存在一些导致用户困扰的局限性,联合仿真仍可以有效地应用于模型开发中,如我们的DMS模型。
8.0 致谢
我要特别感谢Yoshio Takamine先生和Masashi Watanabe先生(Renesas Technology Corp.)提供的宝贵意见与建议。此外,非常感谢Tuan Minh Tu先生(Renesas Design Vietnam Co., Ltd.)对本文的反馈。最后,感谢RVC的管理层,特别是Masateru Murakami先生的大力鼓励和支持。
9.0 参考文献
[1] "VCS User Guide" (Version 2006.06-SP1)
[2] "IEEE Standard for SystemVerilog - Unified Hardware Design, Specification, and Verification Language" (IEEE standard 1800TM-2005)
图片索引
本文共 30 张图片,存放于 SNUG_2008_Singapore_Mills_SystemC_and_RTL_CoSimulation_environment_with_Power_Management_paper_images/ 目录。
Page 1:p1_1_08ff4db6.png, p1_2_9fd25215.png, p1_3_847e0947.png Page 2:p2_1_08ff4db6.png, p2_2_9fd25215.png, p2_3_847e0947.png Page 3:p3_1_08ff4db6.png, p3_2_9fd25215.png, p3_3_847e0947.png Page 4:p4_1_08ff4db6.png, p4_2_9fd25215.png, p4_3_847e0947.png Page 5:p5_1_08ff4db6.png, p5_2_9fd25215.png, p5_3_847e0947.png Page 6:p6_1_08ff4db6.png, p6_2_9fd25215.png, p6_3_847e0947.png Page 7:p7_1_08ff4db6.png, p7_2_9fd25215.png, p7_3_847e0947.png Page 8:p8_1_08ff4db6.png, p8_2_9fd25215.png, p8_3_847e0947.png Page 9:p9_1_08ff4db6.png, p9_2_9fd25215.png, p9_3_847e0947.png Page 10:p10_1_08ff4db6.png, p10_2_9fd25215.png, p10_3_847e0947.png