The present disclosure relates to a system and method for use in electronic design, and more particularly, to a glitch debugging process.
Over the last 30 years, the complexity of integrated circuits has increased greatly. This increase in complexity has exacerbated the difficulty of verifying circuit designs. In a typical integrated circuit design process, which includes many steps, the verification step consumes approximately 70-80% of the total time and resources. Aspects of the circuit design such as time-to-market and profit margin greatly depend on the verification step. As a result, flaws in the design that are not found during the verification step can have significant economic impact by increasing time-to-market and reducing profit margins. To maximize profit, therefore, the techniques used for verification should be as efficient as possible.
As the complexity in circuit design has increased, there has been a corresponding improvement in various kinds of verification and debugging techniques. In fact, these verification and debugging techniques have evolved from relatively simple transistor circuit-level simulation (in the early 1970s) to logic gate-level simulation (in the late 1980s) to the current art that uses Register Transfer Language (RTL)-level simulation. RTL describes the registers of a computer or digital electronic system and the way in which data are transferred among the combinational logic between registers.
Existing verification and debugging tools are used in the design flow of a circuit. The design flow begins with the creation of a circuit design at the RTL level using RTL source code. The RTL source code is specified according to a Hardware Description Language (HDL), such as Verilog HDL or VHDL. Circuit designers use high-level hardware description languages because of the size and complexity of modern integrated circuits. Circuit designs are developed in a high-level language using computer-implemented software applications, which enable a user to use text-editing and graphical tools to create a HDL-based design.
An increasingly popular technique is to use formal methods to verify the properties of a design completely. Formal methods use mathematical techniques to prove that a design property is either always true or to provide an example condition (called a counterexample) that demonstrates the property is false. Tools that use formal methods to verify RTL source code and design properties are known as “model checkers.” Design properties to be verified include specifications and/or requirements that must be satisfied by the circuit design. Since mathematical properties define the design requirements in pure mathematical terms, this enables analysis of all possible valid input sequences for a given circuit and is akin to an exhaustive simulation. Formal verification methods are therefore exhaustive, when compared for example to simulation methods, and they may provide many benefits, such as reduced validation time, quicker time-to-market, reduced costs, and high reliability.
Formal verification involves heavy mathematical computation, and traditional formal verification tools place a heavy emphasis on automation. Therefore, users typically let their formal verification tools run in a batch mode instead of interactively, frequently waiting overnight for the complex analysis to finish. But the lack of interactivity leaves the designer's insights into the design out of the process, ultimately making the formal verification less effective.
In existing approaches users run the formal proof to get a list of failed properties. The proof engines can provide the counter example to the user in order to debug the failures in an electronic design automation environment. The user may apply constraints on the current waveform to create a new alternate waveform. If the new waveform fails some existing properties, the user may debug these failures.
In the context of formal verification, glitches are unstable values generated by unstable combinational loops in the clock, which violate synchronous design principles and can cause unreliability in digital designs. Glitches are not handled in the formal model concept and can lead to errors in the proof flow, like an interruption, or even wrong proof results. Glitches usually are created by a designer's mistake and are difficult to see on RTL. Therefore, it is of interest of formal users to be able to detect and fix such bugs.
In one or more embodiments of the present disclosure, a method for glitch debugging in an electronic design is provided. The method may include receiving, using a processor, the electronic design and performing a formal glitch analysis of the electronic design to determine if one or more glitches are present in a clock logic of the electronic design. If a glitch is identified, the method may further include causing a generation of a graphical glitch debugger display. The method may include receiving an edit to the electronic design and re-performing the formal glitch analysis of the electronic design to determine whether a glitch is present.
One or more of the following features may be included. In some embodiments, causing the generation of the graphical glitch debugger display may include automatically generating one or more labels, colors, or icons at the display. Causing the generation of the graphical glitch debugger may also include displaying a gate diagram showing a glitch path and/or displaying a cycle by cycle waveform. The formal glitch analysis may include an 8-value formal verification analysis on a target group of combinational loops. A different color may be used to highlight a number of different logic elements associated with a glitch path. The number of different logic elements may include one or more of glitch, late edge, and main gate.
In one or more embodiments of the present disclosure, a computer-readable storage medium having instructions for estimating glitch power associated with an emulation process is provided. Some operations may include receiving, using a processor, the electronic design and performing a formal glitch analysis of the electronic design to determine if one or more glitches are present in a clock logic of the electronic design. If a glitch is identified, operations may include causing a generation of a graphical glitch debugger display, wherein causing a generation of a graphical glitch debugger display includes a gate diagram showing a glitch path corresponding to the identified glitch.
One or more of the following features may be included. In some embodiments, causing the generation of the graphical glitch debugger display may include automatically generating one or more labels, colors, or icons at the display. Operations may further include receiving an edit to the electronic design and re-performing the formal glitch analysis of the electronic design to determine whether a glitch is present. Causing the generation of the graphical glitch debugger may include displaying a cycle by cycle waveform. The formal glitch analysis may include an 8-value formal verification analysis on a target group of combinational loops. A different color may be used to highlight a number of different logic elements associated with a glitch path. The number of different logic elements may include one or more of glitch, late edge, and main gate.
In one or more embodiments of the present disclosure, a system for glitch debugging in an electronic design is provided. The system may include a graphical user interface and at least one processor configured to receive, using a processor, the electronic design. The at least one processor may be further configured to perform a formal glitch analysis of the electronic design to determine if one or more glitches are present in a clock logic of the electronic design. If a glitch is identified, the at least one processor may be further configured to cause a generation of a graphical glitch debugger display via the graphical user interface. The at least one processor may be further configured to receive an edit to the electronic design at the graphical user interface, wherein the at least one processor is further configured to re-perform the formal glitch analysis of the electronic design to determine whether a glitch is present.
One or more of the following features may be included. In some embodiments, causing the generation of the graphical glitch debugger display may include automatically generating one or more labels, colors, or icons at the display. The at least one processor may be further configured to receive an edit to the electronic design and re-performing the formal glitch analysis of the electronic design to determine whether a glitch is present. Causing the generation of the graphical glitch debugger may include displaying a cycle by cycle waveform. The formal glitch analysis may include an 8-value formal verification analysis on a target group of combinational loops. A different color may be used to highlight a number of different logic elements associated with a glitch path.
Additional features and advantages of embodiments of the present disclosure will be set forth in the description which follows, and in part will be apparent from the description, or may be learned by practice of embodiments of the present disclosure. The objectives and other advantages of the embodiments of the present disclosure may be realized and attained by the structure particularly pointed out in the written description and claims hereof as well as the appended drawings.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are intended to provide further explanation of embodiments of the invention as claimed.
The accompanying drawings, which are included to provide a further understanding of embodiments of the present disclosure and are incorporated in and constitute a part of this specification, illustrate embodiments of the present disclosure and together with the description serve to explain the principles of embodiments of the present disclosure.
Reference will now be made in detail to the embodiments of the present disclosure, examples of which are illustrated in the accompanying drawings. The present disclosure may, however, be embodied in many different forms and should not be construed as being limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the concept of the present disclosure to those skilled in the art. In the drawings, the thicknesses of layers and regions may be exaggerated for clarity. Like reference numerals in the drawings may denote like elements.
Referring to
The instruction sets and subroutines of glitch debugging process 10, which may be stored on storage device 16 coupled to server computer 12, may be executed by one or more processors (not shown) and one or more memory architectures (not shown) incorporated into server computer 12. Storage device 16 may include but is not limited to: a hard disk drive; a tape drive; an optical drive; a RAID array; a random access memory (RAM); and a read-only memory (ROM).
Server computer 12 may execute a web server application, examples of which may include but are not limited to: Microsoft IIS™, Novell Webserver™, or Apache Webserver™, that allows for HTTP (i.e., HyperText Transfer Protocol) access to server computer 12 via network 14. Network 14 may be connected to one or more secondary networks (e.g., network 18), examples of which may include but are not limited to: a local area network; a wide area network; or an intranet, for example.
Server computer 12 may execute one or more server applications (e.g., server application 20), examples of which may include but are not limited to, e.g., Microsoft Exchange™ Server. Server application 20 may interact with one or more client applications (e.g., client applications 22, 24, 26, 28) in order to execute glitch debugging process 10. Examples of client applications 22, 24, 26, 28 may include, but are not limited to, design verification tools such as those available from the assignee of the present disclosure. These applications may also be executed by server computer 12. In some embodiments, glitch debugging process 10 may be a stand-alone application that interfaces with server application 20 or may be an applet/application that is executed within server application 20.
The instruction sets and subroutines of server application 20, which may be stored on storage device 16 coupled to server computer 12, may be executed by one or more processors (not shown) and one or more memory architectures (not shown) incorporated into server computer 12.
As mentioned above, in addition/as an alternative to being a server-based application residing on server computer 12, the glitch debugging process may be a client-side application (not shown) residing on one or more client electronic devices 38, 40, 42, 44 (e.g., stored on storage devices 30, 32, 34, 36, respectively). As such, the glitch debugging process may be a stand-alone application that interfaces with a client application (e.g., client applications 22, 24, 26, 28), or may be an applet/application that is executed within a client application. As such, the glitch debugging process may be a client-side process, a server-side process, or a hybrid client-side/server-side process, which may be executed, in whole or in part, by server computer 12, or one or more of client electronic devices 38, 40, 42, 44.
The instruction sets and subroutines of client applications 22, 24, 26, 28, which may be stored on storage devices 30, 32, 34, 36 (respectively) coupled to client electronic devices 38, 40, 42, 44 (respectively), may be executed by one or more processors (not shown) and one or more memory architectures (not shown) incorporated into client electronic devices 38, 40, 42, 44 (respectively). Storage devices 30, 32, 34, 36 may include but are not limited to: hard disk drives; tape drives; optical drives; RAID arrays; random access memories (RAM); read-only memories (ROM), compact flash (CF) storage devices, secure digital (SD) storage devices, and memory stick storage devices. Examples of client electronic devices 38, 40, 42, 44 may include, but are not limited to, personal computer 38, laptop computer 40, personal digital assistant 42, notebook computer 44, a data-enabled, cellular telephone (not shown), and a dedicated network device (not shown), for example.
Users 46, 48, 50, 52 may access server application 20 directly through the device on which the client application (e.g., client applications 22, 24, 26, 28) is executed, namely client electronic devices 38, 40, 42, 44, for example. Users 46, 48, 50, 52 may access server application 20 directly through network 14 or through secondary network 18. Further, server computer 12 (e.g., the computer that executes server application 20) may be connected to network 14 through secondary network 18, as illustrated with phantom link line 54.
In some embodiments, glitch debugging process 10 may be a cloud-based process as any or all of the operations described herein may occur, in whole, or in part, in the cloud or as part of a cloud-based system. The various client electronic devices may be directly or indirectly coupled to network 14 (or network 18). For example, personal computer 38 is shown directly coupled to network 14 via a hardwired network connection. Further, notebook computer 44 is shown directly coupled to network 18 via a hardwired network connection. Laptop computer 40 is shown wirelessly coupled to network 14 via wireless communication channel 56 established between laptop computer 40 and wireless access point (i.e., WAP) 58, which is shown directly coupled to network 14. WAP 58 may be, for example, an IEEE 802.11a, 802.11b, 802.11g, Wi-Fi, and/or Bluetooth device that is capable of establishing wireless communication channel 56 between laptop computer 40 and WAP 58. Personal digital assistant 42 is shown wirelessly coupled to network 14 via wireless communication channel 60 established between personal digital assistant 42 and cellular network/bridge 62, which is shown directly coupled to network 14.
As is known in the art, all of the IEEE 802.11x specifications may use Ethernet protocol and carrier sense multiple access with collision avoidance (CSMA/CA) for path sharing. The various 802.11x specifications may use phase-shift keying (PSK) modulation or complementary code keying (CCK) modulation, for example. As is known in the art, Bluetooth is a telecommunications industry specification that allows e.g., mobile phones, computers, and personal digital assistants to be interconnected using a short-range wireless connection.
Client electronic devices 38, 40, 42, 44 may each execute an operating system, examples of which may include but are not limited to Microsoft Windows™, Microsoft Windows CE™, Redhat Linux™, Apple IOS, ANDROID, or a custom operating system.
Referring now to
Embodiments of the glitch debugging process described herein may work in conjunction with server application 20, which may include an electronic design automation application such as those available from the Assignee of the subject disclosure. Some of these may include, but are not limited to, the Cadence® Jasper™ RTL suite of applications (e.g., Jasper Visualize™ Interactive Debug Environment incorporating the QuietTrace™ debugging capability).
Referring also to
In a formal verification process, the verification tool 305 may receive a circuit design 320 and a verification specification 330 for testing the circuit design 320 against a set of requirements. The circuit design 320 and verification specification 330 may be represented in one or more files containing HDL code, which define a digital design and/or properties that give a functional specification of the design. The verification tool 305 may convert the inputs (i.e., the circuit design 320 and verification specification 330) into an internal representation using one or more data structures, such as a netlist. This conversion may comprise two different conversions: (1) synthesis of the input circuit design 320, and (2) property compilation of the properties in the verification specification 330.
The results of the design synthesis and the property compilation may then be combined into a common problem instance that is given as input to a model checker in the verification tool 305. The verification tool 305 then performs formal verification on the circuit design 320 using the statically allocated data structure. For assertions, during the formal verification process, the model checker attempts to determine whether there is a possible behavior of the circuit design 320 where one of the properties in the verification specification 330 are not true, which is called a counterexample for the property. If it is determined that no counterexample exists for a property, the property is said to be proven. The results 340 of the formal verification process thus comprise an indication of whether one or more of the properties are satisfied, and if not, the counterexample showing a condition under which the property fails. The counterexample includes a sequence of values for signals (input, internal, or output) of the circuit design over a number of clock cycles that satisfy the given assumptions but result in the property failure.
The verification of a cover may proceed in a similar way. In one embodiment, for a cover, the verification tool attempts to determine whether there is a possible behavior of the circuit design that satisfies the cover, which is called a cover trace. This cover trace includes a sequence of values for signals of the circuit design over a number of clock cycles that satisfy the given assumption and satisfy the cover.
The verification tool 305 outputs the result 330 of the verification process, which may be stored in memory, passed along to another software process, or displayed to the user. The result may comprise a counterexample if the circuit design 320 fails to meet the properties encoded in the verification specification or a witness if the design 320 satisfies the properties (e.g., the witness can be a cover trace). A debugging tool 310 may also be included to display the counterexample or witness to a circuit designer in a useful way to the designer. In one embodiment, the debugging tool 310 accepts the circuit design 320, verification specification 330, and result 340 as inputs and applies one or more soft constraints to the result 340 to create a quieter trace. This can facilitate understanding of what aspect of the HDL code in the circuit design 320 is responsible for the counterexample to the property in question. The debugging tool 310 may include a viewer as well as editing software.
Embodiments of the present disclosure provide a debugging tool 310 that helps the circuit designer understand counterexamples that are identified during a formal verification process, and thereby more easily debug the circuit design when counterexamples are found. In some embodiments, glitch debugging process 10 may provide for a more user friendly display that helps the designer quickly debug electronic designs far faster than by using conventional approaches.
The debugging tool 310 also enables the user to jump between the traces in the sequence to compare differences between the traces. For example, the debugging tool 310 receives a user input selecting a trace for display. In response, the debugging tool 310 displays a waveform of the selected trace to the user. This enables the circuit designer to visualize how the trace changes on an incremental basis as new constraints are applied to the trace, which facilitates the process of debugging a circuit design. Additional information regarding formal verification techniques, including quiet trace approaches, may be found in U.S. Pat. Nos. 7,506,288, 8,863,049, and 10,635,768, which are each incorporated herein by reference in their entirety.
As discussed above, in the context of formal verification, glitches are unstable values generated by unstable combinational loops in the clock, which violate synchronous design principles and can cause unreliability in digital designs. Glitches are not handled in the formal model concept and can lead to errors in the proof flow, like an interruption, or even wrong proof results. Glitches usually are created by a designer's mistake and are difficult to see on RTL. Therefore, it is of interest to formal users to be able to detect and fix such bugs.
In a 0-delay model, a glitch may be caused by the output pin of a flip-flop that affects the value of its own clock pin, which is a functional combinational loop. In a 0-delay model, that generally abstracts away all propagation delays many types of glitches may be abstracted away, but a glitch may still be caused by the output pin of a flip-flop that affects the value of its own clock pin, which is a functional combinational loop. When debugging the existence and impact of combinational loops in an electronic design, the user often faces situations with many courses of action and it is common for them to be confused about what decision to take next, especially if it is an uncommon flow or use case, or a beginner user in the verification area.
Referring now to
The conventional approach burdens the user to find the rare paths that may be functional in an excessively large set of structural loops, most of which cannot be functional. Once a path is found, the user must understand in detail how it is functional, and what can be done to change that, aided only by two-valued values on the nets. A two-valued value indicates that although the momentary values of the nets are available their causal role (if any) in the glitch formation chain is not. Two-valued values cannot represent glitches and late edges. In particular, only having access to two-valued values means the burden is on the user to correctly navigate the combinatorial cloud constituting the structural feedback from the flop output to its clock pin-intuiting the relevant fanins/fanouts to follow. The conventional approach above is a task so complex and the effort is so high that the user in most cases just adds a configuration command that assumes that there is no glitch in the design. If the assumption is wrong, it will lead to incorrect proof results.
Referring now to
Embodiments of glitch debugging process 10 included herein propose an interactive scalable glitch signoff approach that guides the user to a design having glitch-free clock logic. In operation, the user may access glitch debugging process 10 using one or more EDA applications 20 and run the formal glitch analyzer. This service runs a formal proof that checks if the design has glitches in the clock logic. If no counterexample is found, there is no harmful combinational loop in the design, and the user may proceed with their formal verification flow. If the formal engine finds a counterexample for the scenario before, it means that the electronic design has glitches, and the user needs to debug the combinational loops and fix the glitch sources. To guide the user in debugging the glitches, glitch debugging process 10 may show an exact functional scenario that a glitch is happening. The user may choose between one or more of the debugging services that they are familiar with. Those services were improved to show an 8-value logic of the combinational loop path, showing how each signal in the glitch path is behaving. The formal glitch analyzer may run an 8-value formal verification analysis on a target group of combinational loops and verify whether there is any scenario that leads to a glitch in any of the target loops.
Referring now to
For example, glitch debugging process 10 may automatically identify components and generate the colors and annotations as shown at GUI 600. In this particular example, the main components are displayed in white (e.g., the DFF and AND gate). The late posedge and late negedge components are displayed in green and the high glitch and low glitch components are displayed in red. The values for each net may also be displayed, considering the 8-value logic mentioned before. It should be noted that the particular colors and annotation discussed herein are provided merely by way of example as numerous combinatinos of colors and annotations may be employed without departing from the scope of the present disclosure.
In some embodiments, the schematic viewer may be configured to focus on the functional logic that caused the loop, in a very linear way, highlighting the loop itself, without unnecessary branching and extra logic. This allows the user to better understand how the glitch is formed, providing a far more straightforward debugging experience. This significantly reduces the effort necessary to understand and debug the cause of the glitch.
In some embodiments, on top of the functional loop displayed, the schematic viewer may highlight specific logic based on one or more categories. Some of these may include, but are not limited to, glitch, late edge, main gate, etc. For example, glitch highlighting may include coloring one or more nets and/or gates through which the glitch has propagated with a distinctive color and annotating the nets with a symbol representing the glitch polarity (e.g., a high-glitch, low-glitch, etc.). Similarly, to the glitch highlighting, the late edge highlighting colors nets and/or gates that propagate the late edge signal with a distinctive unique color, and the nets may receive annotation relative to the late edge polarity, being it a late positive edge or a late negative edge. The main gate highlighting emphasizes the two main gates within the loop, giving them a third color and showing each of its pins' values in the schematic. These three parts provide the user with a powerful and immediate vision of the behavior of the loop. By seeing the main gates, the user discovers where the glitch is being formed, the glitch and late edge highlighting display how each gate is being affected. At this point the user has all of the necessary tools to evaluate what would be the best way to remove the glitch from the design.
In some embodiments, glitch debugging process 10 may allow the user to expand the schematic outside of the loop to better situate where the loop exists within the design, while the highlighting remains as a visual aid for the user to quickly focus back to where the glitch is occurring. GUI 600 shows how this information is useful for the user as he or she may see quickly why the glitch is happening. The glitch source (and gate) has in its input a positive edge and a late negative edge which generates a high glitch that may propagate until the glitch clock pin of the glitch flop.
In some embodiments, glitch debugging process 10 may allow the user to debug the glitch in conjunction with server application 20, thus analyzing one or more values for the signals in the waveform. The user may make use of all the existing features associated with EDA application 20 (e.g., Why/Because, source code browser integration, what-if analysis, etc. associated with the Jasper Visualize™ Interactive Debug Environment) to further investigate and understand the reason for a glitch. Users may also count with all annotations that were described in the previous schematic viewer section but in a Visualize context. In some embodiments, these annotations may be related to the values and interpretation of nets/gates in the waveform viewer (similar to the annotations and values on the schematic). It may include annotations for values such as glitch polarity, late edges, etc. The schematic viewer associated with glitch debugging process 10 and various other EDA applications 20 may be used together, while the first focuses on showing the design structure and the behavior of the design in the cycle that the glitch happened, the others may help the user to understand what was necessary to make the design get into the glitch state.
In the specific example shown in
Referring now to
In some embodiments, glitch debugging process 10 may provide a confirmation step option, so that the user may re-run the formal glitch analyzer in a specific path to check if the glitch has been fully addressed. In some cases, it is possible that the user's modification was not entirely successful, and the glitch may still occur in another state. The formal glitch analyzer associated with glitch debugging process 10 may detect such a case and show a new trace/schematic to the user reducing the turnaround time. Once the user has addressed all sources of glitches, they may continue their formal verification flow with the guarantee that there are no bugs related to glitches in the design.
Referring now to
In some embodiments, and as discussed above, a formal glitch analyzer may be used as part of glitch debugging process as is shown in
In some embodiments, the formal glitch analyzer may also be used as a confirmation step. In operation, after the user makes any RTL/setup change with the intention to fix the glitch, he or she may rerun the formal glitch analyzer in the exact path that they were debugging, and the 8-value flop abstraction may be placed only in the flops in the path of the specified combo loops. If the formal glitch analyzer can detect a glitch scenario, it means that the changes were wrong and/or not sufficient to fix the issue. If the change was wrong, he or she may be able to immediately visualize a scenario in which the glitch is happening and may decide to undo the change or continue improving it to fix all glitch scenarios. This step is important to avoid unnecessary changes and saves time by enabling the user to focus on one loop until it is fixed, without any context change.
Referring again to
In some embodiments, and referring again to
A sampling condition when there are no loops is given by:
A sampling condition for handling loops is given by:
A glitch condition is given by:
Referring now to
Referring also to
Referring also to
It will be apparent to those skilled in the art that various modifications and variations can be made in the embodiments of the present disclosure without departing from the spirit or scope of the invention. Thus, it is intended that embodiments of the present disclosure cover the modifications and variations of this invention provided they come within the scope of the appended claims and their equivalents.