The invention generally relates to integrated circuit (IC) verification and more particularly to IC verification involving static and quasi-static signals.
A challenge of applying static analysis to integrated circuit (IC) designs is the existence of information that is available, or otherwise known, to the user but not to the verification system. As a result, incorrect violations are reported as the verification system cannot infer or understand such knowledge possessed by the designer. Correctly handling static and quasi-static signals of an IC is one common example. A static signal is a signal that never changes values while a quasi-static signal is a signal that changes value infrequently and under specific conditions. When these signals are not provided as an input to the verification system, some reported violations related to such signals are incorrect. The user usually waives such violations knowing that such signals are static or quasi-static. Incorrect analysis in the presence of static and quasi-static signals is typical when performing clock domain crossing (CDC) verification. As ICs become larger, the number of static and quasi-static signals increases. As a result, the manual step of reviewing these violations decreases the productivity of the user and makes it more difficult to achieve design verification closure.
It would be therefore advantageous to provide a system and method that overcome the limitations of prior art. Specifically, it would be advantageous if the system could automatically identify static and quasi-static signals in IC designs and use this information when reporting violations to the user.
A method implemented in a computing system is provided for the identification of static signals or quasi-static signals of an integrated circuit in a design verification of such a circuit. The method begins by receiving a description of the design of at least a portion of the circuit. The description may be provided in a register transfer level (RTL) language. Then, any one or more signals having a specified characteristic of a static signal or a quasi-static signal are identified from the received description. The identification of any one or more signals may be carried out, for example, by filtering candidate signals in the received description that are involved in a clock domain crossing (CDC) or a timing exception. The specified characteristic of a static or quasi-static signal may be selected from any one or more of: (1) a fan-out size exceeding a specified threshold fan-outsize; (2) a toggle frequency in a simulation trace that is below a specified threshold frequency; and (3) a signal name in the received description that appears in a specified list accessed from the memory.
A listing of any such identified signal or signals is stored in a memory. In verifying a design for the integrated circuit, after receiving an error report from a verification program that checked the circuit, a filtering process may be performed using the listing to match errors in the error report with any signals that have been identified as static or quasi-static. One can either (1) eliminate from the error report any errors respective of signals appearing in the listing, or (2) reorder the error report such that errors respective of signals appearing in the listing appear in a separate section from all other errors. In either case, a revised report may then be stored in memory.
A programmable system for the identification of static signals and quasi-static signals of an integrated circuit as part of design verification of the circuit is provided. The system includes a processing unit and a memory coupled to the processing unit. The memory contains program instructions that when executed by the processing unit configure the system to carry out the aforementioned method steps, namely to receive a description of the design of at least a portion of the circuit; identify from the received description any one or more signals having a specified characteristic of a static signal or a quasi-static signal; and, store a listing in a memory respective of any such identified signal.
A system and method identify potentially static and/or quasi-static signals within an integrated circuit (IC), or portion thereof. This is performed, typically, as part of a verification process in order to flag cases where the verification system would otherwise indicate an error, for example at a clock domain crossing (CDC). Identifying a signal of the IC as being static or quasi-static improves the quality of results of verification and makes it easier for a prospective user to concentrate on actual rather than spurious issues reported during verification.
One of ordinary skill in the art would readily appreciate that identifying static and quasi-static signals is advantageous for static analysis. For example, in CDC analysis, identifying that the source flop of a clock domain crossing has a static, or quasi-static, behavior eliminates the need to synchronize this flop to the destination clock domain. Similarly, it is beneficial to identify static signals or quasi-static signals in timing exception verification. An event where a signal changes its value may propagate through several stages. However, if the signal is static or quasi-static, such an event will not happen and therefore no event will propagate making a path a valid false path or a valid multi-cycle path. Without this knowledge an exception verification tool would incorrectly point such timing exception as an incorrect timing exception. This leads to an additional burden on the designer verifying the circuit being checked.
There are several methods to identify static signal or quasi-static signals. Typically the number of fan-outs of such signals is very high. This is due to the fact that these are usually control signals such as configuration registers that control various part of the IC design, or portions thereof. Since these signals change infrequently, there is no need to synchronize them as they cross into different domains.
The principles of the invention are implemented as hardware, firmware, software or any combination thereof, including but not limited to a CAD system and software products thereof. Moreover, the software is preferably implemented as an application program tangibly embodied on a program storage unit or computer readable medium. The application program may be uploaded to, and executed by, a machine comprising any suitable architecture. Preferably, the machine is implemented on a computer platform having hardware such as one or more central processing units (“CPUs”), a memory, and input/output interfaces. The computer platform may also include an operating system and microinstruction code. The various processes and functions described herein may be either part of the microinstruction code or part of the application program, or any combination thereof, which may be executed by a CPU, whether or not such computer or processor is explicitly shown. In addition, various other peripheral units may be connected to the computer platform such as an additional data storage unit and a printing unit and/or display unit.
The present application claims priority under 35 U.S.C. 119(e) from prior U.S. Provisional Application No. 61/786,671, filed on Mar. 15, 2013.
Number | Date | Country | |
---|---|---|---|
61786671 | Mar 2013 | US |