An electronic computer aided design (“E-CAD”) tool is used to create a circuit design, including a very large scale integration (“VLSI”) circuit design. The circuit design includes a “netlist,” which defines a collection of nets specific to the circuit design. A “net” is a single electrical path in a circuit that has the same electrical characteristics at all of its points. For example, a collection of wires that carries the same signal between components is a net. If the components allow the signal to pass through unaltered (as in the case of a terminal), then the net continues on subsequently connected wires. If, however, the component modifies the signal (as in the case of a transistor or a logic gate), then the net terminates at that component and a new net begins on the other side. A “net name” identifies a particular net within the netlist.
E-CAD tools often require configuration information to properly analyze the circuit design. The configuration information includes “configuration commands” that are selectively applied to nets within the netlist. A configuration command is a function used to set an electrical characteristic of a component of the circuit design (hereinafter termed a ‘design element’). A design element represents a single component (e.g., transistor, wire, resistor, capacitor, diode, logic gate), a net, or a group of design elements structurally linked within the circuit design and processed by the E-CAD tool. Each configuration command may include, for example, a command type field, indicating the type of design element or circuit characteristic to which the command is applicable, a net name field, indicating the specific net to which the command is applicable, and a value field, indicating the value to which the named net is to be set. A configuration command might also, for example, contain only the command type field and value field, which are externally associated with a net name or design element name. These fields are applied to a design element to establish specific characteristics for that design element. For example, a configuration command ‘voltage VDD 2.1V’ may be used to set the supply voltage of a net named ‘VDD’ to 2.1 volts.
The E-CAD tool determines which configuration commands are applicable to particular nets in a VLSI design to expedite analysis of the circuit design. In order to determine which configuration commands are applicable to each net, “partial specifiers” are sometimes used to match net names within the netlist. A partial specifier is a “regular expression” used to identify and optionally select net names and design element names within the netlist. A regular expression is a source character string that defines pattern-matching and substitution operations on one or more destination character strings. The regular expression uses a set of ‘special’ characters such that the source character string matches specific parts of the destination character string. For example, the ‘.’ character in the source character string matches any one character in the destination character string, while the “*” character in the source character string matches zero or more consecutive characters in the destination character string. Examples of regular expressions can be found in many software tools (e.g., grep, awk, etc.) of the UNIX operating system. The partial specifier may be implemented only as a subset of the regular expression, for example the partial specifier incorporating only the searching functionality of the regular expression. The character strings “*/scan/shift”, “test/h1/*”, and “*” are examples of partial specifiers.
Prior art E-CAD tools employ several known methods to determine which configuration commands are applicable to nets of a circuit design. In one method, a partial specifier associated with a configuration command is used to match each net name in a netlist to determine if the configuration command applies to the net. This method requires a linear amount of time with respect to the number of partial specifiers being checked, and therefore is relatively time-consuming due to the fact that each net name in the netlist is checked against each partial specifier associated with each configuration command. Another method used to determine applicable configuration commands expands all of the partial specifiers at the outset of the analysis, thus pre-determining which nets match each configuration command. In a typical VLSI circuit design having millions of nets, both of these processes can be prohibitively lengthy, since they require M×N partial specifier matches, where M is the number of net names and N is the number of partial specifiers.
In one embodiment, a method determines applicable configuration information for use in analysis of a computer aided design. A state machine is generated using information contained in a plurality of configuration commands. A design element name, associated with a design element, is applied to the state machine. The state machine generates a list including configuration information applicable to the design element.
In another embodiment, a system determines applicable configuration information for use in analysis of a computer aided design. A file contains a plurality of configuration commands that sets values associated with nets in the design. A netlist contains a plurality of net names, each of which is associated with one of the nets. A processor executes a state machine that is compiled using information contained in a plurality of configuration commands. In response to input comprising one of the net names, the state machine generates a list including configuration information applicable to one of the nets corresponding to the input.
In another embodiment, a method determines applicable configuration information for use in analysis of a computer aided design. A state machine is generated using information contained in a plurality of configuration commands. In response to input including a net name associated with a net in the design, the state machine generates a list including the configuration information applicable to the net. The state machine is compiled by determining, from a set of regular expressions associated with the configuration commands, a set of, states and transitions between the states that are matched against characters of the net name to determine zero or more regular expressions that match the net name. Any of the regular expressions thus determined have associated therewith one or more corresponding configuration commands applicable to the net name. Each of the configuration commands includes a command type field indicating the type of entity to which the command is applicable, and a value field indicating the value to which the net corresponding to the net name is to be set. A net name, associated with the design, is applied to the state machine to generate the list. The configuration commands in the list are applied to at least one of the nets in the design.
In another embodiment, a system determines applicable configuration information for use in analysis of a computer aided design, including: means for generating a state machine using information contained in a plurality of configuration commands, wherein, in response to input comprising a design element name associated with a net in the design, the state machine generates a list including the configuration information applicable to the net; and means for applying the design element name to the state machine to generate the list.
In another embodiment, a software product has instructions, stored on computer-readable media, wherein the instructions, when executed by a computer, perform steps for determining applicable configuration information for use in analysis of a computer aided design, including: instructions for generating a state machine using information contained in a plurality of configuration commands, wherein, in response to input comprising a net name associated with a net in the design, the state machine generates a list including the configuration information applicable to the net; instructions for applying a net name, associated with the design, to the state machine to generate the list; and instructions for applying the configuration commands in the list to at least one net in the design.
E-CAD tool 107 and compiler 105 are operable to generate a state machine 103 from partial specifiers contained in a configuration commands list 108 of configuration file 111. A “state machine” may be defined as a mechanism that has an initial state, and which includes a set of input events, a set of output events, a set of states, a function that maps states and input to output, and a function that maps states and inputs to states (called a state transition function). As described in more detail below, once generated, state machine 103 is operable to generate an applicable configuration command list 110 that contains configuration commands applicable to each net of interest during analysis of circuit design 109.
At step 210, state machine 103 is compiled or otherwise generated from the configuration information stored in list 108, by using, in an exemplary embodiment, compiler 105. State machine 103 is generated from the set of partial specifiers associated with the configuration commands in configuration file 111. A set of states and transitions are determined such that, when state machine 103 is supplied with the characters of a net name (e.g., a net name of a net defined by netlist 113), state machine 103 determines which, if any, of the partial specifiers match the net name. From the partial specifiers, state machine 103 determines which, if any, of the associated configuration commands apply to the net name.
Methods for generating state machines are well known in the art, and the resulting state machine typically consists essentially of either a switch statement inside a loop, or a table that represents the possible transitions for each state as a function of a ‘current state’. In the former method, in each iteration of the loop, the switch statement uses the current state of state machine 103 to check a subsequent character of the net name being evaluated to decide which section of code to activate, where each code section is used to calculate the next state. The loop is iterated until the net name is completely matched and an ‘accepting state’ (e.g., states 306, 307, 308 and 309,
In block 215, each net of interest in netlist 113 (all nets in design 109 are not necessarily of interest for every analysis) is processed by state machine 103 to generate list 110 containing applicable configuration commands, zero or more of which are applicable to a specific one of these nets. At step 220, a specific net name is applied to state machine 103, to generate list 110 of configuration commands applicable to the net name.
Note that this result is consistent with the fact that the string ‘abcd’ is matched by the partial specifier ‘a*’ of configuration command ‘voltage a*2.1v’, and also by the partial specifier ‘ab*’ of configuration command ‘wire_cap ab*2pf’.
In a similar manner, processing of the net name ‘bc’ by state machine 103 results in transitions from state 300 through state 302, to accepting state 309. The configuration command ‘wire_cap bc 3pf’ is then stored in list 110.
Any unnamed transition encountered in processing the net name results in a transition to a null accepting state 308. For example, if the net name ‘ba’ is applied to state machine 103, an initial transition occurs from state 300 to state 301 in response to the first character ‘b’ in the net name. Processing of the next character, a′ of the net name, results in a transition to state 308, since the only named transition from state 301 is in response to the character ‘c’; the net name ‘ba’ is therefore non-matching. Since state 308 has a null configuration command, no entry would be stored in list 110 for the net name.
Step 220 in block 215 is then repeated for each net of interest in design 109, as indicated by arrow 221. After the applicable configuration commands have been generated for all nets of interest, then at step 225, the configuration commands in list 110 are applied to the appropriate nets in design 109 using E-CAD tool 107.
Instructions that perform the operations described with respect to
Changes may be made in the above method and system without departing from the scope hereof. It should thus be noted that that the matter contained in the above description or shown in the accompanying drawings should be interpreted as illustrative and not in a limiting sense. The following claims are intended to cover all generic and specific features described herein, as well as all statements of the scope of the present method and system, which, as a matter of language, might be said to fall there between.
The present document contains material related to the material of copending, cofiled, U.S. patent application Ser. No. ______ Attorney Docket Number 100111221-1, entitled System And Method For Determining Wire Capacitance For A VLSI Circuit; Ser. No. ______ Attorney Docket Number 100111228-1, entitled Systems And Methods Utilizing Fast Analysis Information During Detailed Analysis Of A Circuit Design; Ser. No. ______ Attorney Docket Number 100111230-1, entitled Systems And Methods For Determining Activity Factors Of A Circuit Design; Ser. No. ______ Attorney Docket Number 100111232-1, entitled System And Method For Determining A Highest Level Signal Name In A Hierarchical VLSI Design; Ser. No. ______ Attorney Docket Number 100.11233-1, entitled System And Method For Determining Connectivity Of Nets In A Hierarchical Circuit Design; Ser. No. ______ Attorney Docket Number 100111234-1, entitled System And Method Analyzing Design Elements In Computer Aided Design Tools; Ser. No. ______ Attorney Docket Number 100111235-1, entitled System And Method For Determining Unmatched Design Elements In A, Computer-Automated Design; Ser. No. ______ Attorney Docket Number 100111236-1, entitled Computer Aided Design Systems And Methods With Reduced Memory Utilization; Ser. No. ______ Attorney Docket Number 100111238-1, entitled System And Method For Iteratively Traversing A Hierarchical Circuit Design; Ser. No. ______ Attorney Docket Number 100111257-1, entitled Systems And Methods For Establishing Data Model Consistency Of Computer Aided Design Tools; Ser. No. ______ Attorney Docket Number 100111259-1, entitled Systems And Methods For Identifying Data Sources Associated With A Circuit Design; and Ser. No. ______ Attorney Docket Number 100111260-1, entitled Systems And Methods For Performing Circuit Analysis On A Circuit Design, the disclosures of which are hereby incorporated herein by reference.