EP4327230A1 - Parallel and scalable computation of strongly connected components in a circuit design - Google Patents
Parallel and scalable computation of strongly connected components in a circuit designInfo
- Publication number
- EP4327230A1 EP4327230A1 EP22732775.6A EP22732775A EP4327230A1 EP 4327230 A1 EP4327230 A1 EP 4327230A1 EP 22732775 A EP22732775 A EP 22732775A EP 4327230 A1 EP4327230 A1 EP 4327230A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- vertex
- strongly connected
- sccs
- vertices
- candidate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/337—Design optimisation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
Definitions
- Circuit designs are represented as a netlist for certain types of analysis, for example, for static timing analysis.
- a netlist representation of a circuit design may include loops that can cause multiple issues, both for correctness and complexity. For example, loops in netlists can complicate processing such as logic optimization, static timing analysis, simulation, or formal verification. Therefore, it is important to identify loops in netlists representations of circuit designs so that these portions can be analyzed differently.
- circuit designs being analyzed are very large, for example, very large scale integrated (VLSI) circuits including billions of gates and are difficult to process using a single processor.
- VLSI very large scale integrated
- a system identifies strongly connected components (SCCs) of a circuit design.
- the system receiving a circuit design represented as a graph including a set of vertices and a set of edges.
- the system initializes the graph by marking each vertex as void.
- the system executes multiple threads, each thread performing following steps concurrently.
- Each thread selects a vertex with void state and performs a depth first search starting from the selected vertex.
- the thread marks a vertex as processed once the depth first search started from that vertex is completed. If the thread encounters a vertex marked as processed during the depth first search, the thread skips the vertex.
- Each thread determines a candidate SCC based on the depth first search.
- FIG. 1 illustrates the process for identifying SCCs in a circuit design according to an embodiment.
- FIG.2 is a block diagram illustrating the system architecture of a circuit design analysis system for identifying SCCS of a circuit design according to an embodiment.
- FIG.3 depicts a flowchart of the overall process for identifying SCCs using multiple threads executing in parallel according to an embodiment.
- FIG.4 depicts a flowchart of the process for identifying SCCs executed by each thread according to an embodiment.
- FIG.5 depicts a flowchart of the process for eliminating incomplete SCCs according to an embodiment.
- FIGs.6A-F show examples of processing performed using overlapping threads according to an embodiment.
- FIG.7 depicts a flowchart of various processes used during the design and manufacture of an integrated circuit in accordance with some embodiments of the present disclosure.
- FIG.8 depicts a diagram of an example computer system in which embodiments of the present disclosure may operate.
- a system represents a circuit design as a directed graph and identifies loops in the circuit design by identifying strongly connected components (SCCs). The system may further analyze and process the loops. The system determines SCCs of a graph using a parallel technique that can run on multiple processors. The system starts multiple threads that can run in parallel. Each thread performs a depth first search of the graph to identify a candidate SCC.
- SCCs strongly connected components
- the depth first search includes traversing the graph by beginning at a selected vertex and proceeding as far as possible along each branch of the graph. Since all threads start execution in parallel, some of the threads determine candidate SCCs that are subsets of other SCCs. The system identifies these SCCs as incomplete SCCs and eliminates them. The system returns the remaining SCCs. [0015] Typical techniques for identifying SCCs process the input circuit design sequentially by identifying the strongly connected components one at a time. This makes processing of large circuit designs that may include billions of gates very costly. Certain approaches to parallel SCC require instant access to both direction of the edges of a vertex to perform forward and backward traversal. This requires extra memory.
- the techniques disclosed herein may be used for various EDA processes that determine SCCs, for example, circuit partitioning, logic optimization, static timing analysis, simulation, formal verification, or model checking.
- the techniques disclosed may be used by a compiler for emulation, so that the system can process the SCCs and break the loops in a safe way without changing the circuit behavior).
- the techniques disclosed herein may also be used for other applications that are not related to circuit designs, for example, in social networking systems. In social networking systems, a group of people connected as friends or sharing common tastes are generally strongly connected.
- FIG. 1 illustrates the process for identifying SCCs in a circuit design according to an embodiment.
- the circuit design analysis system 110 receives an input circuit design 115 and identifies SCCs 125A, 125B, 125C in the input circuit design.
- the architecture of the circuit design analysis system 110 is shown in detail in FIG.2 and described in connection with FIG. 2.
- the circuit design analysis system 110 is also referred to herein as a system.
- Embodiments of the system execute processes for parallel computation of SCCs.
- the system generates multiple threads to explore the input graph at once and is therefore able to exploit higher degree of parallelism compared to typical systems. Since multiple threads start processing the graph in parallel, it is possible for multiple threads to process the same SCC. For example, if one thread starts processing the SCC from one vertex and the other thread starts processing the same SCC from another vertex, both threads are processing the same SCC. [0019] Once a thread determines vertices of an SCC, the thread marks the vertices of the SCC as PROCESSED.
- the thread If a thread encounters a vertex V1 marked as PROCESSED while performing the depth first search, the thread skips the vertex V1 and may determine a smaller SCC S1 that is a proper subset of a bigger SCC S2 that includes vertex V1. This allows multiple threads to process SCCs in parallel.
- the SCC S1 is determined to be an incomplete SCC.
- the system identifies and filters out the incomplete SCCs from the set of SCCs determined and returns the filtered set of SCCs. Accordingly, the system is able to determine strongly connected components faster than other techniques by using multiple processors. For example, the techniques disclosed were experimentally measured to reduce SCC computation that takes one hour or more on large netlists to a couple of minutes using a 20 cores machine.
- FIG.2 is a block diagram illustrating the system architecture of a circuit design analysis system for identifying SCCs of a circuit design according to an embodiment.
- the circuit design analysis system 110 includes an initialization component 210, a thread execution component 220, a depth-first search (DFS) component 230, and a filtering component 240.
- Other embodiments may include more or fewer components than indicated herein.
- components may be combined such that steps described as being performed by a particular component herein may be performed by another component without deviating from the scope of the present disclosure.
- the components of the circuit design analysis system 110 are implemented by one or more processing devices (also referred to as computer processors), for example, the processing device shown in FIG.8.
- the initialization component 210 initializes the data structures. For example, the initialization component 210 initializes each vertex of the graph representation of a circuit design to a void value. The initialization component 210 may also initialize a queue data structure for storing the initialized vertices for processing. [0022]
- the thread execution component 220 creates multiple threads for performing the computation of SCCs in parallel. The threads created by the thread execution component 220 runs concurrently. Each thread executes steps to determine a candidate SCC.
- the DFS component 230 performs the steps for determining candidate SCCs from a given graph. The instructions of the DFS component 230 are executed by each thread in parallel.
- the instructions of the DFS component 230 are executed to determine a set of strongly connected subgraphs (SCSs) that represent candidate SCC components.
- the DFS component 230 performs DFS by starting at the root node (selecting some arbitrary node as the root node in the case of a graph) and exploring as far as possible along each branch before backtracking.
- the DFS component 230 uses a stack data structure to store nodes and the DFS process is completed when the stack is empty. For a recursive implementation of the DFS process, the call stack stores the paths traversed during the DFS.
- the filtering component 240 eliminates incomplete SCCs from the set of candidate SCCs so that only valid SCCs remain.
- the filtering component 240 determines whether an SCS is a subset (e.g., a strict subset) of another SCC. If the filtering component 240 identifies an SCS that is a subset of another SCC, the filtering component marks that SCS as an incomplete SCC and eliminates it from the final set of SCCs that is returned by the system.
- a netlist represents a circuit.
- a netlist is made of cells and nets. A cell has input and output ports. A net is a set of ports. A net connects its output ports (usually a net has only one output port) to its input ports.
- a cell c1 is in the fanin of cell c2 (respectively c2 is in the fanout of c1) if and only if (iff) there is a net that connects an output port of c1 to an input port of c2.
- a netlist may be represented as a directed graph (V, E), where V is the set of cells, and E is made of edges (v1, v2) where v1 is an output port, v2 an input port, and ⁇ v1, v2 ⁇ belongs to a net. Practically computing SCCs in a netlist is performed by finding the non-trivial SCCs (i.e., the SCCs with size greater than 1) in the directed graph induced by the netlist.
- a directed graph G is represented as a couple of sets (V, E) of vertices V and edges E.
- the set of edges E is a subset of the cross product of vertices represented as V x V.
- a vertex v2 is a successor of vertex v1 iff (v1, v2) is an edge. Alternatively, v2 is in the fanout of v1, and v1 is in the fanin of v2.
- the transitive fanin (respectively transitive fanout) of a vertex v referred to as TFI(v) (respectively TFO(v)), is the transitive closure of the fanin relation (respectively fanout) starting from a vertex v.
- TFI(v) (respectively TFO(v)) is the set of all vertices that can be reached from vertex v using only the fanin relation (respectively fanout relation).
- a loop is a path from a vertex to itself.
- a self-loop is a loop that has a single edge (v, v).
- a graph is acyclic iff it does not contain any loop.
- Two vertices v1 and v2 may be considered as being strongly connected if there is a path from v1 to v2 and a path from v2 to v1.
- a graph (or subgraph) may be considered as being strongly connected if there is a path between any two of its vertices.
- a strongly connected subgraph is referred to as an SCS. Being strongly connected is an equivalence relation (i.e., symmetric, reflexive, and transitive), and the induced subgraphs of its equivalence classes are called strongly connected components (SCCs). Equivalently, a SCC of a directed graph G is a SCS that is maximal such that no additional edge or vertex from G can be included in the SCS without violating its property of being strongly connected. Accordingly, every loop must be fully included in a SCC, and that any path in a SCC can be extended to a loop inside that SCC.
- FIGs.3-5 depict various flowcharts illustrating processes for identifying SCCs according to various embodiments. The steps are described as being executed by a system, for example, components of the circuit design analysis system 110. The steps may be executed in an order different from that depicted in the respective flowcharts.
- FIG.3 depicts a flowchart of the overall process for identifying SCCs using multiple threads executing in parallel according to an embodiment.
- the system receives 310 a circuit design represented as a graph.
- the process is executed on multiple cores (i.e., processing devices).
- the system initializes 320 each vertex of the graph as void.
- the system marks a vertex v as PROCESSED if the system has explored TFI(v), and all the SCCs in TFI(v) have been determined (by one or multiple threads). This implies the SCC that vertex v belongs to has been identified, including the case of a trivial SCC only made of v. Accordingly, the state of a vertex is either VOID or PROCESSED.
- the system adds 330 the vertices to a queue structure.
- the system starts 340 multiple threads for parallel execution of the steps for determining 350A, 350B, ..., 350N SCC components as shown in FIG.4. Each thread performs the steps for determining 350 candidate SCCs.
- the process executed by each thread for identifying a candidate SCC is referred to as SCC discovery.
- the SCC discovery procedure computes non-trivial strongly connected subgraphs (SCS), i.e., SCSs with more than a single node.
- SCS non-trivial strongly connected subgraphs
- the parallel execution of the threads determines a set of candidate SCCs.
- the system eliminates 360 some of the candidate SCCs identified as incomplete SCCs. If an SCS is a subset (e.g., a strict subset) of a SCC, that SCS is identified as an incomplete SCC.
- FIG.4 depicts a flowchart of the process for identifying SCCs executed by each thread according to an embodiment.
- Each thread executes the steps 410, 420, 430, and 440 while the queue is not empty.
- the thread removes 410 a vertex v0 from the queue and checks 420 if the vertex has state VOID. If a thread cannot find any vertex in VOID state, the system determines that all vertices are in state PROCESSED, and the thread terminates. Otherwise, the thread proceeds with executing a DFS on v0.
- the system executes a parallel implementation of Tarjan’s SCC computation process. Accordingly, each thread applies a modified Tarjan’s DFS for SCC computation.
- the system tracks v.dfsNum, the DFS index (also represented as the time of discovery) of vertex v during a DFS.
- the DFS index is assigned to vertex v only once and does not change in value. Therefore, the system uses the DFS index to uniquely denotes the vertex v.
- the system performs a DFS from some unindexed vertex and iterates that process until all vertices have received a DFS index. As the system performs the DFS and indexing, the system maintains v.lowlink as the smallest DFS number (including v.dfsNum) observed when performing the DFS from v.
- Each thread initializes 430 structures that act as thread-local containers including a map dfs_map, a map lowlink_map, and a queue path_q.
- the map dfs_map is a data structure that stores the DFS number values for the nodes of t he graph and the map lowlink_map stores the lowlink values of the nodes of the graph.
- the queue path_q is a queue data structure for storing paths to nodes during the DFS traversal.
- the thread uses the structures dfs_map, lowlink_map, and path_q, to annotate vertices without interfering with the other threads.
- the system stores (1) the values v.dfsNum as described herein in the map dfs_map (2) the values of v.lowlink as described herein in the map lowlink_map, and (3) the path of vertices traversed during the traversal in the queue path_q.
- the thread performs 440 DFS from vertex v0 using the maps dfs_map and lowlink_map and the queue path_q.
- FIG.5 depicts a flowchart of the process for eliminating incomplete SCCs according to an embodiment.
- the system collects 510 the candidate SCCs discovered by the processes of FIGs.3-4.
- the system sorts 520 the candidate SCCs in order of their decreasing size.
- the system puts 530 the sorted SCCs in a list data structure that allows addition and removal of elements.
- the system repeats the steps 540, 550, 560, 570, and 580 while the list is not empty.
- the system visits the candidate SCCs in the sorted order. Accordingly, the system obtains 540, an SCC from the list.
- the system traverses the SCC to mark 550 the vertices of the SCC obtained from the list as DISCOVERED.
- the system determines 560 if a vertex encountered is already marked DISCOVERED while traversing the SCC. If the system determines 560 that a vertex encountered is already marked DISCOVERED, the system determines that the SCC is incomplete and discards 580 the SCC.
- the system determines that the SCC is a strict subset of a complete SCC that contains it and has been previously seen. If the system does not encounter any vertex that is already marked DISCOVERED while traversing the SCC, the system determines that the SCC is complete and keeps 570 the SCC. [0043] The incomplete SCCs result from thread overlap, and therefore are non-deterministic. They do not impact the correctness of the final result since they are filtered out. [0044] Because a vertex v can be marked as PROCESSED only by one thread, and subsequent discovery of that vertex by other threads will skip visiting v’s TFI, the system obtains a net gain in terms of the wall time required to visit all the vertices.
- the techniques disclosed have properties that include using only use the fanin information, i.e., only need constant-time access to one direction of the edges.
- Substituting “fanout” for “fanin” and “TFO” for “TFI” in the description above produces an equivalent process using only the fanout information.
- the system performs parallel execution using threads without using any mutex nor any complex thread synchronization.
- the system checks whether a vertex is already PROCESSED with an atomic read and updates the state of the vertex with an atomic write. This helps scalability as the number of threads is increased.
- the system computes SCCs on a directed graph in a parallel manner, which only need constant-time access to one direction of the edges.
- the system computes SCCs of a netlist in parallel using constant-time access to the fanin.
- the system may also compute SCCs in parallel using constant-time access to the fanout.
- the threads may overlap visitations of vertices, thus allowing the configuration to scale with the number of cores.
- FIGs.6A-F show examples of processing performed using overlapping threads according to an embodiment.
- FIG.6A shows a simple graph made of 3 vertices v1, v2, v3, and two threads t1 and t2. The state of vertices is shown with white (representing VOID state of vertex) and gray or shaded (representing PROCESSED state of vertex). Thread t1 starts its SCC discovery from v1, and thread t2 starts its SCC discovery from v2.
- the system uses the fanout direction for this example, i.e., the system follows the direction of the arrows during the DFS.
- FIG.6B both threads have started to perform a DFS from their respective starting vertex. Threads t1 has path v1,v2,v3; thread t2 has path v2. In Fig 6C thread t1 reaches v1, which is already in its path. In the meantime, thread t2 continues its DFS and has path v2, v3.
- threads t1 starts to update the lowlinks of the vertices as it unrolls its path for vertex whose TFO has been explored, and it incrementally grows the SCC rooted at v1.
- t1 marks the vertices that are unrolled from the path as PROCESSED, since their TFO has been visited.
- t1 started building a SCC with ⁇ v1 ⁇ , it marked v1 as PROCESSED, and is still unrolling its path.
- thread t2 continues its DFS, but sees v1 as PROCESSED, thus it ignores it. It eventually reaches v2, which it has already seen in its path.
- thread t1 keeps unrolling its path, updating the lowlinks, and growing the SCC with the vertices that match the lowlink value (in that case the DFS number of v1, i.e., 1).
- the SCC grows to ⁇ v1, v3 ⁇ , and v3 is marked PROCESSED.
- Thread t2 starts to unroll its path and grows a SCC ⁇ v2 ⁇ . Note that t2 marks v2 as PROCESSED, because from its point of view it is processed. This will not impair t1 to find the full SCC as it includes unrolling the path and check t1’s local lowlink value, not the vertex’ state.
- FIG.6F thread t1 finished unrolling its path to generate SCC ⁇ v1, v3, v2 ⁇ . Thread t2 finished to unroll its path to generate ⁇ v2, v3 ⁇ .
- FIG.7 illustrates an example set of processes 700 used during the design, verification, and fabrication of an article of manufacture such as an integrated circuit to transform and verify design data and instructions that represent the integrated circuit. Each of these processes can be structured and enabled as multiple modules or operations.
- EDA Electronic Design Automation.
- These processes start with the creation of a product idea 710 with information supplied by a designer, information which is transformed to create an article of manufacture that uses a set of EDA processes 712.
- the design is taped-out 734, which is when artwork (e.g., geometric patterns) for the integrated circuit is sent to a fabrication facility to manufacture the mask set, which is then used to manufacture the integrated circuit.
- artwork e.g., geometric patterns
- a semiconductor die is fabricated 736 and packaging and assembly processes 738 are performed to produce the finished integrated circuit 740.
- Specifications for a circuit or electronic structure may range from low-level transistor material layouts to high-level description languages.
- a high-level representation may be used to design circuits and systems, using a hardware description language (‘HDL’) such as VHDL, Verilog, SystemVerilog, SystemC, MyHDL or OpenVera.
- the HDL description can be transformed to a logic-level register transfer level (‘RTL’) description, a gate-level description, a layout-level description, or a mask-level description.
- RTL logic-level register transfer level
- Each lower representation level that is a more concrete description adds more useful detail into the design description, for example, more details for the modules that include the description.
- the lower levels of representation that are more concrete descriptions can be generated by a computer, derived from a design library, or created by another design automation process.
- SPICE An example of a specification language at a lower level of representation language for specifying more detailed descriptions is SPICE, which is used for detailed descriptions of circuits with many analog components. Descriptions at each level of representation are enabled for use by the corresponding tools of that layer (e.g., a formal verification tool).
- a design process may use a sequence depicted in Fig.7. The processes described by be enabled by EDA products (or tools).
- EDA products or tools
- modules or components in the circuit are specified in one or more description languages and the specification is checked for functional accuracy.
- the components of the circuit may be verified to generate outputs that match the requirements of the specification of the circuit or system being designed.
- Functional verification may use simulators and other programs such as testbench generators, static HDL checkers, and formal verifiers.
- special systems of components referred to as ‘emulators’ or ‘prototyping systems’ are used to speed up the functional verification.
- emulators or ‘prototyping systems’ are used to speed up the functional verification.
- HDL code is transformed to a netlist.
- a netlist may be a graph structure where edges of the graph structure represent components of a circuit and where the nodes of the graph structure represent how the components are interconnected.
- Both the HDL code and the netlist are hierarchical articles of manufacture that can be used by an EDA product to verify that the integrated circuit, when manufactured, performs according to the specified design.
- the netlist can be optimized for a target semiconductor manufacturing technology. Additionally, the finished integrated circuit may be tested to verify that the integrated circuit satisfies the requirements of the specification.
- netlist verification 720 the netlist is checked for compliance with timing constraints and for correspondence with the HDL code.
- design planning 722 an overall floor plan for the integrated circuit is constructed and analyzed for timing and top-level routing.
- circuits may specify a set of transistors, other components, and interconnections that provides a Boolean logic function (e.g., AND, OR, NOT, XOR) or a storage function (such as a flipflop or latch).
- a circuit ‘block’ may refer to two or more cells. Both a cell and a circuit block can be referred to as a module or component and are enabled as both physical structures and in simulations.
- Parameters are specified for selected cells (based on ‘standard cells’) such as size and made accessible in a database for use by EDA products.
- the circuit function is verified at the layout level, which permits refinement of the layout design.
- the layout design is checked to ensure that manufacturing constraints are correct, such as DRC constraints, electrical constraints, lithographic constraints, and that circuitry function matches the HDL design specification.
- resolution enhancement 730 the geometry of the layout is transformed to improve how the circuit design is manufactured.
- tape-out data is created to be used (after lithographic enhancements are applied if appropriate) for production of lithography masks.
- FIG.8 illustrates an example machine of a computer system 800 within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed.
- the machine may be connected (e.g., networked) to other machines in a LAN, an intranet, an extranet, and/or the Internet.
- the machine may operate in the capacity of a server or a client machine in client-server network environment, as a peer machine in a peer-to-peer (or distributed) network environment, or as a server or a client machine in a cloud computing infrastructure or environment.
- the machine may be a personal computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a server, a network router, a switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine.
- PC personal computer
- PDA Personal Digital Assistant
- STB set-top box
- STB set-top box
- a Personal Digital Assistant PDA
- a cellular telephone a web appliance
- server a server
- network router a network router
- switch or bridge any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine.
- machine shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
- the example computer system 800 includes a processing device 802, a main memory 804 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM), a static memory 806 (e.g., flash memory, static random access memory (SRAM), etc.), and a data storage device 818, which communicate with each other via a bus 830.
- main memory 804 e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM), a static memory 806 (e.g., flash memory, static random access memory (SRAM), etc.
- SDRAM synchronous DRAM
- static memory 806 e.g., flash memory, static random access memory (SRAM), etc.
- SRAM static random access memory
- Processing device 802 represents one or more processors such as a microprocessor, a central processing unit, or the like.
- the processing device may be complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets, or processors implementing a combination of instruction sets.
- Processing device 802 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like.
- the processing device 802 may be configured to execute instructions 826 for performing the operations and steps described herein.
- the computer system 800 may further include a network interface device 808 to communicate over the network 820.
- the computer system 800 also may include a video display unit 810 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device 812 (e.g., a keyboard), a cursor control device 814 (e.g., a mouse), a graphics processing unit 822, a signal generation device 816 (e.g., a speaker), graphics processing unit 822, video processing unit 828, and audio processing unit 832.
- the data storage device 818 may include a machine-readable storage medium 824 (also known as a non-transitory computer-readable medium) on which is stored one or more sets of instructions 826 or software embodying any one or more of the methodologies or functions described herein.
- the instructions 826 may also reside, completely or at least partially, within the main memory 804 and/or within the processing device 802 during execution thereof by the computer system 800, the main memory 804 and the processing device 802 also constituting machine-readable storage media.
- the instructions 826 include instructions to implement functionality corresponding to the present disclosure. While the machine-readable storage medium 824 is shown in an example implementation to be a single medium, the term "machine- readable storage medium" should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions.
- machine-readable storage medium shall also be taken to include any medium that is capable of storing or encoding a set of instructions for execution by the machine and that cause the machine and the processing device 802 to perform any one or more of the methodologies of the present disclosure.
- the term “machine-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical media, and magnetic media.
- Such a computer program may be stored in a computer readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic- optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.
- a computer readable storage medium such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic- optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.
- the present disclosure may be provided as a computer program product, or software, that may include a machine-readable medium having stored thereon instructions, which may be used to program a computer system (or other electronic devices) to perform a process according to the present disclosure.
- a machine-readable medium includes any mechanism for storing information in a form readable by a machine (e.g., a computer).
- a machine- readable (e.g., computer-readable) medium includes a machine (e.g., a computer) readable storage medium such as a read only memory (“ROM”), random access memory (“RAM”), magnetic disk storage media, optical storage media, flash memory devices, etc.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
Description
Claims
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202163196076P | 2021-06-02 | 2021-06-02 | |
| US17/748,987 US20220391569A1 (en) | 2021-06-02 | 2022-05-19 | Parallel and scalable computation of strongly connected components in a circuit design |
| PCT/US2022/030865 WO2022256212A1 (en) | 2021-06-02 | 2022-05-25 | Parallel and scalable computation of strongly connected components in a circuit design |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| EP4327230A1 true EP4327230A1 (en) | 2024-02-28 |
Family
ID=82156530
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| EP22732775.6A Pending EP4327230A1 (en) | 2021-06-02 | 2022-05-25 | Parallel and scalable computation of strongly connected components in a circuit design |
Country Status (3)
| Country | Link |
|---|---|
| EP (1) | EP4327230A1 (en) |
| KR (1) | KR20240014460A (en) |
| WO (1) | WO2022256212A1 (en) |
-
2022
- 2022-05-25 KR KR1020237035101A patent/KR20240014460A/en active Pending
- 2022-05-25 WO PCT/US2022/030865 patent/WO2022256212A1/en not_active Ceased
- 2022-05-25 EP EP22732775.6A patent/EP4327230A1/en active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| WO2022256212A1 (en) | 2022-12-08 |
| KR20240014460A (en) | 2024-02-01 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11347917B2 (en) | Determining and verifying metastability in clock domain crossings | |
| US11994979B2 (en) | Smart regression test selection for software development | |
| US20230351082A1 (en) | Satisfiability-based resubstitution for incremental mapped optimization | |
| US11556676B2 (en) | Scalable formal security verification of circuit designs | |
| US12474976B2 (en) | Computation of weakly connected components in a parallel, scalable and deterministic manner | |
| US11836425B2 (en) | Engineering change orders with consideration of adversely affected constraints | |
| US12541097B2 (en) | Optical path tracing in an optical circuit design | |
| US12481816B2 (en) | Constraint file-based novel framework for net-based checking technique | |
| US20220198109A1 (en) | Boolean methods for engineering change order (eco) patch identification | |
| CN117242451A (en) | Parallel and scalable computation of strongly connected components in circuit design | |
| US20220391569A1 (en) | Parallel and scalable computation of strongly connected components in a circuit design | |
| US20230214574A1 (en) | Extended regular expression matching in a directed acyclic graph by using assertion simulation | |
| US12032894B2 (en) | System and method for synchronizing net text across hierarchical levels | |
| EP4327230A1 (en) | Parallel and scalable computation of strongly connected components in a circuit design | |
| US11416661B2 (en) | Automatic derivation of integrated circuit cell mapping rules in an engineering change order flow | |
| US12475285B1 (en) | Solving multiple array problems interacting with each other in constraint solving for functional verification of logic designs | |
| US12014127B2 (en) | Transforming a logical netlist into a hierarchical parasitic netlist | |
| US12602215B1 (en) | Cloud enabled hardware simulation with smart reuse of historical data | |
| US20260037705A1 (en) | Generating hardware description language slices to provide context for violations | |
| US20250028888A1 (en) | Waveform calculation using hybrid evaluation and simulation approach | |
| US20250315589A1 (en) | Dynamic clock tree planning using feedtiming cost | |
| US11816409B1 (en) | Strongly connected component (SCC) graph representation for interactive analysis of overlapping loops in emulation and prototyping | |
| US12361194B2 (en) | Dynamic clock tree planning using feedtiming cost | |
| US11537775B1 (en) | Timing and placement co-optimization for engineering change order (ECO) cells | |
| US11972191B2 (en) | System and method for providing enhanced net pruning |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: UNKNOWN |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE |
|
| PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE |
|
| 17P | Request for examination filed |
Effective date: 20231121 |
|
| AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
| DAV | Request for validation of the european patent (deleted) | ||
| DAX | Request for extension of the european patent (deleted) | ||
| P01 | Opt-out of the competence of the unified patent court (upc) registered |
Free format text: CASE NUMBER: UPC_APP_9716_4327230/2025 Effective date: 20251013 |