Member access

4-Traders Homepage  >  Shares  >  Nasdaq  >  Synopsys, Inc.    SNPS   US8716071076

SYNOPSYS, INC. (SNPS)

1
SummaryQuotesChart AnalysisNewsCalendarCompanyFinancialsConsensusRevisions 

Synopsys : Researchers Submit Patent Application, "System and Method of Debugging Multi-Threaded Processes", for Approval

07/23/2014 | 05:58pm US/Eastern
Recommend:
0

By a News Reporter-Staff News Editor at Computer Weekly News -- From Washington, D.C., VerticalNews journalists report that a patent application by the inventors Spycher, Matthias (Santa Clara, CA); Petras, Dietmar (Langerwehe, DE), filed on January 27, 2014, was made available online on July 17, 2014.

The patent's assignee is Synopsys, Inc.

News editors obtained the following quote from the background information supplied by the inventors: "Debugging of multi-threaded hardware simulation processes is generally carried out by suspending all threads of the hardware simulation process before beginning debugging operations. Most debuggers rely upon the operating system to assist in debugging the hardware simulation process, and most operating systems (e.g., Windows, Linux, etc.) require the suspension of all threads. Once all the threads of the multi-threaded hardware simulation process are suspended, a user may step through or otherwise examine simulation results from the simulation of the hardware model to locate and fix bugs in the hardware model.

"Since conventional debugging systems debug multi-threaded hardware simulation processes when all threads are suspended, they provide users limited debugging functionality for multi-threaded hardware simulation processes which rely upon the suspended threads to communicate with other applications (i.e., using interprocess communication). For example, where the state of the simulated platform model depends upon information in another application, the conventional debugger may return an incomplete or incorrect picture of the simulated hardware state for debugging purposes.

"Additionally, the ability of conventional debugging systems to debug embedded software (e.g., applications run on the simulated hardware component) is also limited when all threads of the hardware simulator are suspended. Debugging of embedded software generally requires an embedded software debugger to access the state of the underlying simulated platform. Accordingly, by suspending interprocess communication threads of the hardware simulation, the interprocess communication channels used by the embedded software debugger to access the state of the simulated platform are severed. As such, conventional debugging systems provide embedded software debuggers with limited access to the state of the simulated platform, thereby resulting in incomplete and potentially inaccurate information for debugging of the embedded software."

As a supplement to the background information on this patent application, VerticalNews correspondents also obtained the inventors' summary information for this patent application: "Accordingly, a need exists for a debugging system which enables the running of one or more threads of a process while another thread of the process is blocked. More specifically, a need exists for a debugging system which blocks a hardware simulation thread while allowing interprocess communication threads to run. Further, a need exists for a debugging system which provides a simulation process access to applications coupled via interprocess communication channels. A need also exists for a debugging system which provides embedded software debuggers access to the simulated platform state to enable debugging of embedded software. Embodiments of the present invention provide novel solutions to these needs and others as described below.

"Embodiments are directed to a system and method of debugging a multi-threaded process with at least one running thread and at least one suspended thread. More specifically, embodiments utilize a function call on the thread to be suspended for implementing a blocking function (e.g., executing a loop with a guard variable and a sleep function, blocking on a thread control element such as a semaphore, condition variable, mutex, etc.) to block the thread (e.g., a hardware simulation thread) of a process (e.g., a simulator for simulating a hardware component or platform) while other threads are allowed to run. The blocking function may be executed in a suspended thread by a debugger under control of a thread blocking controller in one embodiment. Where the other threads comprise interprocess communication threads (e.g., to enable communication with other processes or applications such as embedded software debugger applications, graphical user interfaces or visualization applications, performance measurement applications, etc.), embodiments enable communication over interprocess communication channels implemented by the interprocess communication threads. Accordingly, embodiments enable debuggers (e.g., hardware debuggers, embedded software debuggers, etc.) and other components (e.g., applications coupled to the simulator via interprocess communication channels, etc.) to access the simulated platform state or otherwise communicate via the interprocess communication channels, thereby improving the debugging of software (e.g., embedded software, etc) and simulated hardware components (e.g., a simulated hardware platform, etc.).

"Embodiments also provide a simulated user interface (UI) of a debugger for enabling interaction with users while a hardware simulation thread is blocked, where the blocking of the hardware simulation thread may be implemented by a thread blocking component implemented externally to the debugger. Once a user debug command is detected, all threads of the simulator may be suspended (e.g., using an unblock function which aborts the blocking of the blocking function such that the blocking function returns) to enable execution of the user debug command accessed from the simulated debugger UI. In one embodiment, user inputs to the simulated debugger UI may be forwarded to the debugger while all threads of the simulator are suspended. The hardware simulation thread may thereafter be blocked (e.g., using a blocking function) while at least one interprocess communication thread is allowed to operate. In one embodiment, the blocking of the hardware simulation thread may occur automatically after a predetermined period of time without detection of a user debug command (e.g., input via the simulated debugger UI).

"In one embodiment where a thread blocking controller is implemented within the debugger, a UI of the debugger may interact with a user while the hardware simulation thread is blocked and interprocess communication threads are running Once a user debug command is detected, all threads of the simulator may be suspended (e.g., using an unblock function which aborts the blocking of the blocking function such that the blocking function returns) to enable execution of the user debug command accessed from the simulated debugger UI. The debugger UI may continue to process user inputs while all threads of the simulator are suspended. The hardware simulation thread may thereafter be blocked while at least one interprocess communication thread is allowed to operate (e.g., to enable communication with other processes or applications such as embedded software debugger applications, graphical user interfaces or visualization applications, performance measurement applications, etc.). In one embodiment, the blocking of the hardware simulation thread may occur automatically after a predetermined period of time without detection of a user debug command (e.g., input to the debugger UI).

"In one embodiment, a method of debugging a system includes, responsive to a breakpoint event, using a debugger tool to block a first thread of a multi-threaded hardware simulator of a hardware platform, wherein the multi-threaded hardware simulator includes a plurality of threads including the first thread for simulating the hardware platform and a plurality of second threads for implementing interprocess communications between the hardware simulator and other applications within the system. While the first thread is blocked, a user interface mechanism is implemented, external to the debugger tool, for receiving a user debug command. The method also includes, responsive to the user debug command, performing the following: suspending all threads of the multi-threaded hardware simulator; executing the user debug command on the debugger tool; after execution of the user debug command, blocking again the first thread; and repeating the implementing the user interface mechanism for receiving a user debug command. The other applications may be selected from a group consisting of: a visualization application; a performance measurement application; and an embedded software debugger application. An inferior call on the first thread may be issued causing a blocking function to be executed to block the first thread. The blocking function may be selected from a group consisting of: executing a loop with a guard variable; and blocking on a thread control element. The thread control element may be selected from a group consisting of: a semaphore; a wait condition; a conditional variable; and a mutex.

"In another embodiment, a method of debugging a system includes, in response to a detected event, blocking a first thread of a simulator using a debugger communicatively coupled to the simulator, the simulator further including a second thread for implementing an interprocess communication channel between the simulator and an additional process. The second thread is allowed to operate while the first thread is blocked. The method also includes communicating using the interprocess communication channel while the first thread is blocked. The first thread is suspended. The blocking the first thread may include executing a blocking function in the first thread, and wherein the suspending the first thread may include executing an unblock function to abort the blocking function. The blocking function may be selected from a group consisting of a sleep function, a semaphore, a wait condition, a conditional variable, and a mutex.

"In yet another embodiment, a system includes a multi-threaded simulator including a first thread and a second thread, the second thread for implementing an interprocess communication channel between the simulator and an additional process. A debugger is communicatively coupled to the multi-threaded simulator, the debugger for blocking the first thread in response to a detected event, the debugger further for allowing the second thread to operate while the first thread is blocked, the debugger further for suspending all threads of said multi-threaded simulator. A controller is communicatively coupled to the debugger and for initiating the blocking and the suspending performed by the debugger. The additional process may be a process of the system. The simulator may include a hardware simulator, and wherein the first thread includes a hardware simulation thread. The debugger may be operable to execute a blocking function in the first thread to implement the blocking, and wherein the debugger may further be operable to implement the suspending by executing an unblock function to abort the blocking function. The blocking function may be selected from a group consisting of a sleep function, a semaphore, a wait condition, a conditional variable, and a mutex.

BRIEF DESCRIPTION OF THE DRAWINGS

"The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements.

"FIG. 1 shows an exemplary debugging system for debugging a multi-threaded process with at least one active thread and a suspended thread in accordance with one embodiment of the present invention.

"FIG. 2 shows an exemplary process for debugging a system in accordance with one embodiment of the present invention.

"FIG. 3 shows an exemplary debugging system for implementing interprocess communication while a hardware simulation thread is blocked in accordance with one embodiment of the present invention.

"FIG. 4 shows an exemplary process for debugging a simulated component in accordance with one embodiment of the present invention.

"FIG. 5 shows an exemplary debugging system for implementing interprocess communication while a hardware simulation thread is blocked using a debugger with an internal thread blocking controller in accordance with one embodiment of the present invention.

"FIG. 6 shows an exemplary process for debugging a simulated component using a debugger with an internal thread blocking controller in accordance with one embodiment of the present invention."

For additional information on this patent application, see: Spycher, Matthias; Petras, Dietmar. System and Method of Debugging Multi-Threaded Processes. Filed January 27, 2014 and posted July 17, 2014. Patent URL: http://appft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&u=%2Fnetahtml%2FPTO%2Fsearch-adv.html&r=173&p=4&f=G&l=50&d=PG01&S1=20140710.PD.&OS=PD/20140710&RS=PD/20140710

Keywords for this news article include: Software, Synopsys, Synopsys Inc.

Our reports deliver fact-based news of research and discoveries from around the world. Copyright 2014, NewsRx LLC

(c) 2014 NewsRx LLC

Recommend :
0
React to this article
Latest news on SYNOPSYS, INC.
3h ago SYNOPSYS : Users Cite 10 Percent Smaller Design Sizes with Latest Releases of Sy..
4d ago SYNOPSYS : to Host Webcast for Investors on September 25, 2014
4d ago SYNOPSYS : Leadcore Achieves First-Pass Silicon Success with DesignWare MIPI IP ..
5d ago SYNOPSYS' : New MIPI C-PHY Verification IP Accelerates Adoption of MIPI Alliance..
5d ago SYNOPSYS : Cavium Standardizes on Synopsys' IC Compiler for High-performance Pro..
5d ago SYNOPSYS' : New DesignWare MIPI D-PHY Cuts Area and Power by 50 Percent
5d ago SYNOPSYS : Assigned Patent
09/15 SYNOPSYS : LibreOffice Makes Strides in Software Quality with Coverity Scan
09/15 SYNOPSYS : Elmos Selects Synopsys' Custom and Digital Design Solutions
09/11 SYNOPSYS : Patent Issued for Accurate Approximation of the Objective Function fo..
Advertisement
Chart
Duration : Period :
Synopsys, Inc. Technical Analysis Chart | SNPS | US8716071076 | 4-Traders
Income Statement Evolution
Synopsys, Inc. : Income Statement Evolution
More Financials
Dynamic quotes  
ON
| OFF