Propagation determinations of unknown values in logic simulations of digital circuit designs
The x-propagation determination engine in digital circuit designs efficiently tracks and visualizes x-value propagation, addressing the limitations of conventional methods by providing real-time detection and accurate source identification, thus improving debugging efficiency.
Patent Information
- Application Number
- PCT/US2024/017836
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-02-29
- Publication Date
- 2025-09-04
AI Technical Summary
Conventional methods for detecting and tracing the root cause of unknown values (x-values) in digital circuit designs are tedious, resource-intensive, and often fail to identify the source accurately due to the complexity and propagation of x-values across multiple clock cycles, especially in modern circuits with reduced reset and power-down features.
The implementation of an x-propagation determination engine that tracks and monitors the output signals of state elements like registers and flip-flops during logic simulation, applying various criteria to detect and characterize x-value propagation in real-time, reducing the need for post-simulation back-tracing and providing efficient visualization tools to pinpoint the root causes.
This approach allows for early detection and precise identification of x-value sources within digital circuit designs, reducing computational strain and improving debugging efficiency by visualizing x-value propagation across the circuit design, thereby enhancing the accuracy and speed of debugging processes.
Smart Images

Figure US2024017836_04092025_PF_FP_ABST
Abstract
Description
PROPAGATION DETERMINATIONS OF UNKNOWN VALUES IN LOGIC SIMULATIONS OF DIGITAL CIRCUIT DESIGNSBACKGROUND
[0001] Electronic circuits, such as integrated circuits, are used in nearly every facet of modern society, from automobiles to microwaves to personal computers and more. Design of circuits may involve many steps, known as a "design flow." The particular steps of a design flow are often dependent upon the type of circuit being designed, its complexity, the design team, and the circuit fabricator or foundry that will manufacture the circuit. Electronic design automation (EDA) applications support the design and verification of circuits prior to fabrication. EDA applications may implement various procedures, e.g., functions, tools, or features to analyze, test, or verify a circuit design at various stages of the design flow.BRIEF DESCRIPTION OF THE DRAWINGS
[0002] Certain examples are described in the following detailed description and in reference to the drawings.
[0003] Figure 1 shows an example of a computing system that supports propagation determinations of unknown values in logic simulations of digital circuit designs.
[0004] Figure 2 shows an example tracking of detected state elements to track x-value propagations for a digital circuit design according to the present disclosure.
[0005] Figure 3 shows example x-value visualizations supported by the propagation determination technology of the present disclosure.
[0006] Figure 4 shows an example of logic that a system may implement to support propagation determinations of unknown values in logic simulations of digital circuit designs.
[0007] Figure 5 shows an example of a computing system that supports propagation determinations of unknown values in logic simulations of digital circuit designs.DETAILED DESCRIPTION
[0008] With advances in modern technology, circuits have become an increasingly prevalent and integral part of modern society. As part of circuit design flows, digital circuit designs may be produced to implement various circuit functionalities. A digital circuit design (also referred to as a logical circuit design or logical design) may refer to any circuit design that represents a circuit design through logic elements. For example, digital circuit designs can be described in terms of an exchange of signals between hardware registers (or other state elements) and the logical operations that are performed on those signals, for example through combinational logic. In some examples, digital circuit designs employ or are otherwise represented through Hardware Design Language (HDL), such as the Very high-speed integrated circuit Hardware Design Language (VHDL).
[0009] To verify the functionality of digital circuit designs, logic simulations of digital circuit designs can be performed. In digital logic simulations, stimuli can be applied to the inputs of a digital circuit design, and simulator tools can simulate the behavior of the digital circuit design using the provided stimuli and the design code. Typically, a signal in a digital circuit design can have “0”, “1 ”, or unknown values. Unknown values in a digital circuit design can also be referred to as an x-value. An x-value can mean that the value of a given signal in the digital circuit design can be either “0” or “1 ” and cannot be deterministically known. There are several possible sources of x-values in digital circuit designs, including as examples uninitialized registers or memories, inputs to a circuit that do not have known values, signals from powered-down blocks, and more.
[0010] If not addressed properly, x-values in digital circuit designs can cause serious issues, especially as a circuit may not behave as designed when x- values are present. For example, if an x-value propagates to a state machine of a circuit design, the current state of the digital circuit design can become non-deterministic and circuit behavior can become unpredictable. In some digital circuit designs, x-values are not as prevalent of an issue since such designs may require initialization of all registers to a known value or require that all circuit design blocks are powered on during operation (e.g., no design block power-downs that cause x-values). However, recent developments of cutting-edge circuits may require increasingly faster and lower-power designs. To achieve such goals, modern circuit designs may allow certain registers to not reset to reduce routing resource requirements, and blocks can be powered-off during operation to save power. As such, modern circuit designs may be increasingly susceptible to x-value issues that cause inconsistent or erroneous circuit behaviors. Detection and addressing of x-values in digital circuit designs is thus becoming increasingly important in modern circuit design.
[0011] Logic simulations provide a mechanism to identify x-values in logic circuit design. Detection of x-values in digital circuit designs during simulation can indicate the presence of unknown circuit values in a design phase that should be addressed and fixed prior to hardware fabrication. However, debugging x-values using conventional mechanisms can be a tedious and error-prone process. In conventional logic simulation environments, x-values are typically detected when unexpected x-values are observed in specific circuit signals, such as design outputs or key registers. Thus, conventional systems may detect x-values when a logic simulation completes and circuit outputs exhibit x-value activity. In such conventional techniques, only a small subset of signals in critical portions of a digital circuit design may be observed for x-values. However, such x-value detection may only occur once the x- value has propagated to an important circuit portion (e.g., the output of the system) and oftentimes after the logic simulation has completed.
[0012] To debug and trace the origin of x-values in digital circuit designs, conventional systems may allow a user to back-trace from the specific circuit signal (e.g., register output) that outputs the x-value. Such back-tracing may then involve manually tracking the x-value signal in a backwards circuit direction to identify possible sources of the x-value. For example, simulation systems can support manual back-tracing by checking simulation values of fan-in variables of an observed x-value output and tracing the x-values until the source of the x-value is found. This process may need to be repeated thousands of times because the source of x-values can be several registers back in the circuit pipeline. As another challenge, x-value origination may occur several clock cycles prior in the circuit design from the circuit location at which the x-value is detected, thus making accurate x-value source detection increasingly tedious and difficult.
[0013] Some conventional electronic design automation (EDA) tools implement specific features for back-tracing x-values, typically as part of a debugger tool that is part of an EDA application. Such debuggers facilitate or offer checking capabilities for the fan-in cone of a given register output and can trace x-values according to the design logic of digital circuit designs. Such debuggers can then provide the identified x-value sources to a user. The user can then check the identified x-value sources to see if these debugger- identified sources are the actual cause of the observed x-values. If not, subsequent tracing processing can be initiated from another manually- selected signal. These steps may need to be manually repeated several times for a user to determine sources of x-values in a digital circuit design, and the entire process further repeated for each detected x-value.
[0014] The conventional x-value determination techniques and tools described above face several limitations for x-value back-tracing. For example, the output signal of a flip-flop or other digital circuit design element may have an x-value as a data input for many clock cycles. It is difficult for a debugger tool to decide a particular time or clock cycle that should be back- traced, and separate traces may need to be initiated for each clock cycle the x-value input occurs. Due to the data explosion of such back-tracingpossibilities across multiple clock cycles, conventional back-tracing techniques can be time-consuming, strain computational resources, and may nonetheless fail to actually identify the root cause of an x-value. As another limitation, a clock-gated flip-flop can have an x-value as a data input and a “0”- to-“x-value” transition at a clock edge. Thus, it may be difficult to decide which x-value should be traced. As yet another example limitation, a behavior model, memory, or other digital circuit design element that outputs an x-value can have multiple data inputs, multiple of which may be an x-value. It can be difficult for conventional tools to automatically identify where the x-value at the output originates, further complicating detection and causing debugging errors. Even though conventional debugger tools can help designers backtrace x-values with increased efficiency, much manual effort is still needed. This is especially the case since conventional debugging tools often identify x-values only at key or disparate circuit locations, and only after the identified x-values have already propagated in the digital circuit design for several clock cycles.
[0015] The disclosure herein may provide systems, methods, devices, and logic for propagation determinations of unknown values in logic simulations of digital circuit designs. The propagation determination technology of the present disclosure may support determination of root causes of unknown values in digital circuit designs with increased efficiency and effectiveness as compared to conventional back-tracing. In contrast to manual error-prone back-tracking techniques, the propagation determination features described herein may parse and track output signals of any detected state elements of a digital circuit design, which can include critical and non-critical output signals. By monitoring the various output signals of registers, flip-flops memories, state machines, or other state elements of a digital circuit design, the propagation determination technology described herein can detect unknown values during early propagation phases and pinpoint root causes of x-values at earlier points in the simulation before the x-values have widely propagated after several clock cycles.
[0016] Various metrics by which x-value propagation can be detected and characterized are described herein to track x-value propagations and trigger responses. Moreover, the propagation determination technology of the present disclosure may support various visualization techniques by which circuit designer or user can more efficiently and effectively view x-value propagations across the circuit design. Tracking x-value locations over time and visualizing such propagations can allow for quicker and more efficient pinpointing and determination of x-value propagations and sources, including on a per-design block basis. In contrast to conventional back-tracking techniques that focus on a single output signal and tracing fan-ins for x-value investigations, the propagation determination described herein can provide design-wide monitoring and views of x-value propagations, which can allow for x-value root cause determinations and source pinpointing without tedious back-tracking operations for individual signals. As such, the technology described herein can increase the efficiency of digital circuit design debugging and x-value determinations.
[0017] These and other propagation determination features and technical benefits according to the present disclosure are described in greater detail herein.
[0018] Figure 1 shows an example of a computing system 100 that supports propagation determinations of unknown values in logic simulations of digital circuit designs. The computing system 100 may take the form of a single or multiple computing devices such as application servers, compute nodes, desktop or laptop computers, smart phones or other mobile devices, tablet devices, embedded controllers, and more. In some implementations, the computing system 100 hosts, instantiates, executes, supports, or implements an EDA application or EDA system that supports circuit design and analysis, and may accordingly provide or implement any of the propagation determination technology described herein.
[0019] As an example implementation to support any combination of the propagation determination features described herein, the computing system 100 shown in Figure 1 includes an x-propagation determination engine 110.The computing system 100 may implement the x-propagation determination engine 110 (including components thereof) in various ways, for example as hardware and programming. The programming for the x-propagation determination engine 1 10 may take the form of processor-executable instructions stored on a non-transitory machine-readable storage medium and the hardware for the x-propagation determination engine 110 may include a processor to execute those instructions. A processor may take the form of single processor or multi-processor systems, and in some examples, the computing system 100 implements multiple engines using the same computing system features or hardware components (e.g., a common processor or a common storage medium).
[0020] In operation, the x-propagation determination engine 1 10 may access a digital circuit design and parse the digital circuit design to detect state elements in the digital circuit design. Detected state elements may include any registers, flip-flops, memory elements, or combinations thereof in the digital circuit design. In operation, the x-propagation determination engine 1 10 may also perform a logic simulation on the digital circuit design that includes tracking propagation of x-values in the digital circuit. As noted herein, x-values may represent an unknown value for an output of a digital circuit design element. During the logic simulation, the x-propagation determination engine 110 may track the state elements of the digital circuit design to determine when any output of the state elements is the x-value during the logic simulation and trigger an x-propagation response when an x-propagation criterion is satisfied based on detected x-value outputs for the state elements of the digital circuit design.
[0021] These and other features of the propagation determination technology of the present disclosure are described in greater detail next.
[0022] Figure 2 shows an example tracking of detected state elements to track x-value propagations for a digital circuit design according to the present disclosure. In the example of Figure 2, the x-propagation determination engine 110 accesses a digital circuit design 210. The digital circuit design 210 may be any representation of a circuit with digital logic (in contrast to physicallayouts or physical circuit designs). As examples, the digital circuit design 210 accessed by the x-propagation determination engine 1 10 may take the form of a gate-level circuit design, a register-transfer level (RTL) design (e.g., a synthesizable RTL design), or any other suitable format at which circuit elements are represented at a logical level. The x-propagation determination engine 1 10 may access the digital circuit design 210 in any suitable manner, for example by loading the digital circuit design 210 from a local memory, receiving the digital circuit design 210 across a communication network, through user-selection of an RTL file or other circuit design file, or in various other ways.
[0023] In support of x-value propagation determinations, the x-propagation determination engine 1 10 may parse the digital circuit design 210 to detect state elements in the digital circuit design 210. A state element may refer to any circuit element that can remember input values, e.g., store input values based on a clock cycle. Example state elements may thus include registers, flip-flops, memory elements, and more. Parsing and detection of state elements may include any mechanisms or techniques by which the x- propagation determination engine 110 can identify a state element in the digital circuit design 210. As examples, the x-propagation determination engine 110 may parse the digital circuit design 210 by analyzing, crawling through, or otherwise processing the digital circuit design 210 to identify instances of registers, flip-flops, or other state elements in the digital circuit design 210. The x-propagation determination engine 110 may detect some or all instances of the state elements included in digital circuit designs.
[0024] Detection of state elements in the digital circuit design 210 may allow the x-propagation determination engine 110 to monitor each of the detected state elements during logic simulation. In support of such a feature, the x- propagation determination engine 1 10 may detect state elements in digital circuit designs prior to logic simulation. Design parsing and state element detection may be part of a pre-processing step that occurs prior to or as an initial step of logic simulation. In monitoring detected state elements, the x- propagation determination engine 1 10 may track the output signal of detectedstate elements during logic simulation in order to identify x-values in the digital circuit design 210.
[0025] In support of state element tracking, the x-propagation determination engine 110 may utilize any supported or suitable mechanisms to track the output signals of detected state elements. For instance, the x-propagation determination engine 1 10 may insert a callback operation for each detected state element. Such a call back operation may transmit a callback signal to the x-propagation determination engine 110 whenever the output signal of a tracked state element changes value during logic simulation. As another example, the x-propagation determination engine 110 may log, track, or otherwise store the output value of each detected state element at each clock cycle during the logic simulation. Any form of signal monitoring or tracking is contemplated herein and supported by the x-propagation determination engine 110 for monitoring the output signals of detected state elements in digital circuit designs.
[0026] Note that the x-propagation determination engine 1 10 need not detect or monitor output signals of combinational logic (e.g., logic gates) or other nonstate elements in the digital circuit design 210, though such an option is certainly possible. By foregoing tracking of combinational logic and instead focusing on output signals of state elements (e.g., registers and flip-flops), the x-propagation determination engine 1 10 may reduce the number of monitored signals during logic simulation. Such monitoring reductions can reduce the computational resources required or used to implement the various x-value propagation determination features described herein.
[0027] Upon or after detection of state elements in the digital circuit design 210 and any corresponding processing thereof (e.g., callback operation insertions), the x-propagation determination engine 1 10 may perform a logic simulation on the digital circuit design 210. The x-propagation determination engine 1 10 may implement support for any type of input stimuli or logic simulation features, and thus perform the logic simulation accordingly. By tracking the output signals of the detected state elements during the logic simulation, the x-propagation determination engine 1 10 may track and identifyx-value propagations as they occur, instead of through post-simulation back- tracing processes as in conventional systems.
[0028] During performance of the logic simulation, any number of x- propagation criteria may be applied by the x-propagation determination engine 1 10 to monitor digital circuit designs. As used herein, an x-propagation criterion may refer to any condition that is based on detected x-value outputs for the state elements of a digital circuit design. Various metrics and criteria are presented herein, any of which the x-propagation determination engine 1 10 may apply as x-propagation criteria, whether individually or in combination. Through any of the described x-propagation criteria or combinations thereof, the x-propagation determination engine 1 10 may detect or characterize x-propagation activity of different locations or time periods of the logic simulation. Accordingly, the x-propagation criteria described herein may provide various metrics by which the x-propagation engine 1 10 can detect and analyze x-value activity in logic simulations of digital circuit designs.
[0029] As one example of criteria, the x-propagation determination engine 1 10 may apply an x-propagation criterion that is satisfied when, at a given time period during the logic simulation, a threshold number or percentage of the state elements tracked during the logic simulation have an x-value output. The threshold (also referred to herein as an N% or N number) may be user- specified and may be any configurable or predetermined value. As another example, the x-propagation determination engine 1 10 may apply x- propagation criteria based on propagation of x-values between specific or distinct partitions of a circuit design, such as design blocks, design cells, design elements of differing hierarchical levels, and the like. As used herein, a design block may refer to any sub-circuit or partition of a broader digital circuit design. Design blocks may be of any hierarchy level in a circuit design and may provide any type of functionality within a circuit. As such, a designblock may itself be a circuit that a sub-portion of a digital circuit design. Multiple design block instances with the same block design may be included in a digital circuit design. Design-block based x-propagation criterion may besatisfied when, at a given time period during the logic simulation, an x-value output is determined to have propagated from a design block (e.g., design block instance) in the digital circuit design a different design block (e.g., another design block instance) in the digital circuit design.
[0030] As yet another criterion example, the x-propagation determination engine 110 may apply an x-propagation criterion that is satisfied when, at a given time period during the logic simulation, an x-value output is detected as an output for a high criticality register or other high criticality state element in the digital circuit design. Criticality measures can be designated via user input, and the x-propagation determination engine 110 may categorize detected state elements in a digital circuit design into different criticality classifications according to any suitable classification scheme, type, or categorization implementation.
[0031] Continuing the criteria examples, the x-propagation determination engine 110 may apply an x-propagation criterion that is satisfied when, at a given time period during the logic simulation, a threshold percentage of the state elements tracked during the logic simulation have an output that changes from a known value (e.g., “0” or “1 ”) to the x-value. Such an x- propagation criterion may especially track the changing of output values from a known “1 ” or “0” value to an unknown value, which can emphasize monitoring of x-value propagation across previously uncorrupted state elements and may support x-propagation analyses with increased precision and pinpoint accuracy.
[0032] While some examples of x-propagation criteria are presented herein, the x-propagation determination engine 110 may apply any additional or alternative x-propagation criteria based on detected x-value outputs in a digital circuit design.
[0033] Note that the x-propagation determination engine 110 may apply any of the x-propagation criteria described herein across an entire digital circuit design or across any particular sub-hierarchy, partition, or sub-portion of a digital circuit design. As an illustrative example, the x-propagation determination engine 110 may determine an x-propagation criterion assatisfied when N% of the monitored state elements in an entire digital circuit design are corrupted (e.g., have an x-value output signal) or, alternatively, when N% of the monitored state elements of a(ny) design block in the digital circuit design have an x-value output signal. Thus, x-propagation criteria can be applied at any granularity within a digital circuit design. As yet another feature, the x-propagation determination engine 110 may apply differing N- value percentage thresholds for different partitions of a circuit design, e.g., 10% threshold for a first design block (or instances thereof), 15% for a second design block (or instances thereof), and a 1% threshold for the entire digital circuit design.
[0034] As another example feature of the present disclosure, the x- propagation determination engine 110 may determine satisfaction of x- propagation criteria over any time period during the logic simulation. As used herein, a time period may refer to a particular point in time or a particular time range during a logic simulation. As such, the x-propagation determination engine 110 may determine satisfaction of an x-propagation criterion in which > 5% of the flip-flops in a particular design block have an x-value output at any particular point in time during the logic simulation at which such a criterion is satisfied or, in addition or as an alternative, when such a criterion is satisfied over an entire time range (e.g., over a 2.5 second time range). Any suitable time measurement is contemplated herein with regards to x-propagation criteria satisfaction and corresponding responses.
[0035] Responsive to a determination that an x-propagation criterion is satisfied, the x-propagation determination engine 110 may trigger an x- propagation response. Any suitable action is contemplated herein as an x- propagation response by the x-propagation determination engine 110. Example x-propagation responses may thus include providing a visual indicator or user alert upon x-propagation criterion satisfaction or flagging the given time period during the logic simulation at which the x-propagation criterion is satisfied. X-propagation responses may also include any operation or action taken by the x-propagation determination engine 110 in support of x-value visualizations as described further herein.
[0036] In any of the ways described herein, the x-propagation determination engine 110 may detect and monitor state elements in digital circuit designs. Tracking of output signals of detected state elements may allow the x- propagation determination engine 1 10 to determine satisfaction of x- propagation criteria applied to track the propagation of x-values in the digital circuit design. Through real-time tracking of x-value propagations through x- propagation criteria, the propagation determination technology of the present disclosure may support tracking of unknown values (including x-value root causes) with increased efficiency and accuracy. Back-tracing need not be performed after performance of the logic simulation indicates the presence of x-values. Instead, such x-value detections and propagations may be contemporaneously tracked by the x-propagation determination engine 110 during the logic simulation itself. Flagged time periods of suspected root causes or increased propagation activity may be determined through state element monitoring and without time-consuming and error-prone back-tracing of individual circuit signals.
[0037] As yet another technical benefit of the present disclosure, the propagation determination technology of the present disclosure may include various x-value visualization features which can aid x-value debugging and improve the efficiency and effectiveness of debugging systems in pinpointing root causes and propagation of x-values in digital circuit designs. Various x- value visualization features are described next with reference to Figure 3.
[0038] Figure 3 shows example x-value visualizations supported by the propagation determination technology of the present disclosure. In the example of Figure 3, the x-propagation determination engine 110 implements a graphical user interface (GUI) 300 that can visualize any suitable data of x- value propagations tracked during logic simulation, including according to any number of x-propagation criteria.
[0039] In some implementations, the x-propagation engine 110 may visualize, through the GUI 300, x-value activity based on partitions of a digital circuit design. Any partitioning granularity is supported by the x-propagation determination engine 110 through the GUI 300. For instance, the GUI 300may visualize x-value activity for multiple design blocks of a digital circuit design with individual design blocks characterized independently based on monitored x-value activity. By doing so, the GUI 300 may help a user quickly and efficiently identify particular design blocks of a digital circuit design that exhibit unusual or extraneous x-value propagation activity. Such design block-based visualizations may also assist in the analysis of when (e.g., time periods) and where (e.g., circuit locations) x-values are introduced during circuit operation and how such x-values propagate in the digital circuit design.
[0040] The GUI 300 implemented by the x-propagation determination engine 110 may visualize x-value activity on a design block-specific basis according to any number or combination of visualization metrics, including through or based on the various x-propagation criteria presented herein. As an example visualization metric, the x-propagation determination engine 110 may apply an “XFF” visualization metric which measures a number (or percentage) of state elements (e.g., flip flops) within a given design block that have an x-value output. Such a visualization metric may be similar to the N% x-propagation criteria described herein. The x-propagation determination engine 1 10 may measure the “XFF” visualization metric for the various design blocks of a digital circuit design using the output signals of detected state elements monitored during logic simulation. In doing so, the x-propagation determination engine 110 may compute the “XFF” metric value for any design block of the digital circuit design at any given point in time or time range during the logic simulation, which the x-propagation determination engine 110 can visualize through the GUI 300.
[0041] As another example metric, the x-propagation determination engine 110 may apply an “XCFF” visualization metric which measures a number (or percentage) of state elements (e.g., flip flops) within a given design block that have an output value change from a “0” or “1 ” known value to an x-value within a given point in time or time range. In a similar manner as with the “XFF” visualization metric, the x-propagation determination engine 110 may measure the “XCFF” visualization metric for the various design blocks that comprise a digital circuit design or sub-portion thereof. While two examplemetrics are presented herein, any suitable additional or alternative visualization metric may be consistently applied by the x-propagation determination engine 110.
[0042] To visualize multiple design blocks based on visualization metrics, the x-propagation determination engine 110 may utilize heat maps. An example heat map is shown in Figure 3 as the heat map 302 of the GUI 300 implemented by the x-propagation determination engine 110. The x- propagation determination engine 110 may provide the heat map 302 to visualize a given visualization metric for multiple design blocks of a digital circuit design. Each separate partition of the heat map 302 can represent an instance of the various design blocks that form a digital circuit design, and the x-propagation determination engine 110 may vary the size of the partitions in the heat map 302 to reflect (e.g., in proportion to) a number of monitored state elements in the corresponding design block instance represented by the partitions. Thus larger-sized partitions in the heat map 302 may correspond to design block instances with a larger number of monitored state element outputs and vice versa.
[0043] In visualizing the heat map 302, the x-propagation determination engine 110 may visualize each partition of the heat map 302 with a color or pattern based on a value of the specific visualization metric visualized via the GUI 300, e.g., based on the XFF or XCFF visualization metric value determined for each corresponding design block instance. Any suitable color or pattern scheme may be utilized, such a green visualization color for a 0% XFF or XCFF value and a red visualization color for a 100% XFF or XCFF value with gradient coloring at other % breakpoints or ranges. In the example shown in Figure 3, the x-propagation determination engine 110 patterns partitions in an increasingly darker scheme to reflect increasingly higher values of the visualization metric, whether XFF or XCFF. Any suitable heat map visualization scheme is contemplated herein to distinguish between different values or value ranges of applied visualization metrics for various design blocks of a digital circuit design.
[0044] In support of x-value propagation analyses, the GUI 300 implemented by x-propagation determination engine 110 may support visualizations over time. As an example, the x-propagation determination engine 110 may implement the heat map 302 or any other portion of the GUI 300 to support a scroll-over-time feature in which the heat map colors of visualized partitions change as the visualization metric value of design block instances change over time during a logic simulation. By doing so, x-value propagation activity can be visualized, and pin-pointing of x-value leakage and propagation can be identified with increased ease and efficiency.
[0045] As an illustrative debugging example, the x-propagation determination engine 110 may provide a scroll-over-time feature for a digital circuit design. Responsive to a user-input for time scrolling, a heat map partition for a given design block in a digital circuit design may change in color indicative of increasing x-value propagation and activity (e.g., an increased XFF or XCFF value). This may indicate that the number of x-values propagating within this scrolling time range has increased, and a user can identify increased leaking of x-values during this time period for the given design block. The user may then delve further into this particular design block and the x-propagation determination engine 110 may support further visualization of the lower-level design blocks (e.g., sub-blocks) that form this particular design block. For instance, the GUI 300 can support selection of this particular design block and visualize a heat map (including over the identified time range) for any sub-blocks of a lower hierarchy that form the given design block. Such a visualization of a given design block at a lower granularity can allow for further pin-pointing of x-value occurrences and propagation.
[0046] Moreover, the x-propagation determination engine 110 may visualize the value of visualization metrics for various design block instances across different points of time and time ranges, including the flagged time periods at which any of the x-propagation criteria are determined to have been satisfied during logic simulation. Such flagged times may serve as bookmarks or saved snapshots during the logic simulation at which the x-propagationdetermination engine 110 can suggest as an initial investigation point for users. Such snapshots and automatic time capture through x-propagation responses triggered during logic simulation may provide specific points at which the number or % of state elements corrupted with x-value outputs exceeds a specified threshold, e.g., > N%.
[0047] The x-propagation determination engine 110 may support display of any type of data related to x-value propagation through the GUI 300. Various features of heatmaps are described herein, including through the heat map 302 in Figure 3. As another example, the x-propagation determination engine 110 may support any time period selection capabilities through the GUI 300, including selection for display of specific points in time or time ranges. Additionally or alternatively, the x-propagation determination engine 1 10 may support visualization of design blocks of any partition or granularity within a digital circuit design.
[0048] Selection of a particular design block instances to visualize may be supported, including for any hierarchy level of the digital circuit design and sub-portions thereof. As yet another example, the x-propagation determination engine 110 may provide data listings in the GUI 300, for example to indicate specific registers, flip-flops, or other state elements within a given design block or circuit partitions that have an x-value output at a given time period. While examples of various visualization capabilities are described herein, the x-propagation determination engine 110 may implement any suitable visualization in support of x-value propagation determinations according to the present disclosure.
[0049] Various features have been described herein for x-propagation determinations. Any combination of the features described herein can be implemented by the x-propagation determination engine 110 in support of the detection, characterization, analysis, or visualization of x-value activity in digital circuit designs.
[0050] Figure 4 shows an example of logic 400 that a system may implement to support propagation determinations of unknown values in logic simulations of digital circuit designs. For example, the computing system 100 mayimplement the logic 400 as hardware, executable instructions stored on a machine-readable medium, or as a combination of both. The computing system 100 may implement the logic 400 via the x-propagation determination engine 110, through which the computing system 100 may perform or execute the logic 400 as a method to support propagation determinations of unknown values in logic simulations of digital circuit designs. The following description of the logic 400 is provided using the x-propagation determination engine 110 as an example. However, various other implementation options by systems are possible.
[0051] In implementing the logic 400, the x-propagation determination engine 110 may access a digital circuit design (402) and parse the digital circuit design to detect state elements in the digital circuit design (404). Detected state elements may include any registers, flip-flops, memory elements, or combinations thereof in the digital circuit design. In implementing the logic 400, the x-propagation determination engine 110 may also perform a logic simulation on the digital circuit design that includes tracking propagation of x-values in the digital circuit (406). As noted herein, x-values may represent an unknown value for an output of a digital circuit design element. During performance of the logic simulation, the x-propagation determination engine 1 10 may track the state elements of the digital circuit design to determine when any output of the state elements is the x-value during the logic simulation (408) and trigger an x-propagation response when an x-propagation criterion is satisfied based on detected x-value outputs for the state elements of the digital circuit design (410), doing so in any of the ways described herein.
[0052] The logic 400 shown in Figure 4 provides an illustrative example by which a computing system 102 may support, implement, or provide capabilities for criticality determinations for elementary subparts of a circuit design. Additional or alternative steps in the logic 400 are contemplated herein, including according to any of the propagation determination technology described herein through the x-propagation determination engine 110.
[0053] Figure 5 shows an example of a computing system 500 that supports propagation determinations of unknown values in logic simulations of digital circuit designs. The computing system 500 may include a processor 510, which may take the form of a single or multiple processors. The processor(s) 510 may include a central processing unit (CPU), microprocessor, or any hardware device suitable for executing instructions stored on a machine- readable medium. The computing system 500 may include a machine- readable medium 520. The machine-readable medium 520 may take the form of any non-transitory electronic, magnetic, optical, or other physical storage device that stores executable instructions, such as the x-propagation determination instructions 522 shown in Figure 5. As such, the machine- readable medium 520 may be, for example, Random Access Memory (RAM) such as a dynamic RAM (DRAM), flash memory, spin-transfer torque memory, an Electrically-Erasable Programmable Read-Only Memory (EEPROM), a storage drive, an optical disk, and the like.
[0054] The computing system 500 may execute instructions stored on the machine-readable medium 520 through the processor 510. Executing the instructions (e.g., the x-propagation determination instructions 522) may cause the computing system 500 to perform any of the propagation determination features described herein, including according to any of the features of the x-propagation determination engine 110.
[0055] For example, execution of the x-propagation determination instructions 522 by the processor 510 may cause the computing system 500 to access a digital circuit design and parse the digital circuit design to detect state elements in the digital circuit design. Detected state elements may include any registers, flip-flops, memory elements, or combinations thereof in the digital circuit design. Execution of the x-propagation determination instructions 522 by the processor 510 may further cause the computing system 500 to perform a logic simulation on the digital circuit design that includes tracking propagation of x-values in the digital circuit As noted herein, x-values may represent an unknown value for an output of a digital circuit design element. Execution of the x-propagation determination instructions522 by the processor 510 may also cause the computing system 500 to, during performance of the logic simulation, track the state elements of the digital circuit design to determine when any output of the state elements is the x- value during the logic simulation and trigger an x-propagation response when an x-propagation criterion is satisfied based on detected x-value outputs for the state elements of the digital circuit design, doing so in any of the ways described herein.
[0056] Any additional or alternative propagation determination features as described herein may be implemented via the x-propagation determination instructions 522.
[0057] The systems, methods, devices, and logic described above, including the x-propagation determination engine 110, may be implemented in many different ways in many different combinations of hardware, logic, circuitry, and executable instructions stored on a machine-readable medium. For example, the x-propagation determination engine 110 may include circuitry in a controller, a microprocessor, or an application specific integrated circuit (ASIC), or may be implemented with discrete logic or components, or a combination of other types of analog or digital circuitry, combined on a single integrated circuit or distributed among multiple integrated circuits. A product, such as a computer program product, may include a storage medium and machine-readable instructions stored on the medium, which when executed in an endpoint, computer system, or other device, cause the device to perform operations according to any of the description above, including according to any features of the x-propagation determination engine 110.
[0058] The processing capability of the systems, devices, and engines described herein, including the x-propagation determination engine 110, may be distributed among multiple system components, such as among multiple processors and memories, optionally including multiple distributed processing systems or cloud / network elements. Parameters, databases, and other data structures may be separately stored and managed, may be incorporated into a single memory or database, may be logically and physically organized in many different ways, and may be implemented in many ways, including datastructures such as linked lists, hash tables, or implicit storage mechanisms. Programs may be parts (e.g., subroutines) of a single program, separate programs, distributed across several memories and processors, or implemented in different ways, such as in a library (e.g., a shared library).
[0059] While various examples have been described above, many more implementations are possible.
Claims
CLAIMS1 . A method comprising: by a computing system: accessing (402) a digital circuit design (210); parsing (404) the digital circuit design (210) to detect state elements in the digital circuit design (210), wherein the state elements comprise registers, flip-flops, memory elements, or any combination thereof; performing (406) a logic simulation on the digital circuit design (210) that includes tracking propagation of x-values in the digital circuit, wherein the x-values represent an unknown value for an output of a digital circuit design element, including by, during the logic simulation: tracking (408) the state elements of the digital circuit design(210) to determine when any output of the state elements is the x- value during the logic simulation; and triggering (410) an x-propagation response when an x- propagation criterion is satisfied based on detected x-value outputs for the state elements of the digital circuit design (210).
2. The method of claim 1 , wherein the x-propagation criterion is satisfied when, at a given time period during the logic simulation, a threshold percentage of the state elements tracked during the logic simulation have an output of the x-value.
3. The method of claim 1 , wherein the x-propagation criterion is satisfied when, at a given time period during the logic simulation, an x-value output is determined to have propagated from a design block in the digital circuit design (210) to a different design block in the digital circuit design (210).
4. The method of claim 1 , wherein the x-propagation criterion is satisfied when, at a given time period during the logic simulation, an x-value output is detected as an output for a high criticality register in the digital circuit design(210) and wherein a criticality measure for the high criticality register is designated via user input.
5. The method of claim 1 , wherein the x-propagation criterion is satisfied when, at a given time period during the logic simulation, a threshold percentage of the state elements tracked during the logic simulation have an output that changes from a known value to the x-value.
6. The method of any of claim 2-5, wherein the x-propagation response comprises flagging the given time period during the logic simulation at which the x-propagation criterion is satisfied.
7. The method of any of claims 1-6, further comprising visualizing x- value activity for the state elements of the digital circuit design (210) for a particular time period during the logic simulation, including by: visualizing multiple design blocks of the circuit design block, wherein the multiple design blocks are sized differently based on a number of the state elements of the digital circuit design (210) included in each of the multiple design blocks; and applying a color or pattern to each of the visualized multiple design blocks based on a computed visualization metric value, wherein the visualization metric value is a number or percentage of the state elements in each of the multiple design blocks that has an x-value output signal at the particular time period, or wherein the visualization metric value is a number or percentage of the state elements in each of the multiple design blocks that has an output signal that changed from a known value to the x- value at the particular time period.
8. A system comprising: a processor (510) ; anda non-transitory machine-readable medium (520) comprising instructions (522) that, when executed by the processor (510), cause a computing system (100, 500) to: access a digital circuit design (210); parse the digital circuit design (210) to detect state elements in the digital circuit design (210), wherein the state elements comprise registers, flip-flops, memory elements, or any combination thereof; perform a logic simulation on the digital circuit design (210) that includes tracking propagation of x-values in the digital circuit, wherein the x-values represent an unknown value for an output of a digital circuit design element, including by, during the logic simulation: tracking (408) the state elements of the digital circuit design (210) to determine when any output of the state elements is the x-value during the logic simulation; and triggering (410) an x-propagation response when an x- propagation criterion is satisfied based on detected x-value outputs for the state elements of the digital circuit design (210).
9. The system of claim 8, wherein the x-propagation criterion is satisfied when, at a given time period during the logic simulation, a threshold percentage of the state elements tracked during the logic simulation have an output of the x-value.
10. The system of claim 8, wherein the x-propagation criterion is satisfied when, at a given time period during the logic simulation, an x-value output is determined to have propagated from a design block in the digital circuit design (210) to a different design block in the digital circuit design (210).1 1 . The system of claim 8, wherein the x-propagation criterion is satisfied when, at a given time period during the logic simulation, an x-value output is detected as an output for a high criticality register in the digital circuit design (210) and wherein a criticality measure for the high criticality register is designated via user input.
12. The system of claim 8, wherein the x-propagation criterion is satisfied when, at a given time period during the logic simulation, a threshold percentage of the state elements tracked during the logic simulation have an output that changes from a known value to the x-value.
13. The system of any of claims 8-12, wherein the x-propagation response comprises flagging the given time period during the logic simulation at which the x-propagation criterion is satisfied.
14. The system of any of claims 8-14, wherein the instructions (522) further cause the computing system to visualize x-value activity for the state elements of the digital circuit design (210) for a particular time period during the logic simulation, including by: visualizing multiple design blocks of the circuit design block, wherein the multiple design blocks are sized differently based on a number of the state elements of the digital circuit design (210) included in each of the multiple design blocks; and applying a color or pattern to each of the visualized multiple design blocks based on a computed visualization metric value, wherein the visualization metric value is a number or percentage of the state elements in each of the multiple design blocks that has an x-value output signal at the particular time period, or wherein the visualization metric value is a number or percentage of the state elements in each of the multiple design blocks that has an output signal that changed from a known value to the x- value at the particular time period.
15. A non-transitory machine-readable medium (520) comprising instructions (522) that, when executed by the processor (510), cause a computing system (100, 500) to perform a method according to any of claims 1 -7.
Citation Information
Patent Citations
Method and apparatus for isolating the root of indeterminate logic values in an HDL simulation
US20030135838A1