Patent US5771370A successfully refreshed from Google Patents.
← Back to Patent Explorer
US5771370A Expired / Lapsed US ⏱️ 0.0 years remaining

Method and apparatus for optimizing hardware and software co-simulation

Assignee: Mentor Graphics Corp
•
Filing: 1996-05-14
•
Granted: 1998-06-23
•
Expires: 2016-05-14
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract In accordance to a first aspect of the present invention, co-simulation of a hardware-software system is performed with a single coherent view of the memory of the hardware-software system. This single coherent view is transparently maintained for both the hardware and software simulations, and includes at least one segment of the memory being viewed as configured for having selected portions of the segment to be statically or dynamically configured/reconfigured for either unoptimized or optimized accesses, wherein unoptimized accesses are performed through hardware simulation, and optimized accesses are performed "directly", by-passing hardware simulation. In accordance to a second aspect of the present invention, co-simulation of a hardware-software system is performed with or without simulation time optimization, statically or dynamically configured/reconfigured, and optionally in accordance to a desired clock cycle ratio between hardware and software simulations, also statically or dynamically configured/reconfigured.

Inventors

  • 👤 Russell Klein

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-07 22:43
CPC Classifications
G; G06; G06F; G06F30/00; G06F30/30; G06F30/32; G06F30/33; G06F9/00; G06F9/06; G06F9/44; G06F9/455

Claims Analysis

Total Claims: 38
Claim 1
Independent Claim 133 words
A machine implemented method for co-simulating a hardware-software system having memory, the method comprising the steps of: interleavingly simulating hardware operations and software execution for the hardware-software system on a machine for one or more co-simulation runs; and concurrently facilitating a single coherent view of the memory of the hardware-software system by said simulation of hardware operations and said simulation of software execution during said one or more co-simulation runs, such that selected portions of at least a first memory segment of the memory can be dynamically as well as statically configured/reconfigured for either unoptimized accesses or optimized accesses for all or selected portions of said one or more co-simulation runs, wherein unoptimized accesses are performed through simulated hardware operations, and optimized accesses are performed through an alternate route, without simulating hardware operations.
Claim 2
Dependent Claim 133 words
A machine implemented method for co-simulating a hardware-software system having memory, the method comprising the steps of: interleavingly simulating hardware operations and software execution for the hardware-software system on a machine for one or more co-simulation runs; and concurrently facilitating a single coherent view of the memory of the hardware-software system by said simulation of hardware operations and said simulation of software execution during said one or more co-simulation runs, such that selected portions of at least a first memory segment of the memory can be dynamically as well as statically configured/reconfigured for either unoptimized accesses or optimized accesses for all or selected portions of said one or more co-simulation runs, wherein unoptimized accesses are performed through simulated hardware operations, and optimized accesses are performed through an alternate route, without simulating hardware operations.
Claim 3
Dependent Claim 68 words
The machine implemented method of claim 1, wherein the method further comprises the step of statically configuring/reconfiguring said first memory segment on the machine for said one or more co-simulation runs, as a memory segment configured to be eligible to have selected portions dynamically as well as statically configured/re-configured for all or selected portions of said one or more co-simulation runs, for either unoptimized accesses or optimized accesses.
Claim 4
Dependent Claim 35 words
The machine implemented method of claim 2, wherein the method further comprises the step of statically configuring/reconfiguring on the machine for said one or more co-simulation runs, a second memory segment for unoptimized accesses only.
Claim 5
Dependent Claim 34 words
The machine implemented method of claim 2, wherein the method further comprises the step of statically configuring/reconfiguring on the machine said one or more co-simulation runs, a second memory segment for optimized accesses only.
Claim 6
Dependent Claim 45 words
The machine implemented method of claim 2, wherein the method further comprises the step of statically or dynamically configuring/reconfiguring on the machine for all or selected portions of said one or more co-simulation runs, a first portion of said first memory segment for unoptimized/optimized accesses.
Claim 7
Dependent Claim 89 words
The machine implemented method of claim 1, wherein said method further comprises the step of periodically suspending said simulation of software execution, switching from said simulation of software execution to said simulation of hardware operations, and subsequently returning to said simulation of software execution during said one or more co-simulation runs, such that simulation time can be dynamically as well as statically configured/reconfigured to be optimized, and yet said simulation of hardware operations is nevertheless ensured to advance in a desired manner relative to said simulation of software execution.
Claim 8
Dependent Claim 40 words
The machine implemented method of claim 6, wherein said method further comprises the step of configuring/reconfiguring on the machine for said one or more co-simulation runs, whether said interleaved simulations are to be performed with or without simulation time optimization.
Claim 9
Dependent Claim 44 words
The machine implemented method of claim 7, wherein said suspending, switching and subsequently returning step is performed at each instruction boundary, whenever a portion of a co-simulation run is configured/reconfigured on the machine with said interleaved simulations to be performed without simulation time optimization.
Claim 10
Dependent Claim 80 words
The machine implemented method as set forth in claim 7, wherein said suspending, switching and subsequently returning step includes suspending said software execution simulation and switching to said hardware operations simulation whenever an unoptimized memory access is encountered, and then returning to said software execution simulation when bus cycles for the unoptimized memory access encountered are completed, whenever a portion of a co-simulation run on the machine is configured/re-configured with said interleaved simulations to be performed with simulation time optimized.
Claim 11
Dependent Claim 78 words
The machine implemented method of claim 7, wherein said method further comprises the step of optionally configuring/reconfiguring on the machine for all or selected portions of said one or more co-simulation runs, to have said interleaved simulations performed with a software simulation clock cycle quantity, with or without an associated hardware simulation clock cycle quantity, whenever a portion of a co-simulation run is configured on the machine with said interleaved simulations to be performed with simulation time optimized.
Claim 12
Dependent Claim 302 words
The machine implemented method as set forth in claim 10, wherein said suspending, switching and subsequently returning step includes suspending said software execution simulation and switching to said hardware operations simulation whenever either an unoptimized memory access is encountered or software execution simulation has advanced by the software simulation clock cycle quantity, and then subsequently returning to said software execution simulation, when either bus cycles for an unoptimized memory access encountered are completed or hardware operations simulation has advanced by a default clock cycle quantity, or by a hardware simulation clock cycle quantity, whenever a portion of a co-simulation run on the machine is configured to have said interleaved simulations performed with simulation time optimization, in conjunction with a software simulation clock cycle quantity; the subsequent return to said software execution simulation occurs when bus cycles for an unoptimized memory access encountered are completed, if the suspending and switching occurred as a result of the unoptimized memory access was encountered, the subsequent return to said software execution simulation occurs after said hardware simulation has advanced by a default clock cycle quantity, if the suspending and switching occurred as a result of said software simulation having advanced by the software simulation clock cycle quantity, and the portion of the co-simulation run is not configured on the machine with said interleaved simulations to be performed with a hardware simulation clock cycle quantity; and the subsequent return to said software execution simulation occurs after said hardware simulation has advanced by a hardware simulation clock cycle quantity if the suspending and switching occurred as a result of said software simulation having advanced by the software simulation clock cycle quantity, and the portion of the co-simulation run is also configured on the machine with said interleaved simulations to be performed with the hardware simulation clock cycle quantity.
Claim 13
Dependent Claim 111 words
A machine implemented method for co-simulating a hardware-software system having memory, the method comprising the steps of: interleavingly simulating hardware operations and software execution for the hardware-software system on a machine for one or more co-simulation runs; and periodically suspending said simulation of software execution, switching from said simulation of software execution to said simulation of hardware operations, and subsequently returning to said simulation of software execution during said one or more co-simulation runs, such that simulation time can dynamically as well as statically configured/reconfigured to be optimized, and yet said simulation of hardware operations is nevertheless ensured to advance in a desired manner relative to said simulation of software execution.
Claim 14
Dependent Claim 111 words
A machine implemented method for co-simulating a hardware-software system having memory, the method comprising the steps of: interleavingly simulating hardware operations and software execution for the hardware-software system on a machine for one or more co-simulation runs; and periodically suspending said simulation of software execution, switching from said simulation of software execution to said simulation of hardware operations, and subsequently returning to said simulation of software execution during said one or more co-simulation runs, such that simulation time can dynamically as well as statically configured/reconfigured to be optimized, and yet said simulation of hardware operations is nevertheless ensured to advance in a desired manner relative to said simulation of software execution.
Claim 15
Dependent Claim 40 words
The machine implemented method of claim 12, wherein said method further comprises the step of configuring/reconfiguring on the machine for said one or more co-simulation runs, whether said interleaved simulations are to be performed with or without simulation time optimization.
Claim 16
Dependent Claim 44 words
The machine implemented method of claim 13, wherein said suspending, switching and subsequently returning step is performed at each instruction boundary, whenever a portion of a co-simulation run is configured/reconfigured on the machine with said interleaved simulations to be performed without simulation time optimization.
Claim 17
Dependent Claim 80 words
The machine implemented method as set forth in claim 13, wherein said suspending, switching and subsequently returning step includes suspending said software execution simulation and switching to said hardware operations simulation whenever an unoptimized memory access is encountered, and then returning to said software execution simulation when bus cycles for the unoptimized memory access encountered are completed, whenever a portion of a co-simulation run on the machine is configured/re-configured with said interleaved simulations to be performed with simulation time optimized.
Claim 18
Dependent Claim 78 words
The machine implemented method of claim 13, wherein said method further comprises the step of optionally configuring/reconfiguring on the machine for all or selected portions of said one or more co-simulation runs, to have said interleaved simulations performed with a software simulation clock cycle quantity, with or without an associated hardware simulation clock cycle quantity, whenever a portion of a co-simulation run is configured on the machine with said interleaved simulations to be performed with simulation time optimized.
Claim 19
Dependent Claim 302 words
The machine implemented method as set forth in claim 13, wherein said suspending, switching and subsequently returning step includes suspending said software execution simulation and switching to said hardware operations simulation whenever either an unoptimized memory access is encountered or software execution simulation has advanced by the software simulation clock cycle quantity, and then subsequently returning to said software execution simulation, when either bus cycles for an unoptimized memory access encountered are completed or hardware operations simulation has advanced by a default clock cycle quantity, or by a hardware simulation clock cycle quantity, whenever a portion of a co-simulation run on the machine is configured to have said interleaved simulations performed with simulation time optimization, in conjunction with a software simulation clock cycle quantity; the subsequent return to said software execution simulation occurs when bus cycles for an unoptimized memory access encountered are completed, if the suspending and switching occurred as a result of the unoptimized memory access was encountered, the subsequent return to said software execution simulation occurs after said hardware simulation has advanced by a default clock cycle quantity, if the suspending and switching occurred as a result of said software simulation having advanced by the software simulation clock cycle quantity, and the portion of the co-simulation run is not configured on the machine with said interleaved simulations to be performed with a hardware simulation clock cycle quantity; and the subsequent return to said software execution simulation occurs after said hardware simulation has advanced by a hardware simulation clock cycle quantity if the suspending and switching occurred as a result of said software simulation having advanced by the software simulation clock cycle quantity, and the portion of the co-simulation run is also configured on the machine with said interleaved simulations to be performed with the hardware simulation clock cycle quantity.
Claim 20
Independent Claim 170 words
An apparatus comprising: one or more execution units for executing programming instructions; one or more storage medium coupled to said one or more execution units, and having stored therein first and second sequences of programming instructions to be executed by said one or more execution units during operation to interleavingly simulate hardware operations and software execution for a hardware-software system having memory for one or more co-simulation runs; and third sequence of programming instructions to be executed by said one or more execution units during operation, to concurrently facilitate, during said interleaved simulations for one or more co-simulation runs, a single coherent view of the memory of the hardware-software system by said first and second sequence of programming instructions, such that selected portions of at least a first memory segment of the memory can be dynamically as well as statically configured/reconfigured for either unoptimized accesses or optimized accesses, wherein unoptimized accesses are performed through simulated hardware operations, and optimized accesses are performed through an alternate route, without simulating hardware operations.
Claim 21
Independent Claim 170 words
An apparatus comprising: one or more execution units for executing programming instructions; one or more storage medium coupled to said one or more execution units, and having stored therein first and second sequences of programming instructions to be executed by said one or more execution units during operation to interleavingly simulate hardware operations and software execution for a hardware-software system having memory for one or more co-simulation runs; and third sequence of programming instructions to be executed by said one or more execution units during operation, to concurrently facilitate, during said interleaved simulations for one or more co-simulation runs, a single coherent view of the memory of the hardware-software system by said first and second sequence of programming instructions, such that selected portions of at least a first memory segment of the memory can be dynamically as well as statically configured/reconfigured for either unoptimized accesses or optimized accesses, wherein unoptimized accesses are performed through simulated hardware operations, and optimized accesses are performed through an alternate route, without simulating hardware operations.
Claim 22
Dependent Claim 65 words
The apparatus of claim 18, wherein said third sequence of programming instructions include logic for statically configuring/reconfiguring said first memory segment for said one or more co-simulation runs, as a memory segment configured to be eligible to have selected portions dynamically as well as statically configured/re-configured for all or selected portions of said one or more co-simulation runs, for either unoptimized accesses or optimized accesses.
Claim 23
Dependent Claim 33 words
The apparatus of claim 19, wherein said third sequence of programming instructions further include logic for statically configuring/reconfiguring for said one or more co-simulation runs, a second memory segment for unoptimized accesses only.
Claim 24
Dependent Claim 33 words
The apparatus of claim 19, wherein said third sequence of programming instructions further include logic for statically configuring/reconfiguring for said one or more co-simulation runs, a second memory segment for optimized accesses only.
Claim 25
Dependent Claim 43 words
The apparatus of claim 19, wherein said third sequence of programming instructions further include logic for statically or dynamically configuring/reconfiguring for all or selected portions of said one or more co-simulation runs, a first portion of said first memory segment for unoptimized/optimized accesses.
Claim 26
Dependent Claim 89 words
The apparatus of claim 18, wherein said third sequence of programming instructions further include logic for periodically suspending said simulation of software execution, switching from said simulation of software execution to said simulation of hardware operations, and subsequently returning to said simulation of software execution during said one or more co-simulation runs, such that simulation time can dynamically as well as statically configured/reconfigured to be optimized, and yet said simulation of hardware operations is nevertheless ensured to advance in a desired manner relative to said simulation of software execution.
Claim 27
Dependent Claim 38 words
The apparatus of claim 23, wherein said third sequence of programming instructions further include logic for configuring/reconfiguring for said one or more co-simulation runs, whether said interleaved simulations are to be performed with or without simulation time optimization.
Claim 28
Dependent Claim 51 words
The apparatus of claim 24, wherein said third sequence of programming instructions include in particular logic for performing said suspending, switching and subsequently returning at each instruction boundary, whenever a portion of a co-simulation run is configured/reconfigured on the machine with said interleaved simulations to be performed without simulation time optimization.
Claim 29
Dependent Claim 81 words
The apparatus as set forth in claim 24, wherein said third sequence of programming instructions include in particular logic for suspending said software execution simulation and switching to said hardware operations simulation whenever an unoptimized memory access is encountered, and then returning to said software execution simulation when bus cycles for the unoptimized memory access encountered are completed, whenever a portion of a co-simulation run on the machine is configured/re-configured with said interleaved simulations to be performed with simulation time optimized.
Claim 30
Dependent Claim 79 words
The apparatus of claim 24, wherein said third sequence of programming instructions further includes logic for optionally configuring/reconfiguring on the machine for all or selected portions of said one or more co-simulation runs, to have said interleaved simulations performed with a software simulation clock cycle quantity, with or without an associated hardware simulation clock cycle quantity, whenever a portion of a co-simulation run is configured on the machine with said interleaved simulations to be performed with simulation time optimized.
Claim 31
Dependent Claim 306 words
The apparatus as set forth in claim 27, wherein said third sequence of programming instructions includes in particular logic for suspending said software execution simulation and switching to said hardware operations simulation whenever either an unoptimized memory access is encountered or software execution simulation has advanced by the software simulation clock cycle quantity, and then subsequently returning to said software execution simulation, when either bus cycles for an unoptimized memory access encountered are completed or hardware operations simulation has advanced by a default clock cycle quantity, or by a hardware simulation clock cycle quantity, whenever a portion of a co-simulation run on the machine is configured to have said interleaved simulations performed with simulation time optimization, in conjunction with a software simulation clock cycle quantity; the subsequent return to said software execution simulation is performed when bus cycles for an unoptimized memory access encountered are completed, if the suspending and switching occurred as a result of the unoptimized memory access was encountered, the subsequent return to said software execution simulation is performed after said hardware simulation has advanced by a default clock cycle quantity, if the suspending and switching occurred as a result of said software simulation having advanced by the software simulation clock cycle quantity, and the portion of the co-simulation run is not configured on the machine with said interleaved simulations to be performed with a hardware simulation clock cycle quantity; and the subsequent return to said software execution simulation is performed after said hardware simulation has advanced by a hardware simulation clock cycle quantity if the suspending and switching occurred as a result of said software simulation having advanced by the software simulation clock cycle quantity, and the portion of the co-simulation run is also configured on the machine with said interleaved simulations to be performed with the hardware simulation clock cycle quantity.
Claim 32
Independent Claim 160 words
An apparatus comprising: one or more execution units for executing programming instructions one or more storage medium coupled to said one or more execution units, and having stored therein first and second sequences of programming instructions to be executed by said one or more execution units during operation to interleavingly simulate hardware operations and software execution for a hardware-software system having memory for one or more co-simulation runs; and third sequence of programming instructions to be executed by said one or more execution units during operation, to periodically suspend said simulation of software execution, switch from said simulation of software execution to said simulation of hardware operations, and subsequently return to said simulation of software execution during said one or more co-simulation runs, such that simulation time can dynamically as well as statically configured/reconfigured to be optimized, and yet said simulation of hardware operations is nevertheless ensured to advance in a desired manner relative to said simulation of software execution.
Claim 33
Independent Claim 160 words
An apparatus comprising: one or more execution units for executing programming instructions one or more storage medium coupled to said one or more execution units, and having stored therein first and second sequences of programming instructions to be executed by said one or more execution units during operation to interleavingly simulate hardware operations and software execution for a hardware-software system having memory for one or more co-simulation runs; and third sequence of programming instructions to be executed by said one or more execution units during operation, to periodically suspend said simulation of software execution, switch from said simulation of software execution to said simulation of hardware operations, and subsequently return to said simulation of software execution during said one or more co-simulation runs, such that simulation time can dynamically as well as statically configured/reconfigured to be optimized, and yet said simulation of hardware operations is nevertheless ensured to advance in a desired manner relative to said simulation of software execution.
Claim 34
Dependent Claim 37 words
The apparatus of claim 29, wherein said third sequence of programming instructions include logic for configuring/reconfiguring for said one or more co-simulation runs, whether said interleaved simulations are to be performed with or without simulation time optimization.
Claim 35
Dependent Claim 50 words
The apparatus of claim 30, wherein said third sequence of programming instructions include in particular logic for said suspending, switching and subsequently returning at each instruction boundary, whenever a portion of a co-simulation run is configured/reconfigured on the machine with said interleaved simulations to be performed without simulation time optimization.
Claim 36
Dependent Claim 81 words
The apparatus as set forth in claim 30, wherein said third sequence of programming instructions include in particular logic for suspending said software execution simulation and switching to said hardware operations simulation whenever an unoptimized memory access is encountered, and then returning to said software execution simulation when bus cycles for the unoptimized memory access encountered are completed, whenever a portion of a co-simulation run on the machine is configured/re-configured with said interleaved simulations to be performed with simulation time optimized.
Claim 37
Dependent Claim 76 words
The apparatus of claim 30, wherein said third sequence of programming instructions further include logic for optionally configuring/reconfiguring for all or selected portions of said one or more co-simulation runs, to have said interleaved simulations performed with a software simulation clock cycle quantity, with or without an associated hardware simulation clock cycle quantity, whenever a portion of a co-simulation run is configured on the machine with said interleaved simulations to be performed with simulation time optimized.
Claim 38
Dependent Claim 304 words
The apparatus as set forth in claim 30, wherein said third sequence of programming instructions include logic for suspending said software execution simulation and switching to said hardware operations simulation whenever either an unoptimized memory access is encountered or software execution simulation has advanced by the software simulation clock cycle quantity, and then subsequently returning to said software execution simulation, when either bus cycles for an unoptimized memory access encountered are completed or hardware operations simulation has advanced by a default clock cycle quantity, or by a hardware simulation clock cycle quantity, whenever a portion of a co-simulation run on the machine is configured to have said interleaved simulations performed with simulation time optimization, in conjunction with a software simulation clock cycle quantity; the subsequent return to said software execution simulation is performed when bus cycles for an unoptimized memory access encountered are completed, if the suspending and switching occurred as a result of the unoptimized memory access was encountered, the subsequent return to said software execution simulation is performed after said hardware simulation has advanced by a default clock cycle quantity, if the suspending and switching occurred as a result of said software simulation having advanced by the software simulation clock cycle quantity, and the portion of the co-simulation run is not configured on the machine with said interleaved simulations to be performed with a hardware simulation clock cycle quantity; and the subsequent return to said software execution simulation is performed after said hardware simulation has advanced by a hardware simulation clock cycle quantity if the suspending and switching occurred as a result of said software simulation having advanced by the software simulation clock cycle quantity, and the portion of the co-simulation run is also configured on the machine with said interleaved simulations to be performed with the hardware simulation clock cycle quantity.

References Cited (Backward Citations)

US4868770A Cited
US5640546A Cited
US5663900A Cited
US5493672A Cited
US5551013A Cited
US5546562A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2001-06-22 2001-12-22 2002-06-23 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2005-06-22 2005-12-22 2006-06-23 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2009-06-22 2009-12-22 2010-06-23 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag