US20080263487A1 - Multi-Format Consistency Checking Tool - Google Patents
Multi-Format Consistency Checking Tool Download PDFInfo
- Publication number
- US20080263487A1 US20080263487A1 US12/144,457 US14445708A US2008263487A1 US 20080263487 A1 US20080263487 A1 US 20080263487A1 US 14445708 A US14445708 A US 14445708A US 2008263487 A1 US2008263487 A1 US 2008263487A1
- Authority
- US
- United States
- Prior art keywords
- design
- rules
- user
- rule
- translator
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3323—Design verification, e.g. functional simulation or model checking using formal methods, e.g. equivalence checking or property checking
Definitions
- FIG. 1 is a block diagram of a data processing system incorporating a consistency checker.
- FIG. 2 is a block diagram showing details of the consistency checker of FIG. 1 .
- FIG. 3 is a flowchart showing a method of consistency checking.
- FIGS. 4( a ) and 4 ( b ) are flow charts showing a method of initializing a consistency checker, wherein a user can change the type of designs to be checked and can further change the terms included in rules of the checker.
- FIG. 5 shows an example of a user interface that allows a user to select rules to use during consistency checking.
- FIG. 6 shows an example user interface that allows a user to add a new term to a rule set.
- FIG. 7( a ) shows a portion of an example design representation written in the C programming language.
- FIG. 7( b ) shows a portion of an example design representation written in the Verilog hardware description language.
- FIG. 8( a ) is a flowchart showing an example abstraction function used in a translator for design types of the C programming language.
- FIG. 8( b ) is a flowchart showing an example abstraction function used in the translator for design types of the Verilog hardware description language.
- a tool might check a layout view from the schematic database against a design representation created in a different tool that is used to verify timing.
- a checker engine can evaluate rules that are design type-neutral to determine whether the multiple design representations meet semantic and syntactic requirements.
- the translator abstraction functions may be design type specific.
- a user can add rules using predefined rule terms. The user may add terms to the rule set and to make new rules with the added terms. Each new term added may have a corresponding translator portion for each design type that acquires information from designs of the design type relating to the term.
- user means any person, persons, or software controlled by a person or persons.
- FIG. 1 is a block diagram 100 of a data processing system incorporating a consistency checker.
- FIG. 1 shows a processor 102 coupled to a memory 104 via, for example, bus 107 .
- Processor 102 executes instructions stored in memory 104 , such as the instructions of consistency checker software 120 .
- Memory 104 may include data such as one or more rule sets 122 and design representations 124 that have different formats from each other.
- FIG. 1 also shows an input device 106 , an output device 108 , and a computer readable medium 110 .
- Input device 106 provides a way for a user to communicate commands to the system (such as a commend to start consistency checker 120 ). Input device 106 also allows the user to add terms to the rule set 122 and to make modifications and additions to the translators 124 , as described below in detail.
- Input device 106 can be any appropriate device, such as a keyboard, trackball, voice input system, scanner, and so on.
- Output device 108 provides a way to present results of the consistency checker and to interact with the user.
- Output device 108 can be any appropriate device, such as a display screen, a printer, and so on.
- Computer readable medium 110 is used, for example, to store at least consistency checker software 120 and in some embodiments, to store other contents of memory 104 , such as rules 122 and translators 124 , as needed by consistency checker 120 .
- Computer readable medium 110 can be any appropriate medium used to store at least consistency checker 122 .
- Computer readable medium 110 can include, without limitation, a memory, a memory chip, a floppy disk, a CD, a DVD, and signals on a wired or wireless network medium.
- certain elements can be distributed over a network (not shown), such as the Internet, a LAN, a private network, or a wireless network.
- a network such as the Internet, a LAN, a private network, or a wireless network.
- a data processing system 100 may contain a basic rule set
- additional rule sets can be downloaded over the network.
- additions to a rule set 122 can be stored using a distributed model.
- all rules in such a system would be stored in a distributed fashion.
- some rules would reside locally and some would reside on machines accessible through the network.
- system 100 can also include other elements not shown in the figure.
- System 100 is provided by way of example and is not intended to limit the invention in any way.
- module may be used throughout this document. As used herein, “module” indicates software having a particular functionality. The term module does not limit the invention to a particular organization or division of functionality and various implementations of the invention may use various internal organizational systems for software implementing the invention instead of, or in addition to, those shown in the Figure.
- consistency checker 120 can be implemented in hardware, software, firmware, or any combination thereof. Examples can be a standalone tool or as a part of a larger system, wherein the consistency checker functionality and rule addition and change functionality is a part of a larger purpose of a tool.
- a consistency checker can check consistency of a design representation provided in any appropriate format. Many of the methods described herein can be run in parallel or in series, can be run on a server farm, multiple CPU machines, cluster, etc.
- FIG. 2 is a block diagram 200 showing details of the consistency checker 120 , which receives multiple types of design representations.
- design representation # 1 124 may be a Verilog RTL model
- design representation # 2 may be a Pathmill black box timing model (Pathmill is a timing and analysis tool available from Synopsys, Inc.).
- another design representation might be a model in the C programming language. It is contemplated that any type of design representation 124 can be used, assuming that appropriate abstraction functions 207 and translators 206 are constructed for them. While it may be possible that not all design representations are able to be checked for every possible rule, it is contemplated that most rules 122 will be able to be checked for most type of design representations 124 . Special cases of rules that can only be checked for a subset of design types may also exist. The consistency checker will note these and inform users who try to perform invalid checks.
- FIG. 2 shows a checking engine 202 that accesses one or more rules of rule sets 122 .
- Checking engine 202 also receives input from a GUI 203 (or other appropriate input mechanism, such as a command line interface).
- Checking engine 202 also receives input from translators 206 .
- a separate translator 206 exists for each type of design representation that is to be checked.
- Each translator includes at least one abstraction function 207 for the type of design to be checked.
- checking engine 202 can perform consistency checks between design representations that are all of a same type (using a single translator 206 ) or can perform consistency checks between design representations of different types (using multiple translators 206 for each of the respective types of design representations).
- checking engine 202 outputs a report 204 describing the result of the consistency checker 202 and/or further describing details of the process itself if the user so elects.
- FIG. 3 is a flowchart 300 showing a method of consistency checking as managed by checking engine 202 of FIG. 2 .
- a user specifies 302 one or more design representations, some of which may have formats different from others.
- the user may specify design representations 124 using: Verilog RTL format, Pathmill format, the C programming language, the e verification, an HDL gate level netlist, a transistor level netlist, a Fastscan library model, and gate level models.
- the user also specifies 304 which rules to evaluate during the consistency check.
- the user specifies rules by clicking on one of the rule sets or rules 122 displayed on an output screen.
- the user may actually enter the body of the rules himself, either by typing them, or by selecting from available terms and operators that can be used to make the rule set (see, for example, FIG. 5 ).
- the user may select rules from a current rule 122 set that is then checked for the received design representations.
- all rules in a rule set will be checked for the input design representations 124 .
- multiple rule sets may be specified at one time.
- different rules sets 122 (or parts of rule sets) may be specified for different subsets of the design rules 124 to be checked.
- FIG. 5 shows an example of a user interface 500 that allows a user to select rules to use during consistency checking.
- the user interface lists all existing rule sets 506 in the system. The user has selected a rule set A 507 . Also listed are the individual rules 502 in a selected rule set 507 , such as selected rule 504 . In this example, the user has selected a particular rule 504 (“all inputs triggered by falling clock edge”) that he wishes to apply during the consistency check of the multiple design representations 124 .
- FIG. 5 shows an interface 508 that shows the user all defined terms for the selected rule set A 507 . (Alternately, the user may select terms used in all rule sets, or in any rule set of the system).
- a term can only be part of the rule set when there exists a corresponding abstraction function in translator 206 that will identify aspects of design representations 124 relating to that term.
- a predetermined abstraction function in each of translators 206 that will determine information relating to inputs triggered by a rising clock edge for each currently accepted type of design representation 124 . If this is not the case for a particular term, certain embodiments will note that some types of design representations 124 cannot be checked using this term.
- checking engine 202 loops 306 , 312 through the specified rules 122 to apply them to the design representations.
- the translator abstraction function 206 , 207 corresponding to each design specification 124 performs translation 308 of the corresponding design representation(s) to generate the information needed to evaluate the rule. For example, if the rule is “all inputs are triggered by rising clock edge,” the translator 206 will determine whether this is true for each input design representation 124 corresponding to the translator's type.
- rules may evaluate to Boolean values.
- rules may have Boolean predicates and additional actions associated with those predicates (for example, “If all inputs triggered by rising edge, do ⁇ action>.”) If all rules selected by the user evaluate to “True,” then the consistency checking operation is complete and the design is consistent, at least for the checks performed.
- a report 314 showing the consistency or lack thereof of the design representations is output by checking engine 202 .
- FIGS. 4( a ) and 4 ( b ) are flow charts showing a method of initializing consistency checker 120 .
- the user specifies which types of design representations he wants to check in the future.
- the steps of FIGS. 4( a ) and 4 ( b ) are generally performed by an initialization module of checking engine 202 , although they can also be performed by a separate toolset that allows users to perform their own modifications on the rules and translators of the consistency checker.
- this discussion assumes that the use is interacting with consistency checker 120 , it will be understood that other entities such as multiple users or other software programs could also interact with consistency checker 120 .
- consistency checker 120 determines that it contains a translator for the specified design type, then control passes to element A of FIG. 4( b ). If no translator exists 404 for the specified design type, however, it is necessary to obtain such a translator for each type of design representation without a translator ( 406 , 410 ).
- Element 408 shows an example in which the user actually enters or uploads a translator 206 or abstraction function 207 that the user has prepared. Alternately, the user may load a translator 206 , 207 that he obtained at the same time he obtained his new tool (prepared and supplied by the tool manufacturer). Alternately, the user may be able to locate and access a translator written by other users or third party companies and available over a network.
- the important aspect of element 408 is that consistency checker is organized in such a way that a new translator module can be plugged into it, allowing the consistency checker to accept new types of design representations.
- FIG. 4( b ) shows an example 450 where the user wants to add 452 new rule terms to the consistency checker.
- consistency checker 120 was shipped with a rule that allowed a user to check whether inputs were triggered by rising clock edges, but not whether inputs were triggered by falling clock edges.
- the user would need to help the translators 206 understand what a falling clock edge was and how to recognize one in the various types of design representations 124 .
- Elements 454 , 458 loop through each new term that the user desires to add 456 to his rule set.
- the term can be added to the terms available in the rule set. For example, the term would be displayed with the other terms available to the set in area 508 of FIG. 5 .
- FIG. 6 shows an example user interface 650 used to allow a user to add a new term 651 to a rule set.
- the user enters 652 a term (such as “falling clock edge”) that has not existed before but that he wishes to use in a new rule.
- the user also enters or specifies the names of translators 206 (or downloadable abstraction functions that can be added to translators) that will allow each type of translator in the system to recognize the new rule term.
- the user specifies 656 which rule set(s) 122 are to allow rules with the new term.
- rules 122 cover syntax, and semantics of the design representations.
- a rule set 122 b might include the syntactic rule that parameters in functions calls in the design representations each contain the same number and types of parameters. These rules are collectively referred to as “signature checking.”
- a rule set 122 might include the semantic rule that a design representation must trigger all events on a rising clock edge.
- a translator 206 For a rule to be checkable by a consistency checker, a translator 206 must exist that extracts the terms in the rule from all existing types of design representations (unless the design type is flagged as an exception to this requirement, which is done in some embodiments).
- FIG. 7( a ) shows a portion of an example design representation written in the C programming language. Specifically, the body of the example C language design representation reads as follows:
- a function “clkfn” is as follows:
- the C code calls predefined library functions that allow the C code to interact with Verilog RTL.
- functions vpi_scan 704 , vpi_register 706 , and vpi_get_value 710 are calls to vpi library functions in IEC/IEEE 61691-4-2004 “Verilog Programming Language Interface Standard,” which is herein incorporated by reference.
- the vpi_handle type 702 declares the variables inh, outh, and clkh to be “handles” that hold returned values from other vpi functions.
- a vpi_register call 706 registers a callback to the function clkfn 708 , which includes the vpi_get_value function call 710 which places a value in the handle inh.
- FIG. 7( b ) shows a portion 750 of an example design representation written in the Verilog RTL hardware description language. Specifically, the Verilog RTL design representation reads as follows:
- FIG. 7( a ) The examples of a design representation in the design type C ( FIG. 7( a )) and in the design type Verilog RTL ( FIG. 7( b )) are presented here so that an example of an abstraction function 207 can be discussed for each design type.
- the rule set 122 includes a term “inputs triggered on rising edge,” the term must correspond to abstraction functions 207 in translators 206 for each possible design type in the system (C and Verilog RTL).
- FIG. 8( a ) is a flowchart 800 showing an example abstraction function 207 used in a translator 206 for design types of the C programming language of FIG. 7( a ).
- FIG. 8( b ) is a flowchart 850 showing an example abstraction function 207 used in the translator 206 for design types of the Verilog RTL hardware description language of FIG. 7( b ).
- an abstraction function 800 in the translator 206 for design type C performs the following in loop 802 , 808 to find inputs triggered by a rising clock edges:
- an abstraction function 850 in the translator for design type Verilog RTL performs the following in loop 852 , 858 to find inputs triggered by a rising clock edges:
- the abstraction function of FIG. 8( a ) identifies which inputs are active on their rising edge.
- Table 1 shows additional examples of terms that can be used to make rule set 122 . These examples are not to be taken in a limiting sense and Table 1 is herein incorporated by reference. It will be understood that other embodiments can include different rules and terms, more rules and terms, or fewer rules and terms.
- Table 1 provides examples of some terms and rule descriptions that may be included in some embodiments. Examples of terms and descriptions that can be used in some embodiments are described in other tools, such as the Mentor Graphics Inc. tool called 0-In Check TM. Importantly, in some embodiments of the invention, the terms below can be checked across multiple representations of a design. Other embodiments may include more, or fewer terms, or differing subsets of these and other terms.
- Arithmetic overflow error Checks that arithmetic assignments to variables cannot overflow or underflow the variables.
- Register race violation Ensures no register assignment generates a circuit with a potential race condition.
- Multiply-driven register/latch Ensures no register or latch is driven by more than one source.
- Unreachable block Ensures all blocks of code can be reached Unconnected port - Ensures all ports are connected. Undriven logic - Ensures every register input can be driven by the design's primary inputs.
- Variable declared, but not used Variable declared, but not assigned Variable assigned from multiple processes Implicit variable declaration Mismatched widths in assignment Mismatched widths in port connection Null port connection
- Multiple occurrences of port in module port list Instantiation specifies fewer ports than module definition Type real may not be synthesizable Hierarchical reference may not be synthesizable Specify block may not be synthesizable UDP may not be synthesizable Force/release may not be synthesizable
- Duplicate case branch expression violates parallel_case X or Z value on the right-hand side of assignment Delay in non-blocking assignment Constant one delay Constant zero delay Constant negative delay Instance port connections not by name Case statement has no default Case statement not fully specified Redundant case branch expressions Overlapping case branch expressions
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
A method and system for performing consistency checking of one or more design representations having different design types. A translator for each design type obtains information from each design needed to evaluate rules that are design type-neutral. The described examples also allow a user to add rules using predefined rule terms. In addition, certain examples allow the user to add terms to the rule set and to make new rules with the added terms. Each new term added to a rule set has a corresponding abstraction function in a translator for each design type. Thus, the abstraction functions are not design type-neutral.
Description
- As IC design evolves, tools are created to solve new design challenges. These tools produce new and different formats to represent the design. When this occurs, conventional tools lack the ability to check the consistency of a design encoded in several different design representations.
- It would be desirable to implement a method, system, and tool that is able to perform syntax and semantic checks for and against a wide variety of design representations.
- The teachings described herein can be readily understood by considering the following detailed description in conjunction with the accompanying drawings. Like reference numerals are used for like elements in the accompanying drawings.
-
FIG. 1 is a block diagram of a data processing system incorporating a consistency checker. -
FIG. 2 is a block diagram showing details of the consistency checker ofFIG. 1 . -
FIG. 3 is a flowchart showing a method of consistency checking. -
FIGS. 4( a) and 4(b) are flow charts showing a method of initializing a consistency checker, wherein a user can change the type of designs to be checked and can further change the terms included in rules of the checker. -
FIG. 5 shows an example of a user interface that allows a user to select rules to use during consistency checking. -
FIG. 6 shows an example user interface that allows a user to add a new term to a rule set. -
FIG. 7( a) shows a portion of an example design representation written in the C programming language. -
FIG. 7( b) shows a portion of an example design representation written in the Verilog hardware description language. -
FIG. 8( a) is a flowchart showing an example abstraction function used in a translator for design types of the C programming language. -
FIG. 8( b) is a flowchart showing an example abstraction function used in the translator for design types of the Verilog hardware description language. - The figures depict embodiments for purposes of illustration only. One can recognize from the following discussion that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles described herein.
- The following paragraphs describe various embodiments of a multi-format consistency checker of one or more design representations having different formats. For example, a tool might check a layout view from the schematic database against a design representation created in a different tool that is used to verify timing. In this example, a checker engine can evaluate rules that are design type-neutral to determine whether the multiple design representations meet semantic and syntactic requirements. Because the information needed to evaluate a rule may be extracted from design representations of different design types, the translator abstraction functions may be design type specific. In this example, a user can add rules using predefined rule terms. The user may add terms to the rule set and to make new rules with the added terms. Each new term added may have a corresponding translator portion for each design type that acquires information from designs of the design type relating to the term.
- Note, in the following description user means any person, persons, or software controlled by a person or persons.
-
FIG. 1 is a block diagram 100 of a data processing system incorporating a consistency checker.FIG. 1 shows aprocessor 102 coupled to amemory 104 via, for example,bus 107.Processor 102 executes instructions stored inmemory 104, such as the instructions ofconsistency checker software 120.Memory 104 may include data such as one ormore rule sets 122 anddesign representations 124 that have different formats from each other. -
FIG. 1 also shows aninput device 106, anoutput device 108, and a computerreadable medium 110.Input device 106 provides a way for a user to communicate commands to the system (such as a commend to start consistency checker 120).Input device 106 also allows the user to add terms to the rule set 122 and to make modifications and additions to thetranslators 124, as described below in detail.Input device 106 can be any appropriate device, such as a keyboard, trackball, voice input system, scanner, and so on.Output device 108 provides a way to present results of the consistency checker and to interact with the user.Output device 108 can be any appropriate device, such as a display screen, a printer, and so on. Computerreadable medium 110 is used, for example, to store at leastconsistency checker software 120 and in some embodiments, to store other contents ofmemory 104, such asrules 122 andtranslators 124, as needed byconsistency checker 120. Computerreadable medium 110 can be any appropriate medium used to store at leastconsistency checker 122. Computerreadable medium 110 can include, without limitation, a memory, a memory chip, a floppy disk, a CD, a DVD, and signals on a wired or wireless network medium. - Moreover, in certain embodiments of the system, certain elements can be distributed over a network (not shown), such as the Internet, a LAN, a private network, or a wireless network. For example, while a
data processing system 100 may contain a basic rule set, additional rule sets can be downloaded over the network. Similarly, additions to a rule set 122, such as additional rule terms and accompanying translators, can be stored using a distributed model. In some embodiments, all rules in such a system would be stored in a distributed fashion. In other embodiments, some rules would reside locally and some would reside on machines accessible through the network. - It is understood herein that
system 100 can also include other elements not shown in the figure.System 100 is provided by way of example and is not intended to limit the invention in any way. The term “module” may be used throughout this document. As used herein, “module” indicates software having a particular functionality. The term module does not limit the invention to a particular organization or division of functionality and various implementations of the invention may use various internal organizational systems for software implementing the invention instead of, or in addition to, those shown in the Figure. - Moreover, some examples, including
consistency checker 120, can be implemented in hardware, software, firmware, or any combination thereof. Examples can be a standalone tool or as a part of a larger system, wherein the consistency checker functionality and rule addition and change functionality is a part of a larger purpose of a tool. A consistency checker can check consistency of a design representation provided in any appropriate format. Many of the methods described herein can be run in parallel or in series, can be run on a server farm, multiple CPU machines, cluster, etc. -
FIG. 2 is a block diagram 200 showing details of theconsistency checker 120, which receives multiple types of design representations. For example,design representation # 1 124 may be a Verilog RTL model, whiledesign representation # 2 may be a Pathmill black box timing model (Pathmill is a timing and analysis tool available from Synopsys, Inc.). For example, another design representation might be a model in the C programming language. It is contemplated that any type ofdesign representation 124 can be used, assuming thatappropriate abstraction functions 207 andtranslators 206 are constructed for them. While it may be possible that not all design representations are able to be checked for every possible rule, it is contemplated thatmost rules 122 will be able to be checked for most type ofdesign representations 124. Special cases of rules that can only be checked for a subset of design types may also exist. The consistency checker will note these and inform users who try to perform invalid checks. -
FIG. 2 shows achecking engine 202 that accesses one or more rules ofrule sets 122. Checkingengine 202 also receives input from a GUI 203 (or other appropriate input mechanism, such as a command line interface). Checkingengine 202 also receives input fromtranslators 206. In an embodiment, aseparate translator 206 exists for each type of design representation that is to be checked. Each translator includes at least oneabstraction function 207 for the type of design to be checked. Thus, checkingengine 202 can perform consistency checks between design representations that are all of a same type (using a single translator 206) or can perform consistency checks between design representations of different types (usingmultiple translators 206 for each of the respective types of design representations). In an embodiment, checkingengine 202 outputs areport 204 describing the result of theconsistency checker 202 and/or further describing details of the process itself if the user so elects. - The following paragraphs provide a more detailed explanation of the use of
consistency checker 120.FIG. 3 is aflowchart 300 showing a method of consistency checking as managed by checkingengine 202 ofFIG. 2 . A user specifies 302 one or more design representations, some of which may have formats different from others. For example, the user may specifydesign representations 124 using: Verilog RTL format, Pathmill format, the C programming language, the e verification, an HDL gate level netlist, a transistor level netlist, a Fastscan library model, and gate level models. - The user also specifies 304 which rules to evaluate during the consistency check. The user specifies rules by clicking on one of the rule sets or
rules 122 displayed on an output screen. In other embodiments, the user may actually enter the body of the rules himself, either by typing them, or by selecting from available terms and operators that can be used to make the rule set (see, for example,FIG. 5 ). In an embodiment, the user may select rules from acurrent rule 122 set that is then checked for the received design representations. In other embodiments, all rules in a rule set will be checked for theinput design representations 124. In other embodiments, multiple rule sets may be specified at one time. In other embodiments, different rules sets 122 (or parts of rule sets) may be specified for different subsets of thedesign rules 124 to be checked. -
FIG. 5 shows an example of auser interface 500 that allows a user to select rules to use during consistency checking. In the example, the user interface lists all existing rule sets 506 in the system. The user has selected arule set A 507. Also listed are theindividual rules 502 in a selected rule set 507, such as selectedrule 504. In this example, the user has selected a particular rule 504 (“all inputs triggered by falling clock edge”) that he wishes to apply during the consistency check of themultiple design representations 124. In addition,FIG. 5 shows aninterface 508 that shows the user all defined terms for the selected rule setA 507. (Alternately, the user may select terms used in all rule sets, or in any rule set of the system). - The user is allowed 510 to use these defined
rule terms 512, along with a special type of terms calledoperators 514, to define new rules to be added the current rule set 507. In the described embodiment, a term can only be part of the rule set when there exists a corresponding abstraction function intranslator 206 that will identify aspects ofdesign representations 124 relating to that term. Thus, for example, because “rising edge” is a term in rule set 502, there exists a predetermined abstraction function in each oftranslators 206 that will determine information relating to inputs triggered by a rising clock edge for each currently accepted type ofdesign representation 124. If this is not the case for a particular term, certain embodiments will note that some types ofdesign representations 124 cannot be checked using this term. - Returning to
FIG. 3 , once the user has specified thedesign representations 124 to check and has specified therules 122 to check, checkingengine 202loops rules 122 to apply them to the design representations. For each rule, thetranslator abstraction function design specification 124 performstranslation 308 of the corresponding design representation(s) to generate the information needed to evaluate the rule. For example, if the rule is “all inputs are triggered by rising clock edge,” thetranslator 206 will determine whether this is true for eachinput design representation 124 corresponding to the translator's type. - Once translation is complete, the rule is evaluated 310 to see whether it evaluates to true for the
input design representations 124. In some embodiments, rules may evaluate to Boolean values. In other embodiments, rules may have Boolean predicates and additional actions associated with those predicates (for example, “If all inputs triggered by rising edge, do <action>.”) If all rules selected by the user evaluate to “True,” then the consistency checking operation is complete and the design is consistent, at least for the checks performed. Areport 314 showing the consistency or lack thereof of the design representations is output by checkingengine 202. -
FIGS. 4( a) and 4(b) are flow charts showing a method of initializingconsistency checker 120. Inelement 402, the user specifies which types of design representations he wants to check in the future. The steps ofFIGS. 4( a) and 4(b) are generally performed by an initialization module of checkingengine 202, although they can also be performed by a separate toolset that allows users to perform their own modifications on the rules and translators of the consistency checker. Although this discussion assumes that the use is interacting withconsistency checker 120, it will be understood that other entities such as multiple users or other software programs could also interact withconsistency checker 120. - Assume that the user specifies a design type that has not been part of the consistency checker on this user's system in the past. For example, the user may have recently acquired a new design tool that outputs a type of
design representation 124 that he has not used before. Certain initialization operations are needed to allow the consistency checker to accept the new design type. If, inelement 404,consistency checker 120 determines that it contains a translator for the specified design type, then control passes to element A ofFIG. 4( b). If no translator exists 404 for the specified design type, however, it is necessary to obtain such a translator for each type of design representation without a translator (406, 410).Element 408 shows an example in which the user actually enters or uploads atranslator 206 orabstraction function 207 that the user has prepared. Alternately, the user may load atranslator element 408 is that consistency checker is organized in such a way that a new translator module can be plugged into it, allowing the consistency checker to accept new types of design representations. -
FIG. 4( b) shows an example 450 where the user wants to add 452 new rule terms to the consistency checker. As a simple example, suppose thatconsistency checker 120 was shipped with a rule that allowed a user to check whether inputs were triggered by rising clock edges, but not whether inputs were triggered by falling clock edges. To add such a rule, the user would need to help thetranslators 206 understand what a falling clock edge was and how to recognize one in the various types ofdesign representations 124.Elements translators 206 “understand” and can extract information relating to a term, the term can be added to the terms available in the rule set. For example, the term would be displayed with the other terms available to the set inarea 508 ofFIG. 5 . -
FIG. 6 shows anexample user interface 650 used to allow a user to add anew term 651 to a rule set. In the example, the user enters 652 a term (such as “falling clock edge”) that has not existed before but that he wishes to use in a new rule. The user also enters or specifies the names of translators 206 (or downloadable abstraction functions that can be added to translators) that will allow each type of translator in the system to recognize the new rule term. Last, the user specifies 656 which rule set(s) 122 are to allow rules with the new term. - The following paragraphs provide specific examples of rules, design types, and abstraction functions 207 for the
rules 122. It will be understood by persons of ordinary skill in the art that it is not possible to provide an exhaustive list of all possible design types or of all possible rules or rule terms. As new design types are brought to market or otherwise introduced,new translators 206 for those design types will be introduced. Similarly, new rules to check for consistency problems that did not exist before the new design types will be introduced and made available to circuit designers using consistency checkers. For examples of common test rules, see Chapter 5, “RTL Coding Guidelines”, Section 5.4, in the “Reuse Methodology Manual” by Michael Keating and Pierre Bricaud, which is herein incorporated by reference. This document provides some examples of rules that might be included in a typical rule set usable with an embodiment. In an embodiment, rules 122 cover syntax, and semantics of the design representations. - For example a rule set 122 b might include the syntactic rule that parameters in functions calls in the design representations each contain the same number and types of parameters. These rules are collectively referred to as “signature checking.” As another example, a
rule set 122 might include the semantic rule that a design representation must trigger all events on a rising clock edge. For a rule to be checkable by a consistency checker, atranslator 206 must exist that extracts the terms in the rule from all existing types of design representations (unless the design type is flagged as an exception to this requirement, which is done in some embodiments). -
FIG. 7( a) shows a portion of an example design representation written in the C programming language. Specifically, the body of the example C language design representation reads as follows: -
int Cmodel(. . .) {vpiHandle inh, outh, clkh; inh = vpi_scan (xx, . . .) outh = vpi_scan (xx, . . .) clkh = vpi_scan (XX, . . .) . . . vpi_register(clkh, “risingedge”, clkfn); . . . } - In
FIG. 7( a), a function “clkfn” is as follows: -
int clkfn(. . .) { s_vpi_value inv; . . . vpi_get_value(inh,&inv); . . . } - In the example 700 of
FIG. 7( a), the C code calls predefined library functions that allow the C code to interact with Verilog RTL. For example, functions vpi_scan 704,vpi_register 706, andvpi_get_value 710 are calls to vpi library functions in IEC/IEEE 61691-4-2004 “Verilog Programming Language Interface Standard,” which is herein incorporated by reference. Thevpi_handle type 702 declares the variables inh, outh, and clkh to be “handles” that hold returned values from other vpi functions. Avpi_register call 706 registers a callback to thefunction clkfn 708, which includes the vpi_get_value function call 710 which places a value in the handle inh. -
FIG. 7( b) shows aportion 750 of an example design representation written in the Verilog RTL hardware description language. Specifically, the Verilog RTL design representation reads as follows: -
module Vmodel (in, out, clk) ; input in; output out; reg out; input clk; ... always @(posedge clk) out=in ; ... endmodule - The examples of a design representation in the design type C (
FIG. 7( a)) and in the design type Verilog RTL (FIG. 7( b)) are presented here so that an example of anabstraction function 207 can be discussed for each design type. For example, if the rule set 122 includes a term “inputs triggered on rising edge,” the term must correspond toabstraction functions 207 intranslators 206 for each possible design type in the system (C and Verilog RTL). -
FIG. 8( a) is aflowchart 800 showing anexample abstraction function 207 used in atranslator 206 for design types of the C programming language ofFIG. 7( a).FIG. 8( b) is aflowchart 850 showing anexample abstraction function 207 used in thetranslator 206 for design types of the Verilog RTL hardware description language ofFIG. 7( b). - In
FIG. 8( a), anabstraction function 800 in thetranslator 206 for design type C performs the following inloop -
- For each occurrence of vpi_scan 704 (here, for in, out, and clock), note the handle receiving the
vpi_scan 704 result (for example, “inh”) (see element 804). - Find the
vpi_register call 706 containing “risingedge” andclkfn 707, which callsclkfn 708.Clkfn 708 includes a call tovpi_get_value 710 for that handle (see element 806). The abstraction function ofFIG. 8( a) identifies which inputs are sampled on the rising edge of the clock.
- For each occurrence of vpi_scan 704 (here, for in, out, and clock), note the handle receiving the
- In
FIG. 8( b), anabstraction function 850 in the translator for design type Verilog RTL performs the following inloop -
- For each occurrence of “input” (752, 754), return a list of IDs following “input” (see element 854). Next, note the number and types of IDs following input (
element 856. - Next, “always @(posedge clk)” identifies events that occur on a
positive clock edge 756.
- For each occurrence of “input” (752, 754), return a list of IDs following “input” (see element 854). Next, note the number and types of IDs following input (
- The abstraction function of
FIG. 8( a) identifies which inputs are active on their rising edge. - Table 1 shows additional examples of terms that can be used to make
rule set 122. These examples are not to be taken in a limiting sense and Table 1 is herein incorporated by reference. It will be understood that other embodiments can include different rules and terms, more rules and terms, or fewer rules and terms. - Although the description herein represent several embodiments, various modifications can be made. Accordingly, the description is intended to be illustrative, but not limiting, of the scope of the invention.
-
TABLE 1 Table 1 provides examples of some terms and rule descriptions that may be included in some embodiments. Examples of terms and descriptions that can be used in some embodiments are described in other tools, such as the Mentor Graphics Inc. tool called 0-In Check ™. Importantly, in some embodiments of the invention, the terms below can be checked across multiple representations of a design. Other embodiments may include more, or fewer terms, or differing subsets of these and other terms. Arithmetic overflow error - Checks that arithmetic assignments to variables cannot overflow or underflow the variables. Register race violation - Ensures no register assignment generates a circuit with a potential race condition. Multiply-driven register/latch - Ensures no register or latch is driven by more than one source. Unreachable block - Ensures all blocks of code can be reached Unconnected port - Ensures all ports are connected. Undriven logic - Ensures every register input can be driven by the design's primary inputs. Variable declared, but not used Variable declared, but not assigned Variable assigned from multiple processes Implicit variable declaration Mismatched widths in assignment Mismatched widths in port connection Null port connection Multiple occurrences of port in module port list Instantiation specifies fewer ports than module definition Type real may not be synthesizable Hierarchical reference may not be synthesizable Specify block may not be synthesizable UDP may not be synthesizable Force/release may not be synthesizable Duplicate case branch expression violates parallel_case X or Z value on the right-hand side of assignment Delay in non-blocking assignment Constant one delay Constant zero delay Constant negative delay Instance port connections not by name Case statement has no default Case statement not fully specified Redundant case branch expressions Overlapping case branch expressions Regular-expression based naming convention checks Uppercase/lowercase naming conventions Little endian/big endian bit ordering conventions Clock origin is gated Clock origin is derived from sequential logic Asynchronous set/reset controls are derived from sequential logic Multiple clock domains Unreachable states Redundant states Terminal states FSMs that do not have a reset transition Read-write race detection Write-write race detection Trigger propagation race detection UDP race detection Loop detection Bus conflicts Floating bus Branch possible Parallel case Full case Multi-cycle initialization Set-reset conflicts Parity State transition Write-Write Read-Write Latch-Latch Combinational loop Clock gating races Clock domain boundary crossings Synchronization of data Use of specified synchronization cells Dead-end/terminal states Self-loop terminal states Unreachable states Coding style Reuse Methodology Manual (RMM) Simulation-synthesis mismatches Synthesis compatibility Implied latches RTL scan-path DFT checks RTL ATPG checks Clock gating Asynchronous sets/resets Asynchronous clocks Lint checks X-source problems Redundant logic Conflicting assignments Range Violation Non-resettable flip-flops
Claims (1)
1. A method of consistency checking design representations, executed by a data processing system and comprising:
receiving a first design representation of a first design type;
receiving a second design representation of a second design type;
applying a first translator for the first design type to the first design representation to yield first information about a predetermined aspect of the first design representation;
applying a second translator for the second design type to the second design representation to yield second information about the predetermined aspect of the second design representation; and
evaluating at least one consistency rule in accordance with the first and second information, the evaluation process not knowing the design types from which the first and second information was obtained.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/144,457 US20080263487A1 (en) | 2005-09-30 | 2008-06-23 | Multi-Format Consistency Checking Tool |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/242,598 US7392492B2 (en) | 2005-09-30 | 2005-09-30 | Multi-format consistency checking tool |
US12/144,457 US20080263487A1 (en) | 2005-09-30 | 2008-06-23 | Multi-Format Consistency Checking Tool |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/242,598 Continuation US7392492B2 (en) | 2005-09-30 | 2005-09-30 | Multi-format consistency checking tool |
Publications (1)
Publication Number | Publication Date |
---|---|
US20080263487A1 true US20080263487A1 (en) | 2008-10-23 |
Family
ID=37903332
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/242,598 Expired - Fee Related US7392492B2 (en) | 2005-09-30 | 2005-09-30 | Multi-format consistency checking tool |
US12/144,457 Abandoned US20080263487A1 (en) | 2005-09-30 | 2008-06-23 | Multi-Format Consistency Checking Tool |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/242,598 Expired - Fee Related US7392492B2 (en) | 2005-09-30 | 2005-09-30 | Multi-format consistency checking tool |
Country Status (1)
Country | Link |
---|---|
US (2) | US7392492B2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090287965A1 (en) * | 2008-05-19 | 2009-11-19 | Fujitsu Limited | Verification supporting system |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10334153A1 (en) * | 2003-07-26 | 2005-02-24 | Karl Hehl | Method and device for interactively controlling a machine |
US7392492B2 (en) * | 2005-09-30 | 2008-06-24 | Rambus Inc. | Multi-format consistency checking tool |
US8589872B2 (en) * | 2007-06-12 | 2013-11-19 | International Business Machines Corporation | System and method for variable type identification |
US20090144703A1 (en) * | 2007-11-30 | 2009-06-04 | Vallieswaran Vairavan | Method and system for versioning a software system |
JP2011258092A (en) * | 2010-06-11 | 2011-12-22 | Fujitsu Ltd | Logical description difference extracting method, logical design support apparatus, and logical description difference extracting program |
US10452628B2 (en) * | 2016-11-11 | 2019-10-22 | Sap Se | Data analysis schema and method of use in parallel processing of check methods |
US11720553B2 (en) | 2016-11-11 | 2023-08-08 | Sap Se | Schema with methods specifying data rules, and method of use |
DE102017004348A1 (en) * | 2017-05-08 | 2018-11-08 | Gerhard Schilling | Method for computer-aided, automated verification of software requirements |
US10803219B1 (en) * | 2019-03-22 | 2020-10-13 | Cadence Design Systems, Inc. | Method and system for combined formal static analysis of a design code |
Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5493508A (en) * | 1994-06-01 | 1996-02-20 | Lsi Logic Corporation | Specification and design of complex digital systems |
US5544067A (en) * | 1990-04-06 | 1996-08-06 | Lsi Logic Corporation | Method and system for creating, deriving and validating structural description of electronic system from higher level, behavior-oriented description, including interactive schematic design and simulation |
US5623418A (en) * | 1990-04-06 | 1997-04-22 | Lsi Logic Corporation | System and method for creating and validating structural description of electronic system |
US5867399A (en) * | 1990-04-06 | 1999-02-02 | Lsi Logic Corporation | System and method for creating and validating structural description of electronic system from higher-level and behavior-oriented description |
US6148277A (en) * | 1997-12-18 | 2000-11-14 | Nortel Networks Corporation | Apparatus and method for generating model reference tests |
US6275976B1 (en) * | 1996-03-15 | 2001-08-14 | Joseph M. Scandura | Automated method for building and maintaining software including methods for verifying that systems are internally consistent and correct relative to their specifications |
US6427146B1 (en) * | 2000-03-31 | 2002-07-30 | Wesley W. Chu | Database event detection and notification system using type abstraction hierarchy (TAH) |
US6505328B1 (en) * | 1999-04-27 | 2003-01-07 | Magma Design Automation, Inc. | Method for storing multiple levels of design data in a common database |
US6530072B1 (en) * | 1998-05-11 | 2003-03-04 | Chrysalis Symbolic Design, Inc. | Rule based hierarchy generation in a circuit design verification system |
US20030196194A1 (en) * | 2001-10-11 | 2003-10-16 | Johns Clifford R. | Hardware design protocol and system |
US20040044514A1 (en) * | 2002-09-04 | 2004-03-04 | Granny Nicola V. | Polymorphic computational system and method in signals intelligence analysis |
US20040117746A1 (en) * | 2000-05-08 | 2004-06-17 | Prakash Narain | Intent-driven functional verification of digital designs |
US20040230681A1 (en) * | 2002-12-06 | 2004-11-18 | John Strassner | Apparatus and method for implementing network resources to provision a service using an information model |
US20050210433A1 (en) * | 2004-02-05 | 2005-09-22 | Clarke Edmund M | Method and system to check correspondence between different representations of a circuit |
US7000213B2 (en) * | 2001-01-26 | 2006-02-14 | Northwestern University | Method and apparatus for automatically generating hardware from algorithms described in MATLAB |
US20060212837A1 (en) * | 2005-03-17 | 2006-09-21 | Prasad Mukul R | System and method for verifying a digital design using dynamic abstraction |
US20060218516A1 (en) * | 2005-03-16 | 2006-09-28 | Mclain Michelle A | Design rule report utility |
US20060248519A1 (en) * | 2005-05-02 | 2006-11-02 | Ibm Corporation | Methods and arrangements for unified program analysis |
US20070038431A1 (en) * | 2005-08-12 | 2007-02-15 | Arm Limited | Data processing apparatus simulation |
US20070079267A1 (en) * | 2005-09-30 | 2007-04-05 | Qiang Hong | Multi-format consistency checking tool |
-
2005
- 2005-09-30 US US11/242,598 patent/US7392492B2/en not_active Expired - Fee Related
-
2008
- 2008-06-23 US US12/144,457 patent/US20080263487A1/en not_active Abandoned
Patent Citations (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5544067A (en) * | 1990-04-06 | 1996-08-06 | Lsi Logic Corporation | Method and system for creating, deriving and validating structural description of electronic system from higher level, behavior-oriented description, including interactive schematic design and simulation |
US5623418A (en) * | 1990-04-06 | 1997-04-22 | Lsi Logic Corporation | System and method for creating and validating structural description of electronic system |
US5867399A (en) * | 1990-04-06 | 1999-02-02 | Lsi Logic Corporation | System and method for creating and validating structural description of electronic system from higher-level and behavior-oriented description |
US5493508A (en) * | 1994-06-01 | 1996-02-20 | Lsi Logic Corporation | Specification and design of complex digital systems |
US6275976B1 (en) * | 1996-03-15 | 2001-08-14 | Joseph M. Scandura | Automated method for building and maintaining software including methods for verifying that systems are internally consistent and correct relative to their specifications |
US6148277A (en) * | 1997-12-18 | 2000-11-14 | Nortel Networks Corporation | Apparatus and method for generating model reference tests |
US6530072B1 (en) * | 1998-05-11 | 2003-03-04 | Chrysalis Symbolic Design, Inc. | Rule based hierarchy generation in a circuit design verification system |
US20060117279A1 (en) * | 1999-04-27 | 2006-06-01 | Van Ginneken Lukas P | Method for storing multiple levels of design data in a common database |
US6505328B1 (en) * | 1999-04-27 | 2003-01-07 | Magma Design Automation, Inc. | Method for storing multiple levels of design data in a common database |
US6427146B1 (en) * | 2000-03-31 | 2002-07-30 | Wesley W. Chu | Database event detection and notification system using type abstraction hierarchy (TAH) |
US20040117746A1 (en) * | 2000-05-08 | 2004-06-17 | Prakash Narain | Intent-driven functional verification of digital designs |
US7000213B2 (en) * | 2001-01-26 | 2006-02-14 | Northwestern University | Method and apparatus for automatically generating hardware from algorithms described in MATLAB |
US20030196194A1 (en) * | 2001-10-11 | 2003-10-16 | Johns Clifford R. | Hardware design protocol and system |
US20040044514A1 (en) * | 2002-09-04 | 2004-03-04 | Granny Nicola V. | Polymorphic computational system and method in signals intelligence analysis |
US20040230681A1 (en) * | 2002-12-06 | 2004-11-18 | John Strassner | Apparatus and method for implementing network resources to provision a service using an information model |
US20050210433A1 (en) * | 2004-02-05 | 2005-09-22 | Clarke Edmund M | Method and system to check correspondence between different representations of a circuit |
US20060218516A1 (en) * | 2005-03-16 | 2006-09-28 | Mclain Michelle A | Design rule report utility |
US20060212837A1 (en) * | 2005-03-17 | 2006-09-21 | Prasad Mukul R | System and method for verifying a digital design using dynamic abstraction |
US20060248519A1 (en) * | 2005-05-02 | 2006-11-02 | Ibm Corporation | Methods and arrangements for unified program analysis |
US20070038431A1 (en) * | 2005-08-12 | 2007-02-15 | Arm Limited | Data processing apparatus simulation |
US20070079267A1 (en) * | 2005-09-30 | 2007-04-05 | Qiang Hong | Multi-format consistency checking tool |
US7392492B2 (en) * | 2005-09-30 | 2008-06-24 | Rambus Inc. | Multi-format consistency checking tool |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090287965A1 (en) * | 2008-05-19 | 2009-11-19 | Fujitsu Limited | Verification supporting system |
US7984403B2 (en) * | 2008-05-19 | 2011-07-19 | Fujitsu Limited | Verification supporting system |
US8312400B2 (en) | 2008-05-19 | 2012-11-13 | Fujitsu Limited | Verification supporting system |
Also Published As
Publication number | Publication date |
---|---|
US7392492B2 (en) | 2008-06-24 |
US20070079267A1 (en) | 2007-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20080263487A1 (en) | Multi-Format Consistency Checking Tool | |
US7020856B2 (en) | Method for verifying properties of a circuit model | |
US6651228B1 (en) | Intent-driven functional verification of digital designs | |
Mishchenko et al. | Improvements to combinational equivalence checking | |
US5572437A (en) | Method and system for creating and verifying structural logic model of electronic design from behavioral description, including generation of logic and timing models | |
Seger | Vos: A Formal Hardware Verification System User's Guide | |
US6920418B2 (en) | Detecting events within simulation models | |
US6148436A (en) | System and method for automatic generation of gate-level descriptions from table-based descriptions for electronic design automation | |
US7711536B2 (en) | System and method for verification aware synthesis | |
US7080334B2 (en) | Automatic clock gating insertion in an IC design | |
US6493852B1 (en) | Modeling and verifying the intended flow of logical signals in a hardware design | |
US7188327B2 (en) | Method and system for logic-level circuit modeling | |
US6539523B1 (en) | Automatic formulation of design verification checks based upon a language representation of a hardware design to verify the intended behavior of the hardware design | |
US6571375B1 (en) | Determining dependency relationships among design verification checks | |
US7240311B2 (en) | Combinational equivalence checking methods and systems with internal don't cares | |
CN114492264B (en) | Gate-level circuit translation method, system, storage medium and equipment | |
JP2008511894A (en) | Method and system for designing a structure level description of an electronic circuit | |
US20080195368A1 (en) | Method, system and program product for selectively removing instrumentation logic from a simulation model | |
US7092864B2 (en) | Signal override for simulation models | |
Hoskote et al. | Automatic verification of implementations of large circuits against HDL specifications | |
US7117465B2 (en) | Application of the retimed normal form to the formal equivalence verification of abstract RTL descriptions for pipelined designs | |
US11429773B1 (en) | Methods, systems, and computer program product for implementing an electronic design using connect modules with dynamic and interactive control | |
US7835899B2 (en) | Sequential logic in simulation instrumentation of an electronic system | |
US10635766B2 (en) | Simulation employing level-dependent multitype events | |
Liu et al. | A fsm extractor for hdl description at rtl level |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: RAMBUS INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HONG, QIANG;JIANG, JING;JONES, KEVIN D.;AND OTHERS;REEL/FRAME:021137/0295 Effective date: 20051027 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |