Arm Community
Site
Search
User
Site
Search
User
Groups
Education Hub
Distinguished Ambassadors
Open Source Software and Platforms
Research Collaboration and Enablement
Forums
AI and ML forum
Architectures and Processors forum
Arm Development Platforms forum
Arm Development Studio forum
Arm Virtual Hardware forum
Automotive forum
Compilers and Libraries forum
Graphics, Gaming, and VR forum
High Performance Computing (HPC) forum
Infrastructure Solutions forum
Internet of Things (IoT) forum
Keil forum
Morello forum
Operating Systems forum
SoC Design and Simulation forum
SystemReady Forum
Blogs
AI and ML blog
Announcements
Architectures and Processors blog
Automotive blog
Graphics, Gaming, and VR blog
High Performance Computing (HPC) blog
Infrastructure Solutions blog
Internet of Things (IoT) blog
Operating Systems blog
SoC Design and Simulation blog
Tools, Software and IDEs blog
Support
Arm Support Services
Documentation
Downloads
Training
Arm Approved program
Arm Design Reviews
Community Help
More
Cancel
Community Management
Archive
中文社区
Jump...
Cancel
中文社区
中文社区博客
使用SystemC Cycle Model与HDL仿真
Blogs
视频和文件
Members
Mentions
Sub-Groups
Tags
Jump...
Cancel
New
中文社区 requires membership for participation - click to join
More blogs in 中文社区
ARM中国大学计划博客
Arm新闻
中文mbed博客
中文社区博客
恩智浦汽车电子MCU讨论区博客
Tags
synopsys
EDA & tools
Cadence Design Systems
arm cycle models
Mentor Graphics Corporation
Verification
Verification Technology
SoC Verification
Actions
RSS
More
Cancel
Related blog posts
Related forum threads
使用SystemC Cycle Model与HDL仿真
feng
February 1, 2018
1 minute read time.
原文链接:
https://community.arm.com/soc/b/blog/posts/using-systemc-cycle-models-with-hdl-simulation
Arm Cycle Model提供SystemC仿真支持。这些模型可以从
ARM IP Exchange
获取,也可以用户使用
Arm Cycle Model Studio
(CMS)自己创建(非ArmIP)。模型可以运行在
Accellera
的
SystemC开源仿真环境
,也可以运行在EDA供应商如
Cadence, Mentor, and Synopsys
的仿真器中。两种情形下,
Arm Cycle Model均需要runtime license,但用户可以自由选择最适合自己的SystemC仿真器。很多时候,与其他RTL仿真集成或者复用已有的System Verilog TestBench对验证工作非常有用。
本文试图阐述如果使用
Cycle Model Studio
创建一个简单的SystemC 模型,并使用流行的EDA仿真器把模型运行在一个Verilog testbench中。目的为了说明在混合语言仿真中使用Cycle Model并非难事。过去,Cycle Model与Verilog HDL混合仿真需要用到
Verilog PLI (Programming Language Interface) 或DPI (Direct Programming Interface)接口,但如今所有的RTL仿真器都很容易的支持混合语言仿真,且性能更好。
示例使用一个CMS已有的叫
twocounter的例子,是一个带两个独立计数器的简单Verilog模块。附件
twocounter-cm-hdl.tgz,包括Cycle Model创建和HDL及test bench在EDA仿真器中仿真需要的所有部件,还包括一个支持在任一仿真器运行混合仿真的简单脚本。可以作为集成SystemC Cycle Model到更大仿真工程的参照。
环境
建立
首先解压文件到一个新目录,本示例除了EDA仿真器没有任何外部依赖。
$ tar xvfz twocounter-cm-hdl.tgz
例子包含两个路径:
cm/ 目录包括Verilog源码与编译Cycle Model的脚本。使用CMS的cbuild生成Cycle Model。
testbench/目录包括Verilog testbench和编译运行EDA仿真的脚本。
确认EDA仿真器和license配置好即可,不需要额外的环境变量支持。
确认HDL仿真工作
第一步最好确认所有HDL版本正确,仿真器工作正常。可以在testbench/目录下运行run.sh脚本选择仿真器使用:
Cadence Incisive:
$ ./run.sh ius-hdl
Mentor Questa:
$ ./run.sh mti-hdl
Synopsys VCS:
$ ./run.sh vcs-hdl
不加参数执行脚本可以看到支持的选项。“-hdl”表示只仿真HDL,不包含Cycle Model。
如果执行无误,将会有输出通过
testbench的tb.v中
$monitor声明来打印信息。 从而确认EDA仿真器配置运行没有问题,下一步,就可以编译
SystemC Cycle Model来替换
twocounter.v。
生成
Cycle Model
生成
Cycle Model请指向cm/目录,build-cm.sh脚本会启动cbuild来编译模型。会有生成如下结果:
模型被创建在gcc/目录下
SystemC wrapper也创建好
仅执行脚本编译模型即可:
$ ./build-cm.sh
SystemC wrapper创建生成文件
twocounter.cpp and twocounter.h。
除了wrapper,
gcc/libtwocounter.a 和 gcc/libtwocounter.h两个文件也需要集成到EDA仿真中。
SystemC wrapper通过“
carbon systemCWrapper gcc/libtwocounter.io.db
”命令生成,该命令从模型.io.db文件中提取信息并写到
SystemC wrapper文件里。
编译与运行Cycle Model仿真
可以使用任一EDA仿真器,先退回到testbench/目录下。
这次使用run.sh脚本与下面任一参数来选择仿真器, SystemC wrapper编译,相同的twocounter模块被例化在testbench中,但注意使用的是SystemC模型不是Verilog模型。testbench不用任何修改,因为任何仿真器都透明的支持混合语言设计。
各个仿真器的选项如下:
$ cd testbench/
Cadence Incisive:
$ ./run.sh ius
Mentor Questa:
$ ./run.sh mti
Synopsys VCS
$ ./run.sh vcs
仿真和之前运行结果相同,但是其中
twocounter模块
使用SystemC Cycle Model。
波形导出与仿真器GUI
上述脚本可以通过+VCD选项支持生成波形。
$ ./run.sh vcs +VCD
运行生成一个VCD文件dump.vcd,可以使用任何VCD波形图示工具打开。
每个仿真器也可以通过脚本加如下参数启动GUI模式:
Incisive SimVision GUI:
$ ./run.sh ius -gui
Mentor Quest GUI:
$ ./run.sh mti -gui
VCS DVE GUI:
$ ./run.sh vcs -gui
一种方式来比较纯HDL与SystemC Cycle Model是使用SimVision GUI。 纯HDL仿真,tb与twocounter在Design Browser中都是灰色来表示Verilog。
使用SystemC Cycle Model时,twocounter会显示为绿色标识SystemC。 将counter0送到Source Browser中可以秀出两种情形下verilog和SystemC的代码。
总结
ARM SystemC Cycle Models提供了ARM IP(通过
IP Exchange
)和用户IP的另一种仿真途径。而当许多时候验证极为迫切又需要服用已有仿真testbench时,使用EDA仿真器会很有用。通过
IP Exchange
配置生成的SystemC Cycle Models也提供了单纯使用RTL仿真器额外的功能,比如PMU统计等等。同时也会有越来越多模型加入CADI调试接口以支持软件调试。EDA仿真器对Verilog与SystemC混合仿真的灵活支持也时Cycle Model在很多验证任务中更有用处,譬如可以应用到一个锁定的CPU子系统,避免不变的Verilog IP在整个项目中重复编译。
twocounter-cm-hdl.tgz
Parents
Song Bin 宋斌
over 6 years ago
多谢分享,我加个图
Cancel
Up
0
Down
Reply
More
Cancel
feng
over 6 years ago
in reply to
Song Bin 宋斌
多谢多谢。
Cancel
Up
0
Down
Reply
More
Cancel
Comment
feng
over 6 years ago
in reply to
Song Bin 宋斌
多谢多谢。
Cancel
Up
0
Down
Reply
More
Cancel
Children
No Data
中文社区博客
Arm A-Profile构架2022扩展
Zenon Xiu (修志龙)
原文:
Arm A-Profile Architecture Developments 2022 - Architectures and Processors blog - Arm Community blogs - Arm Community
作者:Martin Weidmann翻译:修志龙(Zenon Xiu) 与arm构架授权和生态伙伴一起,arm持续演进其构架,开发新功能以满足现有和新市场的要求…
October 17, 2022
深入理解 Arm A-profile的non-maskable interrupt -NMI
Zenon Xiu (修志龙)
原文:
https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/a-profile-non-maskable-interrupts
翻译: 修志龙 Zenon Xiu Arm A-profile构架一个长久以来的局限性是:缺乏对non-maskable interrupt (NMI…
August 24, 2022
Arm A-Profile 构架2021扩展
Zenon Xiu (修志龙)
原文:
https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/arm-a-profile-architecture-developments-2021
Martin Weidmann
September 8, 2021 翻译注释:Zenon Xiu Arm与arm构架授权公司及生态伙伴一起…
August 17, 2022