Performance visualization system

A visualization displays user designs and performance information at different levels of detail. Related register bits are combined into a metaregister and displayed as a graph node. The set of paths and associated combinatorial logic between two or more metaregisters are collapsed into a metapath and displayed as a graph connection. The set of paths associated with a metapath can be selectively revealed in response to user input. Metapaths can be annotated with performance information of its associated paths, such as timing, area, and power consumption information. The annotated performance information can represent performance information of one or more paths or aggregate attributes of the set of paths. Paths associated with control signals and finite state machines can be identified and displayed as separate graph connections.

BACKGROUND OF THE INVENTION

The present invention relates to the field of software for designing integrated circuits. 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.

It is therefore desirable for a visualization system and method to present performance information of designs at higher levels of abstraction to enable designers to efficiently evaluate interrelated paths and portions of the design.

BRIEF SUMMARY OF THE INVENTION

An embodiment of the invention displays user designs and performance information at different levels of detail. Related register bits are combined into a metaregister and displayed as a graph node. The set of paths and associated combinatorial logic between two or more metaregisters are collapsed into a metapath and displayed as a graph connection. The set of paths associated with a metapath can be selectively revealed in response to user input. Metapaths can be annotated with performance information of its associated paths, such as timing, area, and power consumption information. The annotated performance information can represent performance information of one or more paths or aggregate attributes of the set of paths. Paths associated with control signals and finite state machines can be identified and displayed as separate graph connections.

In an embodiment, a visualization of a digital design comprises a first node and a second node. The first node represents a first metaregister comprising at least one bit of a first register and the second node represents a second metaregister comprising at least one bit of a second register. The visualization includes a graph connection connecting the first and second nodes. The graph connection represents a metapath comprising a plurality of paths and associated combinatorial logic between the first and second metaregisters.

In an further embodiment, the graph connection includes an annotation providing performance information of the metapath. Embodiments can include performance information such as timing information, power consumption information, area information, or switching activity. In further embodiments, the performance information includes an aggregate representation of performance information of the plurality of paths. Embodiments of the aggregate representation of performance information may include a probability distribution function or histogram.

In another embodiment, the graph connection is adapted to display at least a portion of the plurality of paths and associated combinatorial logic of the metapath in response to a user input. In yet a further embodiment, the displayed portion of the plurality of paths and associated combinatorial logic are adapted to be collapsed into the graph connection in response to a second user input.

In an additional embodiment, the first and second nodes are a result of register folding of a plurality of register bits of a design. In another embodiment, the graph connection is a result of a comb-cone traversal to identify the plurality of paths and associated combinatorial logic between the first and second metaregisters.

In the drawings, the use of identical reference numbers indicates similar elements.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1Aillustrates an example circuit design100. Design100is a 16-bit barrel shifter. Design100is capable of storing a 16 bit input value in register102and 16-bit shift value in register104. In response to the shift value in register104, a shift unit106shifts the value in register102to the left by the shift value in register104and stores the result in 16-bit register108.

FIG. 1Billustrates schematic110of design100. Schematic110shows that the shift unit108is comprised of a set of multiplexers112. In schematic110, the output of the shift value register104is connected by sets of combinatorial logic116with the select inputs of the set of multiplexers112. As can be seen in schematic110, the set of paths114between the sets of combinatorial logic116and the set of multiplexers112is large and complicated.

FIG. 1Cillustrates an example display130of a prior performance visualization application showing design100. In example display130, the prior performance visualization application annotates each path of the design, such as paths135,137, and139, with performance information, such as predicted timing information.

FIG. 1Dillustrates an example display175of a prior performance visualization application showing design100. In example display175, performance information, such as predicted timing performance, is displayed in a tabular format. Each table entry, such as entry180, displays performance information and other information, such as the source and destination, associated with a single path of the design100.

In designs with hundreds, thousands, or more paths, the amount of performance information presented by these visualization applications is overwhelming to a designer. Moreover, the level of detail presented by these visualization applications tends to focus the designer's efforts on optimizing or correcting individual paths in the design, rather than overall high-level structure of the design. As a result, designers using prior visualization applications often waste time and effort shifting a problem between interrelated paths, rather than correcting an underlying structural problem in the design.

FIG. 2illustrates an example performance visualization200of an example user design according to an embodiment of the invention. Example performance visualization200groups all or a portion of the bits of one or more registers together in a single group, referred to a metaregister. For example, metaregisters205,210,215, and220each represent multiple bits of different registers.

Additionally, example performance visualization200collapses the numerous paths between two or more metaregisters into a metapath. Example performance visualization200displays metapaths207,212, and217. A single metapath can represent all of the paths and associated combinatorial logic between one or more source metaregisters and a destination metaregister or between a source metaregister and one or more destination metaregisters. For example, metapath207represents all of the paths and combinatorial logic between metaregisters205and210. In an embodiment, the performance visualization200aggregates performance information of the paths within a metapath and presents metapaths annotated with their aggregate performance information. For example, metapath207include aggregate performance information222. In this example, the aggregate performance information222represents a timing value, such as largest delay value for one of the paths in metapath207.

As discussed detail below, embodiments of the example performance visualization200may be interactive, allowing designers to interactively view the design in different levels of hierarchical detail, from a top-level view with only a few metaregisters and metapaths down to a low-level view with individual register bits and paths, as well as any level of detail in between.

FIG. 3illustrates a method300of creating a performance visualization according to an embodiment of the invention. Method300receives a design and performance information for each path. The goal of method300is to analyze the design to identify related paths and related register bits, thereby enabling the creation of metapaths and metaregisters at any desired level of detail.

Step305identifies metaregisters in the design. In an embodiment, step305performs register folding to identify related register bits that can be potentially combined to form a metaregister. Register folding identifies register bits having common characteristics, such as being associated with a common bus, and groups these register bits into metaregisters. An example register folding algorithm is illustrated by the pseudo-code in table1.

TABLE 1Example Register Folding Pseudocoderegister_fold( ){foreach nodeif node is a registercompute compressed node-nameadd node_name to node_name listadd compressed_name to bus_name listforeach bus in bus_name listgenerate a unique bus_idassociate bus_id with all nodes having same compressed_nameif size of bus (#node bits) < tolerancedrop the bus as “not a bus” by ignoring it in laterprocessingreturn bus_id list}compute_compressed_node_name(name){remove special characters from namematch ‘[’ and ‘]’ for bit iduse multiple combinations to account for different names processingduring synthesisreturn computed_name}

Step310identifies metapaths in the design. In an embodiment, step310performs comb-cone traversal to identify all of the paths and associated combinatorial logic gates between two or more metaregisters. The set of paths and associated combinatorial logic gates are combined to form one or more metapaths. An example register folding algorithm is illustrated by the pseudo-code in table2.

TABLE 2Example Comb-Cone Traversal Pseudocodetraverse_comb_cone(node,cone){depth-first search from node, stopping at register boundariesduring depth-first search, compute arrival and required times perstandard timing analysisas cone endpoints are found, compute their bus_namesreturn a list of source registers, bus names and max depth}cone_generation( ){- generate the set of all destination_bus to source_bus using theinformation gathered by traverse_comb_cone- then generate the bus-based Reg-Reg timing graph}

In further embodiments, heuristics or other algorithms can be used to identify finite state machines and control signals (as opposed to data signals). For example, control signals can be identified as having a small number of interrelated paths, as opposed to data signals that have a large number of interrelated paths connecting the same metaregisters. In the example register folding algorithm of table1, buses having a width less than a tolerance value are not combined into a metaregister. This heuristic distinguishes data signals from control signals in the performance visualization, as discussed in detail below.

In an embodiment, steps305and310do not combine the registers, paths, and combinatorial logic associated with control signals and/or finite state machines into metapaths and metaregisters. By segregating control signals and/or finite state machines from metaregisters and metapaths, this embodiment facilitates the designer's understanding of the function of the design.

Step315generates performance information for metapaths. In an embodiment, step315generates performance information for a metapath by aggregating the performance information associated with each of the metapath's constituent paths. The performance information of a metapath can include the minimum, maximum, average, median, sum, and/or other statistical functions or distributions of performance information of paths. For example, the worst-case timing delay value for a metapath would be the maximum of the timing delay values of its paths. Similarly, the worst-case timing slack value for a metapath would be the minimum of the timing slack values of its paths.

In a further embodiment, step315derives additional performance information for a metapath from performance and other information associated with its constituent paths. For example, a metapath can include an area or resource usage value based on the total number and other attributes of combinatorial logic gates (and/or logic cells in the case of a programmable device) included in the metapath.

In another example, a metapath can include a power consumption value based on the total number and other attributes of combinatorial logic gates (and/or logic cells in the case of a programmable device) included in the metapath. Power consumption can include static power consumption, which is fixed based on the number and types of combinatorial logic gates included in a path, or dynamic power consumption. A metapath can also include a switching activity value that reflects the frequency that signals in the metapath change value. Switching activity can be used to evaluate dynamic power consumption of a metapath as well as noise issues. Switching activity can be determined or estimated using simulations of the design with test vectors or probabilitic methods.

In a further example, a metapath can include a probability distribution function, standard deviation value, histogram, or other statistical measure of the distribution of performance information, such as timing, area, resource usage, power consumption, switching activity, or any other type of performance information, for the paths composing a metapath.

Following the generation of performance information for the metapaths in step315, method300can present the design in numerical or text formats320or in the form of a static or interactive performance visualization325. In formats320, the performance information of metaregisters and metapaths can be presented in the form of tables, reports, or other listings of numerical and text data. In an embodiment, formats320are presented using an interactive performance analysis application. An interactive performance analysis tool enables designers to view text and numerical information on the design at any level of detail. An embodiment of the interactive performance analysis application enables designers to search for and display metaregisters and metapaths using search or filtering criteria. The search and filtering criteria can include any attribute of a metaregister, metapath, or associated performance information.

In a further embodiment, designers can select a metapath for expansion, thereby presenting further information on the paths and/or metapaths within the selected metapath. Designers can also select one or more paths and/or metapaths connecting two or more metaregisters or registers to be collapsed into a single metapath.

A static or interactive performance visualization325presents metaregisters, metapaths, and performance information at any level of detail to designers in the form a graphical display. Embodiments of the performance visualization can include schematics, logic diagrams, directed or undirected graphs, charts, and other graphical presentations. In an embodiment, designers can select a portion of an interactive performance visualization corresponding with a metapath for expansion, thereby presenting further information on the paths and/or metapaths within the selected metapath. Designers can also select one or more paths and/or metapaths connecting two or more metaregisters or registers to be collapsed into a single metapath in the visualization.

Within the visualization, performance information can be presented as graphical and text or numerical annotation to metaregisters and metapaths. For example, each metapath can be labeled with its respective performance information. In another example, metapaths can be color-coded or otherwise visually distinguished based on performance information. In another example, a chart representing a probability distribution function of performance values can be displayed in conjunction with an associated metapath.

In an embodiment, an interactive performance analysis application enables designers to search for and display a visual representation of the metaregisters and metapaths matching search or filtering criteria. The search and filtering criteria can include any attribute of a metaregister, metapath, or associated performance information. The search or filtering criteria can also include a search distance, in which only metapaths and metaregister or registers and paths within a given distance of a selected entity are displayed. Distance can be represented in terms of a number of logic gates, logic cells, paths or metapaths, or registers or metaregisters from a selected entity.

In a further embodiment, a design source code viewer can integrate metaregisters, metapaths, and associated performance information. In this embodiment, designers selecting a metaregister or metapath at any level of detail in the design in either format320or325can view a corresponding portion of design source code in a register transfer language (RTL), Verilog, VHDL, or other hardware description language. In one implementation of this embodiment, identifying information, such as names, is maintained through the compilation process, which enables metapaths and associated performance information to be linked back with its corresponding source code. For designs to be implemented using a programmable logic device, such as an FPGA, another embodiment similarly displays logic cells, lookup tables, or other programmable device features corresponding with a selected metaregister or metapath.

FIGS. 4A-4Dillustrate the operation of a performance visualization system according to an embodiment of the invention.FIG. 4Aillustrates a level of detail400of a design according to an embodiment of the invention. Level of detail400is presented as a graph, with graph nodes representing metaregister or registers and graph connections representing metapaths or paths. For example, level of detail400includes metaregisters405and410. In this example, each metaregister is labeled with a metaregister name and additional information, such as the number of bits in the metaregister. Metaregisters405and410are connected by metapath415. Metapath415represents a number of paths and associated combinational logic gates.

In example level of detail400, metapath415is annotated with performance information including a timing delay value417; depth value419, representing the longest sequence of combinatorial logic gates or lookup tables associated with the metapath415; an area value421, and a timing slack value423. Further embodiments of the invention can include performance information pertaining to other aspects of timing, power consumption, area, routing resource usage and congestion, and other performance characteristics of designs.

In an embodiment, level of detail400is presented as part of an interactive performance visualization system. By selecting a metapath or metaregister, additional metapaths and metaregisters can be presented to the user. For example, the user may select metaregisters405and425to reveal additional detail.

FIG. 4Billustrates a level of detail430presented in response to the selection of metaregisters405and425. In response to the selection of metaregister425, additional metaregister435, corresponding with one or more input pins of the design, and associated metapaths437and439are revealed. Similarly, in response to the selection of metaregister405, additional metaregister440and associated metapath445are revealed.

Further metaregisters and metapaths can be selected to reveal additional detail of the design.FIG. 4Cillustrates a level of detail450presenting additional detail of the design ofFIGS. 4A and 4B. Level of detail450enables designers to view paths and metapaths in additional detail.

FIG. 4Dillustrates a presentation470of a design including both paths and metapaths according to an embodiment of the invention. In this embodiment, the paths associated with finite state machines and control signals are not included in metapaths. This assists the designer in understanding the overall function of the design. In this embodiment, paths and associated combinatorial logic gates for data signals are condensed into metapaths.

For example, presentation470includes metaregisters472,474,476,478, and480. The presentation includes metapaths representing multiple paths and associated combinatorial logic, such as metapaths482,484, and486.

Presentation472also includes finite state machine488. The output signal of finite state machine488is path490, which has not been incorporated into a metapath. Similarly, presentation472includes control registers492. The control signals provided by control registers492are carried by paths494,496, and498. These paths are not combined into metapaths.

FIG. 5illustrates an example compilation process800suitable for creating configuration data for use with an embodiment of the invention. The compilation process800converts a user design into a programmable device configuration adapted to configure a programmable device to implement the user design. The extraction phase805converts a description of the user design, expressed for example in a hardware description language, into a register transfer layer description.

Synthesis phase810converts the register transfer layer description of the user design into a set of logic gates. Embodiments of the synthesis phase810can select between equivalent logic gates to improve resistance to soft errors, as described above. Technology mapping phase815subdivides the set of logic gates into a set of atoms, which are groups of logic gates matching the capabilities of the logic cells or other functional blocks of the programmable device. A given user design may be converted into any number of different sets of atoms, depending upon the underlying hardware of the programmable device used to implement the user design.

Following the technology mapping phase815, the cluster phase820groups related atoms together into clusters. The place phase825assigns clusters of atoms to locations on the programmable device. The route phase830determines the configuration of the configurable switching circuit of the programmable device used to connect the atoms implementing the user design.

The delay annotator phase835determines the signal delays for the set of atoms and their associated connections in the configurable switching circuit using a timing model of the programmable device. The timing analysis phase840determines the maximum operating speed of the programmable device when implementing the user design, for example by determining the portions of the user design have the largest signal delay.

The assembler phase845generates a set of configuration information specifying the configuration of the programmable device implementing the user design, including the configuration of each of the logic cells used to implement the user design and the configuration of the configurable switching circuit used to connect the logic cells. In an embodiment, the assembler phase845also generates sensitivity mask data corresponding with the configuration data. In this embodiment, assembler phase identifies the portions of the configuration memory used by the user design and sets sensitivity mask data accordingly. The assembler phase845can write the configuration information to a configuration file, which can then be used to configure one or more programmable devices to implement instances of the user design.

Embodiments of performance visualization applications can use timing, power analysis, switching activity, or other performance information determined by the timing analysis phase840or other similar performance analysis phases not shown in method800. In another embodiment, performance visualization applications can use estimated timing or other performance information provided at other phases of method800. Additional embodiments of performance visualization applications can operate in conjunction with floorplanning applications, enabling designers to designate the placement location of large numbers of paths and combinatorial logic gates by selecting the corresponding metapath. Similarly, embodiments of performance visualization applications may enable designers to specify large numbers of paths and combinatorial logic gates for special processing or optimization by selecting the corresponding metapath. In a further embodiment, designers can use the performance visualization application to select metapaths with large amounts of switching activity and move the nodes associated with these selected metapaths closer together to minimize wire capacitance and dynamic power consumption.

FIG. 6illustrates an example programmable device suitable for implementing an embodiment of the invention. Programmable device600includes a number of logic array blocks (LABs), such as LABs605,610,615. Each LAB includes a number of programmable logic cells using logic gates and/or look-up tables to perform logic operations, as well as registers to store and retrieve data. LAB605illustrates in detail logic cells620,621,622,623,624,625,626, and627. Logic cells are omitted from other LABs inFIG. 6for clarity. The LABs of device600are arranged into rows630,635,640,645, and650. In an embodiment, the arrangement of logic cells within a LAB and of LABs within rows provides a hierarchical system of configurable connections of a programmable switching circuit, in which connections between logic cells within a LAB, between cells in different LABs in the same row, and between cell in LABs in different rows require progressively more resources and operate less efficiently.

In addition to logic cells arranged in LABs, programmable device600also include specialized functional blocks, such as multiply and accumulate block (MAC)655and random access memory block (RAM)660. The configuration of the programmable device is specified at least in part by configuration data stored in configuration memory675. The configuration data can include values for lookup tables defining the functions of logic cells; values of control signals for multiplexers and other switching devices used by the configurable switching circuit to route signals between inputs, outputs, logic cells, and functional blocks; and values specifying other aspects of the configuration of the programmable device, such as modes of operation of the programmable device and its assorted functional blocks and logic cells. Configuration memory675can also include guardian CRAM cells as described above. Although the configuration memory675is shown inFIG. 6as a monolithic unit, in some programmable devices, configuration memory675is scattered all over the programmable device. In these types of programmable devices, portions of the configuration memory can lie within the logic cells, functional blocks, and configurable switching circuit of the programmable device.

For clarity, the portion of the programmable device600shown inFIG. 6only includes a small number of logic cells, LABs, and functional blocks. Typical programmable devices will include thousands or tens of thousands of these elements.

FIG. 7illustrates a computer system1000suitable for implementing an embodiment of the invention. Computer system1000typically includes a monitor1100, computer1200, a keyboard1300, a user input device1400, and a network interface1500. User input device1400includes 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 monitor1100. Embodiments of network interface1500typically 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).

Computer1200typically includes components such as one or more general purpose processors1600, and memory storage devices, such as a random access memory (RAM)1700, disk drives1800, and system bus1900interconnecting the above components. RAM1700and disk drive1800are 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 computer1200can 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.

Further embodiments can be envisioned to one of ordinary skill in the art after reading the attached documents. For example, although the invention has been discussed with reference to programmable devices, it is equally applicable to performance visualization applications used to analyze any type of digital device, such as standard or structured ASICs, gate arrays, and general digital logic devices. In other embodiments, combinations or sub-combinations of the above disclosed invention can be advantageously made. The block diagrams of the architecture and flow charts are grouped for ease of understanding. However it should be understood that combinations of blocks, additions of new blocks, re-arrangement of blocks, and the like are contemplated in alternative embodiments of the present invention.