指令集模拟器(Instruetion Set Simulator)是用来在一种体系结构的计算机上执行另一种体系结构计算机软件的程序。它用软件模拟目标机指令集体系结构的所有指令执行的功能,从而达到和在目标机上执行同样的功能和结果。本文介绍了用指...
详细信息
指令集模拟器(Instruetion Set Simulator)是用来在一种体系结构的计算机上执行另一种体系结构计算机软件的程序。它用软件模拟目标机指令集体系结构的所有指令执行的功能,从而达到和在目标机上执行同样的功能和结果。本文介绍了用指令集模拟器来模拟未来DSP内部的功能和DSP的指令以检测设计方案是否正确的技术。该技术通过用C++语言对指令集架构(ISA,Instruction set architecture)建模完成指令集模拟器的设计,并经过工程化的测试证明了其正确性。
指令集模拟器是开发可编程结构所必不可少的工具,特别是在SoC结构设计空间探索,早期系统设计验证和SoC软硬件协同设计等方面起着非常重要的作用。随着IC设计自动化程度的提高和芯片集成度的上升,验证工作的复杂度和工作量呈指数趋势上升。系统实现部分的RTL代码每多一倍,验证的工作量往往要增加到四倍甚至更大。传统验证方法的很多劣势在当前大规模的DSP处理器的验证中凸现出来,如何提高验证效率和节省验证代价成为一个新的挑战。本文为此提出一种验证方法,用C++语言建立的ISA模型搭建验证平台对每个模块进行独立的验证,系统集成后用SystemC建立ISA参考模型验证整个DSP核,测试矢量同时激励参考模型和RTL代码,通过比较两者的输出结果来定位故障,达到快速验证排错和故障定位的目标。本验证方案成功应用于中国电子科技集团第38研究所所开发的拥有自主知识产权的DSP处理器的设计中,提高了验证自动化及标准化水平,缩短了设计过程中验证的时间。该验证平台有良好的可重用性,为DSP开发提供了一套通用的验证环境和验证方法。
近些年来,伴随着国内集成电路技术和无线通信技术的不断演进,人们对基带芯片的性能与功耗提出了更高的要求。矢量数字信号处理器(VDSP,Vector Digital Signal Processor),相较于常规处理器拥有额外的矢量计算单元和针对基带功能优化的...
详细信息
近些年来,伴随着国内集成电路技术和无线通信技术的不断演进,人们对基带芯片的性能与功耗提出了更高的要求。矢量数字信号处理器(VDSP,Vector Digital Signal Processor),相较于常规处理器拥有额外的矢量计算单元和针对基带功能优化的专用指令集,使得其在无线通信领域具有极大的性能优势,因而成为国内外专家学者研究的焦点。然而针对VDSP的开发软件工具较少且多被国外垄断,使得国内硬件设计人员很难在设计初期验证处理器功能的正确性,应用研发人员也无法提前开发软件。因此急需研发一款仿真速度快、模拟精度高且针对VDSP开发的指令集模拟器。
本文针对项目中的VDSP,设计并实现了一款基于解释型模拟策略的指令精度(IA,Instruction Accuracy)级模拟器。该模拟器基于RISC-V(Reduced Instruction Set Computer-Five)指令集架构,通过C/C++语言对模拟功能进行模块化开发,并使用System C进行封装,使得其具备结构模块化、自定义指令易扩展、可视化调试界面等特点。论文主要的工作如下:首先对市面上的开源及商用模拟器进行了广泛调研,深入了解其设计理念及基本结构,为模拟器的功能开发作参考。通过对比解释型和编译型模拟策略的优劣,以确定指令集模拟器指令功能的实现方式。随后对目标VDSP的硬件结构和指令体系结构进行了详细讨论,分析了其对于模拟器的关键需求,决定采用模块化的方式对模拟器的功能进行实现,并给出了指令集模拟器的功能需求、总体结构及工作方式。根据设计思路,使用C/C++语言对处理器硬件结构进行模拟,实现了模拟器的内核,包含指令执行流程、自定义指令扩展、寄存器、存储器等单元。并构建输入输出接口模块,使得模拟器能够实现功能配置、可执行文件加载、远程调试等功能。最后通过构造顶层模块将所有功能模块进行整合,并使用System C将指令集模拟器进行封装,通过Socket的方式与外部调试器连接,实现可视化调试界面。
本文挑选了435条测试用例对指令集模拟器的功能和性能进行了验证。通过单步调试的方式对指令逐一执行,验证了模拟器指令行为、存储访问的正确性,以及调试器功能的正确性;通过CShell脚本语言自行搭建测试回归系统,对所有自定义指令功能进行了验证。并挑选部分测试用例对模拟器的性能进行测试,测试结果表明该指令集模拟器的性能在同类型的自研模拟器中处于较高水平,满足项目的性能要求,为验证人员和应用研发人员提供了可靠且高效的参考模型及软件研发平台。
暂无评论