OVPsim: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Dexbot (talk | contribs)
m Bot: Deprecating Template:Cite doi and some minor fixes
The name does not appear to be SHOUTED IN ALL CAPS.
 
(42 intermediate revisions by 25 users not shown)
Line 2: Line 2:
{{Infobox software
{{Infobox software
| name = OVPsim
| name = OVPsim
| developer = Imperas
| developer = [[Imperas]]
| latest release version = 20150901.0
| latest release version = 20231026.0
| latest release date = {{release date and age|df=yes|2015|08|26}}
| latest release date = {{release date and age|df=yes|2023|10|26}}
| operating system = [[Microsoft Windows|Windows]], [[Linux]]
| operating system = [[Microsoft Windows|Windows]], [[Linux]]
| genre = [[Emulator]]
| genre = [[Emulator]]
Line 11: Line 11:
}}
}}


'''OVPsim''' is a [[multiprocessor]] [[Computing platform|platform]] [[emulator]] (often called a [[full system simulation|full-system simulator]]) used to run unchanged production binaries of the target hardware. OVPsim uses dynamic [[binary translation]] technology to achieve high simulation speeds. It has public [[API]]s allowing users to create their own [[central processing unit|processor]], [[peripheral]] and platform models. Various models are available as open source.<ref name="ovpworldlibrary" /> OVPsim is a key component of the Open Virtual Platforms initiative (OVP),<ref name="ovpworld" /> an organization created to promote the use of open virtual platforms for embedded software development. OVPSim requires OVP registration to download.
'''OVPsim''' is a [[multiprocessor]] [[Computing platform|platform]] [[emulator]] (often called a [[full system simulation|full-system simulator]]) used to run unchanged production binaries of the target hardware. It has public [[API]]s allowing users to create their own [[central processing unit|processor]], [[peripheral]] and platform models. Various models are available as open source.<ref name="ovpworldlibrary" /> OVPsim is a key component of the Open Virtual Platforms initiative (OVP),<ref name="ovpworld" /> an organization created to promote the use of open virtual platforms for embedded software development. OVPsim requires OVP registration to download.


== Licensing ==
== Licensing ==


OVPsim is developed and maintained by Imperas.<ref name="Imperas" /> The core simulation platform is [[proprietary software]]; it is available [[gratis|free of charge]] for non-commercial usage,. Commercial usage requires a low-cost license from Imperas to cover maintenance.
OVPsim is developed and maintained by [[Imperas]].<ref name="Imperas" /> The core simulation platform is [[proprietary software]]; it is available free of charge for non-commercial usage. Commercial usage requires a low-cost license from Imperas to cover maintenance.
Various processor, [[peripheral]] and platform models are available as [[free software]] under the [[Apache License|Apache License version 2.0]].
Various processor, [[peripheral]] and platform models are available as [[free software]] under the [[Apache License|Apache License version 2.0]].


== Details ==
== Details ==


There are three main components of OVP: [[open source]] models, fast OVPsim simulator, and modeling [[Application programming interface|APIs]]. These components are designed to make it easy to assemble multi-core heterogeneous or homogeneous platforms with complex memory hierarchies, cache systems and layers of embedded software that can run at hundreds of MIPS on standard desktop PCs.
There are three main components of OVP: [[open-source model]]s, fast OVPsim simulator, and modeling [[Application programming interface|APIs]]. These components are designed to make it easy to assemble multi-core heterogeneous or homogeneous platforms with complex memory hierarchies, cache systems and layers of embedded software that can run at hundreds of MIPS on standard desktop PCs.
OVPSim is considered [[Instruction set simulator|instruction accurate]], but not cycle-accurate.
OVPSim is considered [[Instruction set simulator|instruction accurate]], but not cycle-accurate.
There are many examples of components, and complete virtual platforms that can boot a [[Linux]] Kernel in under 5 seconds at OVP Homepage.
There are many examples of components, and complete virtual platforms that can boot a [[Linux]] Kernel in under 5 seconds at OVP Homepage.
Line 26: Line 26:
== Open source models ==
== Open source models ==


Within OVP there are several different model categories. These models are provided as both pre-compiled object code, and as in some cases, source files. OVPsim no longer supplies source code for the ARM and MIPS processor models. Currently there are processor models of [[ARM architecture|ARM]] (processors using the ARMv4, ARMv5, ARMv6, ARMv7, ARMv8 instruction sets) up to the ARM Cortex-A57MPx4, [[Imagination_Technologies|Imagination]] [[MIPS architecture|MIPS]] (processors using [[MIPS32]], [[MIPS64]], and microMIPS instruction sets) up to the microAptiv, interAptiv, and proAptiv cores, Synopsys [[ARC (processor)|Virage]] ARC600/ARC700, Renesas [[Renesas Electronics V850|v850]] and m16c, [[PowerPC]], [[Nios_II|Altera Nios II]], [[MicroBlaze|Xilinx MicroBlaze]] and [[OpenRISC|OpenRisc]] families. There are also models of many different types of system components including RAM, ROM, cache, and bridge. There are peripheral models such as Ethernet MAC, USB, DMA, UART, and FIFO. Several different pre-built platforms are available, including the most common operating systems<ref name="MIPSLinux" /> [[Uclinux|ucLinux]], [[Linux]], [[Android (operating system)|Android]], [[FreeRTOS]], [[Nucleus RTOS|Nucleus]], Micrum.
Within OVP there are several different model categories. These models are provided as both pre-compiled object code, and as in some cases, source files. OVPsim no longer supplies source code for the ARM and MIPS processor models. Currently there are processor models of [[ARM architecture|ARM]] (processors using the ARMv4, ARMv5, ARMv6, ARMv7, ARMv8 instruction sets) up to the ARM Cortex-A72MPx4 (and including multi-cluster ARMv8 models with GICv3), [[Imagination Technologies|Imagination]] [[MIPS architecture|MIPS]] (processors using [[MIPS32]], [[MIPS64]], microMIPS, nanoMIPS and MIPS R6 instruction sets) up to the microAptiv, interAptiv, proAptiv, and Warrior cores, [[Synopsys]] [[ARC (processor)|Virage]] ARC600/ARC700 and ARC EM series, Renesas [[Renesas Electronics V850|v850]], RH850, RL78 and m16c, [[PowerPC]], [[Nios II|Altera Nios II]], [[MicroBlaze|Xilinx MicroBlaze]], [[RISC-V architecture|RISC-V]] (models using 32bit RV32I, RV32M, RV32IM, RV32A, RV32IMA, RV32IMAC, RV32F, RV32D, RV32E, RV32EC, RV32C, RV32G, RV32GC, RV32GCN, RV32IMAFD and 64bit RV64I, RV64M, RV64IMAC, RV64F, RV64D, RV64C, RV64G, RV64GC, RV64GCN, RV64IMAFD ISA subsets), Andes Technology N25/NX25, N25F/NX25F, A25/AX25, A25F/AX25F, [[Microsemi]] CoreRISCV/MiV-RV32IMA, [[SiFive]] E31, E51, U54, U54-MC, Freedom U540, [[Codasip]] Series 1, 3, 5, 7 RISC-V cores, Intel NiosV RISC-V core, Texas Instruments TMS320 DSP, and [[OpenRISC|OpenRisc]] families. The OpenHW Group uses OVPsim as the golden reference for their open source RISC-V CV32E40 and CV32E20 cores. There are also models of many different types of system components including RAM, ROM, cache, and bridge. There are peripheral models such as Ethernet MAC, USB, DMA, UART, and FIFO. Several different pre-built platforms are available, including the most common operating systems<ref name="MIPSLinux" /> [[Uclinux|ucLinux]], [[Linux]], [[Android (operating system)|Android]], [[FreeRTOS]], [[Nucleus RTOS|Nucleus]], Micrium.


One of the main uses of the OVP simulation infrastructure is the ability to create and simulate custom built models—either from scratch, or by using one of the open source models as a starting point. The OVP APIs are tailored to different model types: processors, behavioral models of peripherals, and platforms. There are over 100 source model variants available to download.
One of the main uses of the OVP simulation infrastructure is the ability to create and simulate custom built models—either from scratch, or by using one of the open source models as a starting point. The OVP APIs are tailored to different model types: processors, behavioral models of peripherals, and platforms. There are over 100 source model variants available to download.
Line 32: Line 32:
== OVPsim simulator ==
== OVPsim simulator ==


The OVPsim is available as an OVP reference and is free for non-commercial usage. The simulator uses dynamic [[binary translation]] technology to achieve very high simulation speeds. More than a billion simulated instructions per second is possible, in some cases on regular desktop PC machines. OVPsim is available for [[x86]] Windows and [[Linux]] hosts.
The OVPsim simulator is available as an OVP reference and is free for non-commercial usage. The simulator uses dynamic [[binary translation]] technology to achieve very high simulation speeds. More than a billion simulated instructions per second is possible, in some cases on regular desktop PC machines. OVPsim is available for [[x86]] Windows and [[Linux]] hosts.


OVPsim comes with a [[Gdb|GDB]] RSP interface to allow applications running on simulated processors to be debugged with any standard debugger that supports this GDB RSP interface.
OVPsim comes with a [[Gdb|GDB]] RSP (Remote Serial Protocol) interface to allow applications running on simulated processors to be debugged with any standard debugger that supports this GDB RSP interface. OVPsim comes with the Imperas iGui Graphical Debugger and also an Eclipse IDE and CDT interface.


OVPsim can be encapsulated and called from within other simulation environments<ref name="CadenceZynq" /> and comes as standard with interface files for [[C (programming language)|C]], [[C++]], and [[SystemC]].<ref name="SysC" /> OVPsim includes native SystemC [[Transaction-level modeling|TLM]]2.0 interface files. It is also possible to encapsulate legacy models of processors and behavioral models so that they can be used by OVPsim.
OVPsim can be encapsulated and called from within other simulation environments<ref name="CadenceZynq" /> and comes as standard with interface files for [[C (programming language)|C]], [[C++]], and [[SystemC]].<ref name="SysC" /> OVPsim includes native SystemC [[Transaction-level modeling|TLM]]2.0 interface files. It is also possible to encapsulate legacy models of processors and behavioral models so that they can be used by OVPsim.
Line 40: Line 40:
== Modeling APIs ==
== Modeling APIs ==


OVP models are created using [[C (programming language)|C]]/[[C++]] [[Application programming interface|APIs]]. There are three main APIs: ICM, VMI, BHM/PPM.
OVP models are created using [[C (programming language)|C]]/[[C++]] [[Application programming interface|APIs]]. There are three main APIs: OP, VMI, BHM/PPM.


=== ICM ===
=== OP ===


The ICM API is designed for controlling, connecting, and observing platforms. This API can be called from C, C++, or SystemC. The platform provides the basic structure of the design and creates, connects, and configures the components. The platform also specifies the address mapping, and software that is loaded on the processors. It is very easy with ICM to specify very complex and complete platforms of many different processors, local and shared memories, caches, bus bridges, peripherals and all their complex address maps, interrupts and operating systems and application software.
The OP API is designed for controlling, connecting, and observing platforms. This API can be called from C, C++, or SystemC. The platform provides the basic structure of the design and creates, connects, and configures the components. The platform also specifies the address mapping, and software that is loaded on the processors. It is very easy with OP to specify very complex and complete platforms of many different processors, local and shared memories, caches, bus bridges, peripherals and all their complex address maps, interrupts and operating systems and application software.

The OP API superseded the ICM API during 2016. The ICM API is still usable for older platforms.


=== VMI ===
=== VMI ===
Line 54: Line 56:
Behavioral components, peripherals, and the overall environment is modeled using C code and calls to these two APIs. Underlying these APIs is an event based scheduling mechanism to enable modeling of time, events, and concurrency. Peripheral models provide callbacks that are called when the application software running on processors modeled in the platform access memory locations where the peripheral is enabled.
Behavioral components, peripherals, and the overall environment is modeled using C code and calls to these two APIs. Underlying these APIs is an event based scheduling mechanism to enable modeling of time, events, and concurrency. Peripheral models provide callbacks that are called when the application software running on processors modeled in the platform access memory locations where the peripheral is enabled.


== Who is using OVPsim ==
== Users ==


OVPsim is being used by multiple educational establishments to provide a simulation infrastructure for the research of parallel compute platforms,<ref name="mpsimulation" /><ref name="GPUAcceleration" /> hardware software co-design,<ref name="NewHWSWCoDesign" /> performance analysis of embedded systems,<ref name="powerestimation" /> and as the basis of other embedded tool developments.<ref name="validationSimAOVPSim" /> It is also leveraged for educational courses to allow students to develop and debug application software and create virtual platforms and new models.
OVPsim is being used by multiple educational establishments to provide a simulation infrastructure for the research of [[parallel computing]] platforms,<ref name="mpsimulation" /><ref name="GPUAcceleration" /> hardware/software co-design,<ref name="NewHWSWCoDesign" /> performance analysis of embedded systems,<ref name="powerestimation" /> and as the basis of other embedded tool developments.{{cn|date=June 2019}} It is also leveraged for educational courses to allow students to develop and debug application software and create virtual platforms and new models.


A number of leading commercial organizations also use OVPSim as the basis of their product offerings. The technology was licensed by MIPS<ref name="MIPSBloomberg" /> Technologies to provide modeling support for their [[MIPS architecture]] embedded processor range, features in a partnership with leading processor provider ARM,<ref name="ARM" /><ref name="ARM2" /> and is part of the Europractice<ref name="EuroPractice" /> product range for general access to European universities. Leading Semiconductor companies such as Renesas have used the simulator for its processor development work, as disclosed in leading electronic industry publications.<ref name="Renesas" /> It was selected by NEPHRON+, an EU research project, for its software and test development environment.<ref>{{cite news |last1=Maxfield |first1=Clive |date=May 15, 2012 |title=Open Virtual Platforms Selected by EU research project |work=[[EE Times]] |url=http://www.eetimes.com/document.asp?doc_id=1261752 |accessdate=2013-08-30}}</ref>
A number of leading commercial organizations also use OVPsim as the basis of their product offerings. The technology was licensed by MIPS<ref name="MIPSBloomberg" /> Technologies to provide modeling support for their [[MIPS architecture]] embedded processor range, features in a partnership with leading processor provider ARM,<ref name="ARM" /><ref name="ARM2" /> and is part of the Europractice<ref name="EuroPractice" /> product range for general access to European universities. A version of OVPsim is used by the [[RISC-V]] Foundation's Compliance Working Group<ref name="RISCVComplianceWorkingGroup" /> as a reference simulator. Leading Semiconductor companies such as Renesas have used the simulator for its processor development work, as disclosed in leading electronic industry publications.<ref name="Renesas" /> It was selected by NEPHRON+, an EU research project, for its software and test development environment.<ref>{{cite news |last1=Maxfield |first1=Clive |date=May 15, 2012 |title=Open Virtual Platforms Selected by EU research project |work=[[EE Times]] }}</ref>
VinChip Systems Inc. of [[Chennai]], India used OpenOCD and OVPsim to develop what may be the first 32-bit processor developed in India.<ref>{{cite news |title='First' India-developed 32-bit processor debuts |date=24 Jun 2009 |work=EE Times-India |url=http://www.eetindia.co.in/ART_8800576459_1800012_NP_94053ac2.HTM |quote=... VinChip Systems Inc. has released ..., which it claims is the first 32-bit processor to be developed in India. ... Support for virtual prototyping has been provided by the ... OVPsim simulator ...}}</ref>
VinChip Systems Inc. of [[Chennai]], India used OpenOCD and OVPsim to develop what may be the first 32-bit processor developed in India.<ref>{{cite news |title='First' India-developed 32-bit processor debuts |date=24 Jun 2009 |work=EE Times-India |quote=... VinChip Systems Inc. has released ..., which it claims is the first 32-bit processor to be developed in India. ... Support for virtual prototyping has been provided by the ... OVPsim simulator ...}}</ref>
The OVP models and virtual platforms form the basis for other activities being undertaken by Imperas.
The OVP models and virtual platforms form the basis for other activities being undertaken by Imperas.


== References ==
== References ==
{{Portal|Free software}}
{{Portal|Free and open-source software}}
{{Reflist|30em|refs=<ref name="ovpworldlibrary">{{cite web|url=http://www.ovpworld.org/library |title=Open Virtual Platforms Component Library |publisher=Ovpworld.org |date=2012-11-21 |accessdate=2013-05-08}}</ref><ref name="ovpworld">{{cite web|url=http://www.ovpworld.org |title=Open Virtual Platforms |publisher=Ovpworld.org |date=2012-11-21 |accessdate=2013-05-08}}</ref><ref name="Imperas">{{cite web|url=http://www.imperas.com |title=Imperas |publisher=Imperas |date=2008-07-02 |accessdate=2013-09-10}}</ref><ref name="MIPSLinux">{{cite web|url=http://www.linux-mips.org/wiki/OVPsim |title=MIPS Linux |publisher=Linux MIPS |date=2008-11-24 |accessdate=2013-09-10}}</ref><ref name="CadenceZynq">{{cite web|url=http://www.cadence.com/products/sd/virtual_system_Xilinx_Zynq/pages/default.aspx |title=Cadence Zynq |publisher=Cadence |date=2010-04-02 |accessdate=2013-09-10}}</ref><ref name="SysC">{{cite web|url=http://www.systemc-cpu-models.org/2010/02/17/there-could-be-value-in-the-imperas-models|title=There Could Be Value In The Imperas Models |publisher=SystemC.org |date=2010-02-17 |accessdate=2013-09-19}}</ref><ref name="mpsimulation">{{cite web|url=http://vdtt.iitd.ac.in/Research/projects/thesis/jvl072170.pdf |title=Hybrid Simulation Framework for Virtual Prototyping Using OVP, SystemC & SCMLEducation |publisher=vdtt.iitd.ac.in |date=2009-01-11 |accessdate=2013-05-09}}</ref><ref name="powerestimation">{{cite web|url=http://www.embedded.com/electrical-engineer-community/general/4403475/Using-OVPSim-for-the-power-estimation-of-complex-RISC-based-platforms |title=Using OVPSim for the power estimation of complex RISC based platforms |publisher=www.embedded.com |date=2012-12-16 |accessdate=2013-05-08}}</ref><ref name="validationSimAOVPSim">{{cite journal |last1=Ranka |first1=G. K. |last2=Jain |first2=M. K. |date=June 2011
{{Reflist|30em|refs=<ref name="ovpworldlibrary">{{cite web|url=http://www.ovpworld.org/library |title=Open Virtual Platforms Component Library |publisher=Ovpworld.org |date=2012-11-21 |accessdate=2013-05-08}}</ref><ref name="ovpworld">{{cite web|url=http://www.ovpworld.org |title=Open Virtual Platforms |publisher=Ovpworld.org |date=2012-11-21 |accessdate=2013-05-08}}</ref><ref name="Imperas">{{cite web|url=http://www.imperas.com |title=Imperas |publisher=Imperas |date=2008-07-02 |accessdate=2013-09-10}}</ref><ref name="MIPSLinux">{{cite web|url=http://www.linux-mips.org/wiki/OVPsim |title=MIPS Linux |publisher=Linux MIPS |date=2008-11-24 |accessdate=2013-09-10}}</ref><ref name="CadenceZynq">{{cite web|url=http://www.cadence.com/products/sd/virtual_system_Xilinx_Zynq/pages/default.aspx |title=Cadence Zynq |publisher=Cadence |date=2010-04-02 |accessdate=2013-09-10}}</ref><ref name="SysC">{{cite web|url=http://www.systemc-cpu-models.org/2010/02/17/there-could-be-value-in-the-imperas-models|title=There Could Be Value In The Imperas Models |publisher=SystemC.org |date=2010-02-17 |accessdate=2013-09-19}}</ref><ref name="mpsimulation">{{cite web|url=http://vdtt.iitd.ac.in/Research/projects/thesis/jvl072170.pdf |title=Hybrid Simulation Framework for Virtual Prototyping Using OVP, SystemC & SCMLEducation |publisher=vdtt.iitd.ac.in |date=2009-01-11 |accessdate=2013-05-09}}</ref><ref name="powerestimation">{{cite web|url=http://www.embedded.com/electrical-engineer-community/general/4403475/Using-OVPSim-for-the-power-estimation-of-complex-RISC-based-platforms |title=Using OVPsim for the power estimation of complex RISC based platforms |publisher=www.embedded.com |date=2012-12-16 |accessdate=2013-05-08}}</ref><ref name="NewHWSWCoDesign">{{Cite conference| last1 = Nita | first1 = I.| last2 = Lazarescu | first2 = V.| last3 = Constantinescu | first3 = R.| doi = 10.1109/ISSCS.2009.5206089| chapter = A new Hw/Sw co-design method for multiprocessor system on chip applications| title = 2009 International Symposium on Signals, Circuits and Systems| pages = 1–4| year = 2009| isbn = 978-1-4244-3785-6}}</ref><ref name="GPUAcceleration">{{Cite conference | last1 = Pinto | first1 = C.| last2 = Raghav | first2 = S.| last3 = Marongiu | first3 = A.| last4 = Ruggiero | first4 = M.| last5 = Atienza | first5 = D.| last6 = Benini | first6 = L.| chapter = GPGPU-Accelerated Parallel and Fast Simulation of Thousand-Core Platforms| doi = 10.1109/CCGrid.2011.64| title = 2011 11th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing| pages = 53–62| year = 2011| isbn = 978-1-4577-0129-0| url = http://infoscience.epfl.ch/record/164471/files/CCGRID2011-pinto_et_al.pdf}}</ref><ref name="MIPSBloomberg">{{cite web|url= https://www.bloomberg.com/apps/news?pid=newsarchive&sid=aspVre4f9T7E |title=MIPS Technologies Signs License to Distribute OEM Version of the Imperas OVP Simulator |publisher=Bloomberg.com |date=2011-02-24 |accessdate=2013-06-26}}</ref><ref name="ARM">{{cite web|url=http://www.arm.com/community/partners/display_product/rw/ProductId/6288/ |title=OVPsim by Imperas Software Ltd |publisher=ARM Connected Community |date=2012-01-01 |accessdate=2013-06-26}}</ref><ref name="ARM2">{{cite web|url=http://www.eetimes.com/document.asp?doc_id=1261443 |title=Imperas Preps Fast Models of ARM Cortex-A15 Processor |publisher=EETimes |date=2012-03-08 |accessdate=2013-09-19}}</ref><ref name="EuroPractice">{{cite web|url=http://www.europractice.stfc.ac.uk/vendors/OVP_Overview_Datasheet.pdf |title=Europractice OVPsim Datasheet |publisher=EuroPractice |date=2012-11-10 |accessdate=2013-09-10}}</ref><ref name="Renesas">{{cite web|url=http://automotive-eetimes.com/en/processor-models-aid-automotive-software-testing.html?cmp_id=7&news_id=222901846 |title=Processor Models Aid Automotive Software Testing |publisher=EETimes |date=2011-10-14 |accessdate=2013-09-10}}</ref>
<ref name="RISCVComplianceWorkingGroup">{{cite web|url=https://github.com/riscv/riscv-compliance |title=RISC-V Compliance Working Group |publisher=riscv.org |date=2018-06-06 |accessdate=2018-06-06}}</ref>
|title=A Validation of Sim-A using OVPSim |journal=Journal of Global Research in Computer Science |volume=2 |issue=6 |pages=93–100 |url=http://www.jgrcs.info/index.php/jgrcs/article/view/64 |accessdate=2013-06-26}}</ref><ref name="NewHWSWCoDesign">{{Cite conference| last1 = Nita | first1 = I.| last2 = Lazarescu | first2 = V.| last3 = Constantinescu | first3 = R.| doi = 10.1109/ISSCS.2009.5206089| chapter = A new Hw/Sw co-design method for multiprocessor system on chip applications| title = 2009 International Symposium on Signals, Circuits and Systems| pages = 1–4| year = 2009| isbn = 978-1-4244-3785-6}}</ref><ref name="GPUAcceleration">{{Cite conference | last1 = Pinto | first1 = C.| last2 = Raghav | first2 = S.| last3 = Marongiu | first3 = A.| last4 = Ruggiero | first4 = M.| last5 = Atienza | first5 = D.| last6 = Benini | first6 = L.| chapter = GPGPU-Accelerated Parallel and Fast Simulation of Thousand-Core Platforms| doi = 10.1109/CCGrid.2011.64| title = 2011 11th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing| pages = 53–62| year = 2011| isbn = 978-1-4577-0129-0| url = http://infoscience.epfl.ch/record/164471/files/CCGRID2011-pinto_et_al.pdf}}</ref><ref name="MIPSBloomberg">{{cite web|url= http://www.bloomberg.com/apps/news?pid=newsarchive&sid=aspVre4f9T7E |title=MIPS Technologies Signs License to Distribute OEM Version of the Imperas OVP Simulator |publisher=Bloomberg.com |date=2011-02-24 |accessdate=2013-06-26}}</ref><ref name="ARM">{{cite web|url=http://www.arm.com/community/partners/display_product/rw/ProductId/6288/ |title=OVPsim by Imperas Software Ltd |publisher=ARM Connected Community |date=2012-01-01 |accessdate=2013-06-26}}</ref><ref name="ARM2">{{cite web|url=http://www.eetimes.com/document.asp?doc_id=1261443 |title=Imperas Preps Fast Models of ARM Cortex-A15 Processor |publisher=EETimes |date=2012-03-08 |accessdate=2013-09-19}}</ref><ref name="EuroPractice">{{cite web|url=http://www.europractice.stfc.ac.uk/vendors/OVP_Overview_Datasheet.pdf |title=Europractice OVPsim Datasheet |publisher=EuroPractice |date=2012-11-10 |accessdate=2013-09-10}}</ref><ref name="Renesas">{{cite web|url=http://automotive-eetimes.com/en/processor-models-aid-automotive-software-testing.html?cmp_id=7&news_id=222901846 |title=Processor Models Aid Automotive Software Testing |publisher=EETimes |date=2011-10-14 |accessdate=2013-09-10}}</ref>
}}
}}


Line 75: Line 77:
* [http://www.europractice.stfc.ac.uk/software/imperas.html Europractice]
* [http://www.europractice.stfc.ac.uk/software/imperas.html Europractice]


{{DEFAULTSORT:Ovpsim}}
[[Category:Virtualization software]]
[[Category:Virtualization software]]
[[Category:Windows emulation software]]
[[Category:Windows emulation software]]

Latest revision as of 08:00, 1 December 2023

OVPsim
Developer(s)Imperas
Stable release
20231026.0 / 26 October 2023; 6 months ago (2023-10-26)
Operating systemWindows, Linux
TypeEmulator
LicenseProprietary, Apache License version 2.0 for models
Websitewww.ovpworld.org

OVPsim is a multiprocessor platform emulator (often called a full-system simulator) used to run unchanged production binaries of the target hardware. It has public APIs allowing users to create their own processor, peripheral and platform models. Various models are available as open source.[1] OVPsim is a key component of the Open Virtual Platforms initiative (OVP),[2] an organization created to promote the use of open virtual platforms for embedded software development. OVPsim requires OVP registration to download.

Licensing[edit]

OVPsim is developed and maintained by Imperas.[3] The core simulation platform is proprietary software; it is available free of charge for non-commercial usage. Commercial usage requires a low-cost license from Imperas to cover maintenance. Various processor, peripheral and platform models are available as free software under the Apache License version 2.0.

Details[edit]

There are three main components of OVP: open-source models, fast OVPsim simulator, and modeling APIs. These components are designed to make it easy to assemble multi-core heterogeneous or homogeneous platforms with complex memory hierarchies, cache systems and layers of embedded software that can run at hundreds of MIPS on standard desktop PCs. OVPSim is considered instruction accurate, but not cycle-accurate. There are many examples of components, and complete virtual platforms that can boot a Linux Kernel in under 5 seconds at OVP Homepage.

Open source models[edit]

Within OVP there are several different model categories. These models are provided as both pre-compiled object code, and as in some cases, source files. OVPsim no longer supplies source code for the ARM and MIPS processor models. Currently there are processor models of ARM (processors using the ARMv4, ARMv5, ARMv6, ARMv7, ARMv8 instruction sets) up to the ARM Cortex-A72MPx4 (and including multi-cluster ARMv8 models with GICv3), Imagination MIPS (processors using MIPS32, MIPS64, microMIPS, nanoMIPS and MIPS R6 instruction sets) up to the microAptiv, interAptiv, proAptiv, and Warrior cores, Synopsys Virage ARC600/ARC700 and ARC EM series, Renesas v850, RH850, RL78 and m16c, PowerPC, Altera Nios II, Xilinx MicroBlaze, RISC-V (models using 32bit RV32I, RV32M, RV32IM, RV32A, RV32IMA, RV32IMAC, RV32F, RV32D, RV32E, RV32EC, RV32C, RV32G, RV32GC, RV32GCN, RV32IMAFD and 64bit RV64I, RV64M, RV64IMAC, RV64F, RV64D, RV64C, RV64G, RV64GC, RV64GCN, RV64IMAFD ISA subsets), Andes Technology N25/NX25, N25F/NX25F, A25/AX25, A25F/AX25F, Microsemi CoreRISCV/MiV-RV32IMA, SiFive E31, E51, U54, U54-MC, Freedom U540, Codasip Series 1, 3, 5, 7 RISC-V cores, Intel NiosV RISC-V core, Texas Instruments TMS320 DSP, and OpenRisc families. The OpenHW Group uses OVPsim as the golden reference for their open source RISC-V CV32E40 and CV32E20 cores. There are also models of many different types of system components including RAM, ROM, cache, and bridge. There are peripheral models such as Ethernet MAC, USB, DMA, UART, and FIFO. Several different pre-built platforms are available, including the most common operating systems[4] ucLinux, Linux, Android, FreeRTOS, Nucleus, Micrium.

One of the main uses of the OVP simulation infrastructure is the ability to create and simulate custom built models—either from scratch, or by using one of the open source models as a starting point. The OVP APIs are tailored to different model types: processors, behavioral models of peripherals, and platforms. There are over 100 source model variants available to download.

OVPsim simulator[edit]

The OVPsim simulator is available as an OVP reference and is free for non-commercial usage. The simulator uses dynamic binary translation technology to achieve very high simulation speeds. More than a billion simulated instructions per second is possible, in some cases on regular desktop PC machines. OVPsim is available for x86 Windows and Linux hosts.

OVPsim comes with a GDB RSP (Remote Serial Protocol) interface to allow applications running on simulated processors to be debugged with any standard debugger that supports this GDB RSP interface. OVPsim comes with the Imperas iGui Graphical Debugger and also an Eclipse IDE and CDT interface.

OVPsim can be encapsulated and called from within other simulation environments[5] and comes as standard with interface files for C, C++, and SystemC.[6] OVPsim includes native SystemC TLM2.0 interface files. It is also possible to encapsulate legacy models of processors and behavioral models so that they can be used by OVPsim.

Modeling APIs[edit]

OVP models are created using C/C++ APIs. There are three main APIs: OP, VMI, BHM/PPM.

OP[edit]

The OP API is designed for controlling, connecting, and observing platforms. This API can be called from C, C++, or SystemC. The platform provides the basic structure of the design and creates, connects, and configures the components. The platform also specifies the address mapping, and software that is loaded on the processors. It is very easy with OP to specify very complex and complete platforms of many different processors, local and shared memories, caches, bus bridges, peripherals and all their complex address maps, interrupts and operating systems and application software.

The OP API superseded the ICM API during 2016. The ICM API is still usable for older platforms.

VMI[edit]

Processor modeling is provided by the VMI API. These API functions provide the ability to easily describe the behavior of the processor. A processor model written in C using the VMI decodes the target instruction to be simulated and translates this to native x86 instructions that are then executed on the PC. VMI can be used for modeling 8, 16, 32, and 64 bit architectures. There is an interception mechanism enabling emulation of calls to functions in the application runtime libraries (such as write, fstat etc.) without requiring modification of either the processor model or the simulated application.

PPM & BHM[edit]

Behavioral components, peripherals, and the overall environment is modeled using C code and calls to these two APIs. Underlying these APIs is an event based scheduling mechanism to enable modeling of time, events, and concurrency. Peripheral models provide callbacks that are called when the application software running on processors modeled in the platform access memory locations where the peripheral is enabled.

Users[edit]

OVPsim is being used by multiple educational establishments to provide a simulation infrastructure for the research of parallel computing platforms,[7][8] hardware/software co-design,[9] performance analysis of embedded systems,[10] and as the basis of other embedded tool developments.[citation needed] It is also leveraged for educational courses to allow students to develop and debug application software and create virtual platforms and new models.

A number of leading commercial organizations also use OVPsim as the basis of their product offerings. The technology was licensed by MIPS[11] Technologies to provide modeling support for their MIPS architecture embedded processor range, features in a partnership with leading processor provider ARM,[12][13] and is part of the Europractice[14] product range for general access to European universities. A version of OVPsim is used by the RISC-V Foundation's Compliance Working Group[15] as a reference simulator. Leading Semiconductor companies such as Renesas have used the simulator for its processor development work, as disclosed in leading electronic industry publications.[16] It was selected by NEPHRON+, an EU research project, for its software and test development environment.[17] VinChip Systems Inc. of Chennai, India used OpenOCD and OVPsim to develop what may be the first 32-bit processor developed in India.[18] The OVP models and virtual platforms form the basis for other activities being undertaken by Imperas.

References[edit]

  1. ^ "Open Virtual Platforms Component Library". Ovpworld.org. 21 November 2012. Retrieved 8 May 2013.
  2. ^ "Open Virtual Platforms". Ovpworld.org. 21 November 2012. Retrieved 8 May 2013.
  3. ^ "Imperas". Imperas. 2 July 2008. Retrieved 10 September 2013.
  4. ^ "MIPS Linux". Linux MIPS. 24 November 2008. Retrieved 10 September 2013.
  5. ^ "Cadence Zynq". Cadence. 2 April 2010. Retrieved 10 September 2013.
  6. ^ "There Could Be Value In The Imperas Models". SystemC.org. 17 February 2010. Retrieved 19 September 2013.
  7. ^ "Hybrid Simulation Framework for Virtual Prototyping Using OVP, SystemC & SCMLEducation" (PDF). vdtt.iitd.ac.in. 11 January 2009. Retrieved 9 May 2013.
  8. ^ Pinto, C.; Raghav, S.; Marongiu, A.; Ruggiero, M.; Atienza, D.; Benini, L. (2011). "GPGPU-Accelerated Parallel and Fast Simulation of Thousand-Core Platforms". 2011 11th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (PDF). pp. 53–62. doi:10.1109/CCGrid.2011.64. ISBN 978-1-4577-0129-0.
  9. ^ Nita, I.; Lazarescu, V.; Constantinescu, R. (2009). "A new Hw/Sw co-design method for multiprocessor system on chip applications". 2009 International Symposium on Signals, Circuits and Systems. pp. 1–4. doi:10.1109/ISSCS.2009.5206089. ISBN 978-1-4244-3785-6.
  10. ^ "Using OVPsim for the power estimation of complex RISC based platforms". www.embedded.com. 16 December 2012. Retrieved 8 May 2013.
  11. ^ "MIPS Technologies Signs License to Distribute OEM Version of the Imperas OVP Simulator". Bloomberg.com. 24 February 2011. Retrieved 26 June 2013.
  12. ^ "OVPsim by Imperas Software Ltd". ARM Connected Community. 1 January 2012. Retrieved 26 June 2013.
  13. ^ "Imperas Preps Fast Models of ARM Cortex-A15 Processor". EETimes. 8 March 2012. Retrieved 19 September 2013.
  14. ^ "Europractice OVPsim Datasheet" (PDF). EuroPractice. 10 November 2012. Retrieved 10 September 2013.
  15. ^ "RISC-V Compliance Working Group". riscv.org. 6 June 2018. Retrieved 6 June 2018.
  16. ^ "Processor Models Aid Automotive Software Testing". EETimes. 14 October 2011. Retrieved 10 September 2013.
  17. ^ Maxfield, Clive (15 May 2012). "Open Virtual Platforms Selected by EU research project". EE Times.
  18. ^ "'First' India-developed 32-bit processor debuts". EE Times-India. 24 June 2009. ... VinChip Systems Inc. has released ..., which it claims is the first 32-bit processor to be developed in India. ... Support for virtual prototyping has been provided by the ... OVPsim simulator ...

External links[edit]