# Patent

## Title
Method for simplifying RTL schematic by grouping nodes into a cloud

## Abstract

The number of nodes in an RTL schematic is reduced in a process of cloud grouping, a process whereby nodes that are not specified to be of interest will be grouped into a cloud to the extent possible. This results in a much simplified schematic as the remaining nodes within the schematic will be those nodes that the users desire to see. Analysis of all nodes including those designated as cut nodes is performed to determine what circuitry can or cannot be simplified. The user will also have the option to revert to the original schematic if viewing more than the cut nodes is desirable.

## Background
CLAIM OF PRIORITY
The present application is a divisional of and claims priority under 35 U.S.C. §120 to U.S. patent application Ser. No. 12/128,487, titled Method for Simplifying RTL Schematic by Grouping Nodes into a Cloud, filed May 28, 2008. The entirety of U.S. patent application Ser. No. 12/128,487 is incorporated by reference herein for all purposes.


BACKGROUND OF THE INVENTION
The present invention relates generally to software for designing integrated circuits and more specifically to a technique to simplify the schematic of a Register Transfer Level (RTL) netlist.
A typical design cycle for an integrated circuit, referred to as compilation, starts with an extraction phase, followed by a logic synthesis phase, and, depending upon the target hardware architecture, either a layout phase or fitting and assembly phases.
In addition to implementing their desired functions, designs typically must satisfy one or more additional design goals, such as operating speed, power consumption, and/or programmable device resource consumption. Typically, the predicted performance of a design with respect to one or more design goals is determined through simulation or analysis following a phase of the compilation. The designer can evaluate the predicted performance of the design and decide to either accept the results of the compilation or modify the design to improve its predicted performance, and hopefully its actual performance as well.
Visualization applications assist designers in evaluating predicted performance of a design. Visualization applications present predicted performance information of a design in a number of different graphical and text formats. Using visualization applications, designers can identify portions of the design that do not satisfy design goals. Visualization applications may also help designers identify portions of the design that can be improved to meet or exceed design goals.
Many typical digital designs include a number of registers. Each register is capable of storing one or more bits of data. Registers are often connected together via combinatorial logic. In many cases, the set of connections between two or more registers includes a large number of paths, each connecting one bit of a source register with one or more bits of at least one destination register. For example, there are up to 256 different paths between two 16 bit registers.
Visualization applications typically present predicted performance information on a path level view. These visualization applications annotate each path with its predicted performance information. As a result, designers tend to focus their optimization efforts on improving the performance of individual paths. However, the performance of paths connected with the same registers often are interrelated. Thus, when a designer improves the performance, such as the timing, of one path between registers, the performance of another path between these registers may get worse. In these situations, the designer merely shifts a problem to different paths, rather than finding a solution that improves the performance of the overall design. This problem can occur in any type of integrated circuit design and is especially frequent with programmable devices such as field programmable gate arrays, which route all of the paths between source and destination registers independently.
SUMMARY OF THE INVENTION
The disclosed embodiments reduce the number of nodes in an RTL schematic in a process of cloud grouping, a process whereby nodes that are not specified to be of interest will be grouped into a cloud to the extent possible. This results in a much simplified schematic as the remaining nodes within the schematic will be those nodes that the users desire to see. Analysis of all nodes including those designated as cut nodes is performed to determine what circuitry can or cannot be simplified. The user will also have the option to revert to the original schematic if viewing more than the cut nodes is desirable.
One aspect relates to a method of generating a visualization of a design. The method comprises receiving a design including a plurality of circuit nodes and a plurality of paths interconnecting the circuit nodes, enabling a user to select from the plurality of circuit nodes and specify selected circuit nodes as cut nodes, analyzing the input signals of the cut node to determine whether the driving signal is a cut node. If the driving signal is not a cut node, the system will continue traversing until it reaches the cut node or the input pin. All nodes between the source and destination cut nodes will then be grouped into a single entity to form a cloud node. The number of driving signal can be more than 1 as the system traverses through the logic path to find the cut node or the input pin. These source signals will then be used to feed the newly formed cloud node and each cloud node will only have a single output signal that feeds the initial input signal of the initial cut node.
Another aspect relates to a method of generating a visualization of a design. The method comprises receiving a design including a plurality of circuit nodes and a plurality of paths interconnecting the circuit nodes, enabling a user to select from the plurality of circuit nodes, specifying selected circuit nodes as cut nodes, analyzing the input signals to non cut nodes, analyzing the output signals from non cut nodes. Based upon the analysis of the input and output signals, it is then determined if some of the plurality of paths and non cut nodes may be removed from the diagram and properly represented as a cloud node. A further aspect of the method involves ceasing to display the plurality of paths and non cut nodes properly represented as a cloud node and instead displaying one or more cloud nodes representative of the plurality of paths and non cut nodes properly represented as a cloud node.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 illustrates a typical RTL schematic diagram/circuit 100.
FIG. 2 illustrates grouping of combinatorial logic of the diagram/circuit 100.
FIG. 3 illustrates identification of the combinatorial nodes path for output 191 of the diagram/circuit 100.
FIG. 4 illustrates grouping of the source combinatorial logics of output 191 of the diagram/circuit 100.
FIG. 5 illustrates identification of the combinatorial nodes path for output 192 of the diagram/circuit 100.
FIG. 6 illustrates grouping of the source combinatorial logics of output 192 of the diagram/circuit 100.
FIG. 7 illustrates identifying the combinatorial nodes path for dff 132 of the diagram/circuit 100.
FIG. 8 illustrates grouping of the source combinatorial logics of register dff 132 of the diagram/circuit 100.
FIG. 9 illustrates identification of the combinatorial nodes path for dff 130 of the diagram/circuit 100.
FIG. 10 illustrates grouping of the source combinatorial logics of register dff 130 of the diagram/circuit 100.
FIG. 11 is a flowchart of the process of cloud formation.
FIG. 12 is an example of a register-to-register timing path.
FIG. 13 illustrates a computer system 1000 suitable for implementing an embodiment of the invention.



DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
An RTL viewer is a design tool which enables users to view circuit designs at a schematic level. A good RTL graphical representation eases human eyes navigation on the diagram. When there are a lot of nodes and pins within a diagram, human eyes take relatively longer time to find a portion of the circuit. A diagram with relatively lesser nodes simplifies tracing. Often, when analyzing a circuit design, the user is only interested in a small portion of the circuitry. The challenge for automated viewer tools is to eliminate unwanted nodes from the diagram, such that human eyes can take relatively shorter time to find the target nodes.
To date, most automated viewers of existing tools reduce node count in schematic diagram by grouping all pins and nodes into buses and arrays. However, none of the existing tools take further step to further reduce the number of nodes in a RTL schematic.
With the increasing complexity in the ASIC design, the ability to maintain a readable schematic becomes a challenge. Even with the existing grouping algorithms that are in place today, they do not seem to be able to simplify the schematic to a point that eases the debugging process. Hence, embodiments of the present invention allow the user to specify what should and should not be displayed on the screen within the RTL schematic.
In debugging a circuitry most users are often interested on some specific node types only, and not the whole schematic. By grouping all nodes a user does not desire to see into clouds, determining the relationship between two nodes of interest becomes possible within a glance.
In view of this fact, the embodiments further reduce the number of nodes in a RTL schematic in a process of cloud grouping. Cloud grouping is a grouping mechanism whereby all nodes that are not in the interest list will be grouped into a cloud. This will result in a much simplified schematic as the remaining nodes within the schematic will be those nodes that the users desire to see. The nodes specified to be of interest (and placed in the interest list) are referred to as “cut nodes.” In short, cut nodes are nodes that users wish to see in a schematic. The user will also have the option to revert to the original schematic if viewing more than the cut nodes is desirable.
Prior art tools only reduce node counts in a schematic diagram by grouping pins and nodes into buses and arrays, partitioned into multiple pages. This is however, insufficient as the schematic may still be overly complicated and difficult to quickly assess for a circuit designer. In particular, prior art grouping of similar pins and nodes into buses and arrays does not necessarily reduce the number of nodes in a schematic diagram, especially with the ever increasing complexity of circuitry. In general, designers are often not interested in the whole schematic, but need to focus on specific parts of it. Most often, designers are only interested in one or more specific types of nodes within a RTL schematic. For an example, designers may only be interested on register nodes in analyzing a few critical timing paths. However, finding a specific node within a full detailed circuit diagram can be difficult at times especially for those designs that have a lot of nodes in the same schematic page. All this make analyzing the schematic difficult.
Explanation of how an RTL schematic is simplified will be given below with reference to the Figures. For the sake of simplicity, the cut nodes shown are registers and pins, but as mentioned earlier, the cut nodes may alternatively comprise any type of node, e.g. DSPs, RAMs, or combinatorial logics. As mentioned earlier, a user may specify what circuit components should be designated as cut-nodes.
In the described embodiments, the input signals to a cloud are always unique (duplicate signals will be eliminated) and there can only be a single output feeding directly to the cut node input port. This differs from prior art simplification techniques, and results in much clearer schematic diagrams.
Given an RTL schematic diagram like FIG. 1, we can then simplify this design by grouping the combinatorial logics (non cut nodes) into a cloud as shown in FIG. 2.
In order to group non cut nodes (in this example, it is combinatorial logic) into a cloud node(s), we specify a set of rules for cloud characteristics. Firstly, a cloud can only have a single output. However, the output can feed more than 1 signal destination (fanout). Secondly, the cloud node must have at least 1 source signal. If there is more than 1 source signal, the source signal has to be unique from each other. In other words, there are no duplicates of source signals in a single cloud node.
The algorithm begins with the destination input port. From the input port, we trace the source signal. The destination node or cut node in this case can be of any type and not just limited to output pins or registers. The user can even specify the combinatorial logic as the cut node or a DSP and RAM block as the cut node. If the source signal node is a combinatorial logic which could either be AND, OR, NOR, XOR, NAND, XNOR, BUFFERS, MUXES or OPERATOR node, then the node will be marked as a candidate of cloud grouping. For combinatorial nodes, we will continue traversing the RTL netlist until we come across a node that is not a combinatorial node type. Take, for example, the circuit shown in FIG. 1, if the destination node is given as output 191, FIG. 3 illustrates the path of the traversal as a bold line. Note that, the traversal ends at register dff 130, input 111, input 112 and input 114. These 4 nodes will in turn act as the source signals to the newly formed cloud node called output191_IN0_cloud as indicated in FIG. 4.
The cloud node of output191_IN0_cloud shown in FIG. 4 comprises and 133, or 161, xor 121 and buffer 141. By grouping the combinatorial logics on the source signals of output 191, we can now trace the output 191 signal directly to the primary sources. Notice that the combinatorial logic nodes of and 133, or 161, xor 121, and buffer 141 still exist in FIG. 4. This is because these 4 combinatorial logic nodes are also feeding other logic gates. If any of these combinatorial nodes only fall within this path, then the node will be absorbed and not get displayed.
Based on FIG. 4, if continuing the cloud grouping process but this time targeted to output 192, the visited path for output 192 is shown in bold in FIG. 5. The end result from the cloud grouping process on output 192 is shown in FIG. 6. Notice that the combinatorial logic node of xor 122 is no longer shown as the node only falls within the output 192 path.
Based on FIG. 6, if we continue the cloud grouping process but this time targeted to the register of dff 132, the traversing path is shown in FIG. 7 with the cloud formation shown in FIG. 8. Notice that the combinatorial logic nodes of or 161, and 133, and buffer 141 in FIG. 6 are no longer displayed after the cloud grouping process, as seen in FIG. 8.
Based on FIG. 8, if we continue the cloud grouping process but this time targeted to the dff 130 register, the traversing path of dff 130 shown in bold in FIG. 9 results in the final diagram shown in FIG. 10.
In order to group the entire combinatorial logics of the circuitry, the entire netlist is traversed. While traversing nodes in a circuit, selected nodes are labeled as cut nodes. In a preferred embodiment a user selects nodes to label as a cut node while designing a circuit or after it has been designed. In alternative embodiments, certain types of nodes can be predesignated as cut nodes. A cut node indicates the cut point of the cloud grouping. All non cut nodes between two cut nodes will be grouped into a single cloud. In the example illustrated in the figures above, logic nodes like registers, IOs, instances, rams, latches are categorized as cut nodes and they will not be grouped into cloud logic.
An embodiment of the traversing process 200 for cloud grouping is illustrated in the flow chart of FIG. 11. The process starts in step 202, and continues on in step 204 where the system checks to see if this is the last node and every node has been analyzed. If so, the process ends, as seen in step 240. If the node under analysis is not the last node, the process continues on to step 206, where the system checks to see if the node has been designated a cut node. If so, the system checks each of the input ports of the cut node, and gets the source nodes for each input port in step 208. Next, in step 210, the system then determines if each of the source nodes from step 208 are something other than a cut node (have not been designated a cut node). If the source node has not been designated a cut node, in step 220 the system checks to see if the cut node has a cloud associated with it. If so, then in step 222, the system retrieves the cloud of the cut node. If not, then in step 224 the system instantiates a cloud for the node (creates a cloud and associates it with the node).
In step 226, the source node is then inserted into the cloud, and in step 228 for every input port of the cloud node the system ascertains the source node of the input port (“SSN”). In other words, after the source node from step 208 is inserted into the cloud node, the system will check all the inputs of the inserted source node (from step 208). The system will return to step 208 after all inputs of the node have been analyzed. Then in step 230 the system checks if the SSN is something other than a cut node, or in other words, the system checks if the source node from step 208 is fed by nodes other than cut nodes, which means, the source (from step 228) to the source node from step 208 is a node other than a cut node. If not the system returns to step 228, but if so, the system proceeds to step 232 where the SSN is inserted into the cloud. The system then returns to step 228.
The system and method described herein gives users extra control over grouping attributes in an RTL Viewer. By specifying a list of node types as cut nodes, users control the types of nodes that will appear in a RTL schematic, as the system will automatically place circuitry not of interest into a cloud. As one of the example, by grouping all combinatorial logics between the register-to-register path, pin-to-register path, pin-to-pin path and register-to-pin path, the RTL schematic viewer provides more meaningful and useful representation of the timing path as it focuses on the registers and pins. This helps in timing analysis when using an RTL Viewer as the designer no longer has to trace and be distracted by long connections which sometimes span across multiple pages. Moreover, the designer can always choose to ungroup this cloud to get back to the original combinatorial nodes connection. See FIG. 12 for illustration on a simplified register-to-register timing path.
After a particular register-to-register timing path is targeted, the detailed timing path circuit can be revealed by ungrouping all the cloud's composition within the timing path. By ungrouping a cloud node, all its underlying combinatorial logics will be revealed. Likewise, these clouds can also be regrouped on demand. With this feature in place, users no longer need to trace through large amounts of logic that may not be of interest.
FIG. 13 illustrates a computer system 1000 suitable for implementing an embodiment of the invention. Computer system 1000 typically includes a monitor 1100, computer 1200, a keyboard 1300, a user input device 1400, and a network interface 1500. User input device 1400 includes a computer mouse, a trackball, a track pad, graphics tablet, touch screen, and/or other wired or wireless input devices that allow a user to create or select graphics, objects, icons, and/or text appearing on the monitor 1100. Embodiments of network interface 1500 typically provides wired or wireless communication with an electronic communications network, such as a local area network, a wide area network, for example the Internet, and/or virtual networks, for example a virtual private network (VPN).
Computer 1200 typically includes components such as one or more general purpose processors 1600, and memory storage devices, such as a random access memory (RAM) 1700, disk drives 1800, and system bus 1900 interconnecting the above components. RAM 1700 and disk drive 1800 are examples of tangible media for storage of data, audio/video files, computer programs, applet interpreters or compilers, virtual machines, and embodiments of the herein described invention. Further embodiments of computer 1200 can include specialized input, output, and communications subsystems for configuring, operating, testing, and communicating with programmable devices. Other types of tangible media include floppy disks; removable hard disks; optical storage media such as DVD-ROM, CD-ROM, and bar codes; non-volatile memory devices such as flash memories; read-only-memories (ROMS); battery-backed volatile memories; and networked storage devices.

## Claims

1. A method of depicting and designing circuitry, the method comprising:
receiving a design including a plurality of circuit nodes and a plurality of paths interconnecting the circuit nodes;
enabling a user to designate selected circuit nodes of the plurality as cut nodes;
assessing that a node of the circuit nodes is a cut node;
determining how many input ports there are for the cut node;
for each input port of the cut node determining which of the plurality of circuit nodes serves as a source node for the input port;
for a node determined to be a source node, determining that the source node has not been designated a cut node;
determining the cut node is associated with a cloud;
inserting, by a processor, the source node into the cloud;
after a node other than a cut node is inserted into a cloud, checking every input of the inserted node;
for each input of the inserted node determining which of the plurality of circuit nodes serves as a source node for the inserted node; and
for each of the circuit nodes determined to serve as a source node for the inserted node, assessing that the source node to the inserted node is other than a cut node, and inserting the node into the cloud.

2. The method of claim 1, wherein enabling a user to specify select circuit nodes as cut nodes comprises enabling a user to specify a DSP or RAM as a cut node, said cloud node having a single output feeding directly to an input of the DSP or RAM specified as a cut node.

3. The method of claim 1, wherein enabling a user to specify select circuit nodes as cut nodes comprises enabling a user to specify a register as a cut node, said cloud node having a single output feeding directly to an input of the register specified as a cut node.

4. The method of claim 1, wherein the cut node is a first component type, the first component type selected from the group consisting of: registers, combinatorial logic, and I/O pins.

5. The method of claim 1, wherein the cut node is a first component type, the source node is a second component type, wherein the first component type is a register, and the second component type is combinatorial logic.

6. The method of claim 1, wherein the cloud includes combinatorial logic.

7. The method of claim 1, wherein a second cut node is associated with a second cloud, the cloud includes a first set of combinatorial logic, the second cloud includes a second set of combinatorial logic, the first set of combinatorial logic and the second set of combinatorial logic including the source node.

8. The method of claim 1, wherein the cloud has an input and an output, the output provided to the cut node, the input provided by a second cut node.

9. One or more computing devices for depicting and designing circuitry, the one or more computing devices comprising:
one or more processors operable to execute one or more instructions to:
receive a design including a plurality of circuit nodes and a plurality of paths interconnecting the circuit nodes;
enable a user to designate selected circuit nodes of the plurality as cut nodes;
assess whether a node of the circuit nodes is a cut node;
determine how many input ports there are for the cut node;
for each input port of the cut node determining which of the plurality of circuit nodes serves as a source node for the input port;
for a node determined to be a source node, determining that the source node has not been designated a cut node;
determine the cut node is associated with a cloud;
insert the source node into the cloud;

after a node other than a cut node is inserted into a cloud, check every input of the inserted node;
for each input of the inserted node determine which of the plurality of circuit nodes serves as a source node for the inserted node; and
for each of the circuit nodes determined to serve as a source node for the inserted node, assess that the source node to the inserted node is other than a cut node, and insert the node into the cloud.

10. The one or more computing devices of claim 9, wherein enabling a user to specify select circuit nodes as cut nodes comprises enabling a user to specify a DSP or RAM as a cut node, said cloud node having a single output feeding directly to an input of the DSP or RAM specified as a cut node.

11. The one or more computing devices of claim 9, wherein enabling a user to specify select circuit nodes as cut nodes comprises enabling a user to specify a register as a cut node, said cloud node having a single output feeding directly to an input of the register specified as a cut node.

12. The one or more computing devices of claim 9, wherein the cut node is a first component type, the first component type selected from the group consisting of: registers, combinatorial logic, and I/O pins.

13. The one or more computing devices of claim 9, wherein the cut node is a first component type, the source node is a second component type, wherein the first component type is a register, and the second component type is combinatorial logic.

14. The one or more computing devices of claim 9, wherein the cloud includes combinatorial logic.

15. The one or more computing devices of claim 9, wherein a second cut node is associated with a second cloud, the cloud includes a first set of combinatorial logic, the second cloud includes a second set of combinatorial logic, the first set of combinatorial logic and the second set of combinatorial logic including the source node.

16. The one or more computing devices of claim 9, wherein the cloud has an input and an output, the output provided to the cut node, the input provided by a second cut node.

17. A non-transitory computer readable medium having instructions stored thereon, the instructions executable by a processor to cause a computing device to:
receive a design including a plurality of circuit nodes and a plurality of paths interconnecting the circuit nodes;
enable a user to designate selected circuit nodes of the plurality as cut nodes;
assess whether a node of the circuit nodes is a cut node;
determine how many input ports there are for the cut node;
for each input port of the cut node determine which of the plurality of circuit nodes serves as a source node for the input port;
for a node determined to be a source node, determine that the source node has not been designated a cut node;
determine the cut node is associated with a cloud;
inserting the source node into the cloud;
after a node other than a cut node is inserted into a cloud, check every input of the inserted node;
for each input of the inserted node determine which of the plurality of circuit nodes serves as a source node for the inserted node; and
for each of the circuit nodes determined to serve as a source node for the inserted node, assess that the source node to the inserted node is other than a cut node, and insert the node into the cloud.

18. The non-transitory computer readable medium of claim 17, wherein a second cut node is associated with a second cloud, the cloud includes a first set of combinatorial logic, the second cloud includes a second set of combinatorial logic, the first set of combinatorial logic and the second set of combinatorial logic including the source node.