Multi-user collaborative design processing method and electronic equipment
By adopting a multi-person collaborative design processing method in EDA software and using a strategy library to automatically and collaboratively process the operations of multiple users, the problem of low collaborative design efficiency in existing technologies is solved, and efficient and reliable multi-person collaborative design is achieved.
Patent Information
- Application Number
- CN202510751339.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2025-06-06
- Publication Date
- 2025-09-23
AI Technical Summary
Existing Electronic Design Automation Software (EDA) has performance bottlenecks in multi-person collaborative design. In particular, it is inefficient in coordinating operation sequences and handling conflicts in a distributed environment. Moreover, failures in the central server can lead to interruptions in collaborative work.
A multi-person collaborative design processing method is adopted. By responding to the operations of multiple users in the EDA software, the target collaborative strategy is determined according to the strategy library, such as the clock collaborative strategy, the last write-effective collaborative strategy, the ordered set collaborative strategy and the graph collaborative strategy, and the controlled objects of multiple operations are automatically collaboratively processed to avoid relying on the central server for coordination.
It improves the reliability and efficiency of multi-person collaborative design, reduces the error rate of conflict resolution, enables efficient collaborative processing in complex scenarios, and avoids interruptions caused by central server failures.
Smart Images

Figure CN120688439A_ABST
Abstract
Description
Technical Field
[0001] The present application relates to the field of chip design technology, and more specifically, to a multi-person collaborative design processing method and electronic equipment. Background Art
[0002] As chip manufacturing processes continue to shrink, chip integration levels are significantly increasing. Because the sheer scale of a design cannot be accomplished by a single engineer or team, it requires the collaborative work of numerous professionals, including engineers from various fields, including digital, analog, and layout designers. This collaborative development approach allows individuals from diverse backgrounds to leverage their expertise and jointly advance project progress.
[0003] Current Electronic Design Automation (EDA) collaborative software primarily relies on a central server or master node to coordinate operation sequences and handle conflicts.
[0004] However, existing methods for coordinating operation sequences and handling conflicts can become performance bottlenecks in distributed EDA software environments, and a central server failure can disrupt the entire collaborative process. Furthermore, conflict handling in EDA collaborative software requires analyzing and converting operations, which can be complex in complex scenarios and consume significant computing resources and time. Summary of the Invention
[0005] The purpose of this application is to provide a multi-person collaborative design processing method and electronic device to address the deficiencies in the above-mentioned prior art, so as to solve the problem in the prior art that collaborative work cannot be guaranteed in real time.
[0006] To achieve the above objectives, the technical solutions adopted in this application are as follows:
[0007] In a first aspect, the present application provides a multi-person collaborative design processing method, the method comprising:
[0008] In response to multiple operations of multiple users on at least one controlled object in electronic design automation (EDA) software, determining at least one target collaboration strategy from a strategy library based on each of the operations, wherein the controlled object includes at least one of the following: a project-level object, a module-level object, a component-level object, a connection-level object, and a graph-level object, and the strategy library includes a clock collaboration strategy, a last-write-effective collaboration strategy, an ordered set collaboration strategy, and a graph collaboration strategy;
[0009] Based on the at least one target coordination strategy, coordinated processing is performed on the plurality of controlled objects under operation.
[0010] Optionally, determining at least one target collaboration strategy from a strategy library according to each of the operations includes:
[0011] If multiple operations cause connection changes or component changes, obtain the timestamp of each operation;
[0012] Determining, based on the controlled object of each operation and the timestamp of each operation, whether the target collaborative strategy is the last-written effective collaborative strategy or the clock collaborative strategy, wherein the last-written effective collaborative strategy is used to indicate that the operation with the latest timestamp is used as the operation of the controlled object, and the clock collaborative strategy is used to record the operations and operation times of each user and merge the operations of each user;
[0013] If multiple operations involve adding or deleting connections or components, determine whether the operations result in changes to the printed circuit board, schematic, or package structure;
[0014] If a change is caused to the printed circuit board, the target collaboration strategy is determined to be a graph collaboration strategy, which is used to add, delete, or merge components or connections and generate connection relationships;
[0015] If the schematic diagram or package structure changes, the target collaboration strategy is determined to be an ordered set collaboration strategy, which is used to modify the component library based on the user's operation so that the referenced components are modified at the same time.
[0016] Optionally, determining the target coordination strategy as the last written effective coordination strategy or the clock coordination strategy according to the controlled object of each operation and the timestamp of each operation includes:
[0017] Determine whether the controlled objects of each operation are the same component or the same connection;
[0018] If the controlled objects of the operations are not the same component or the same connection, then the target coordination strategy is determined to be the last written effective coordination strategy;
[0019] If the controlled objects of the various operations are the same element or the same connection, then it is determined whether the attributes of the controlled objects of the various operations are the same attribute;
[0020] If so, determining that the target collaborative strategy is the last written effective collaborative strategy;
[0021] If not, it is determined that the target coordination strategy is a clock coordination strategy.
[0022] Optionally, after performing collaborative processing on the controlled objects of the multiple operations based on the at least one target collaborative strategy, the method further includes:
[0023] After performing collaborative operations on the controlled object based on the last written effective collaborative strategy or the clock collaborative strategy, determining whether the multiple operations cause changes in a printed circuit board, a schematic diagram, or a package structure;
[0024] If a change is caused to the printed circuit board, the controlled objects of the multiple operations are processed based on the graph collaboration strategy;
[0025] If a schematic diagram change or a package structure change is caused, the controlled objects of the multiple operations are processed based on the ordered set coordination strategy.
[0026] Optionally, the method further includes:
[0027] Determine whether the network status is normal;
[0028] If so, determine whether the controlled objects within the visual range of each user have changed. If so, obtain visual information based on the collaborative processing results of the controlled objects of the multiple operations;
[0029] According to the visual information, current information of each controlled object is displayed within the visual range of each user.
[0030] Optionally, the method further includes:
[0031] If the network status is abnormal, the operation information of each user is cached locally, and after the network status is restored, the operation information of each user cached locally is synchronized to the server.
[0032] Optionally, the project-level objects include module collections, global component libraries, cross-module connections, and global settings objects;
[0033] The module level includes module metadata, component instances, port systems, module nesting, and module wiring;
[0034] The component level includes component definition, instance attributes and associated data;
[0035] The connection level includes connection data, level association and status mark;
[0036] The layer level includes layer attribute definition, hierarchical relationship and state management.
[0037] Optionally, the last-write-effective coordination strategy is further used to:
[0038] Based on the pre-set user lock, the level operated by the target user is locked to prevent other users from operating the level operated by the target user.
[0039] Optionally, the last-written effective collaborative strategy is further configured to: if the operation instructs the user to perform a moving operation, the controlled object is first aligned with the grid on the basis of executing the movement.
[0040] In a second aspect, the present application provides a multi-person collaborative design processing device, the device comprising:
[0041] a response module, configured to respond to multiple operations of multiple users on at least one controlled object in electronic design automation (EDA) software, and determine at least one target coordination strategy from a strategy library based on each of the operations, wherein the controlled object includes at least one of the following: a project-level object, a module-level object, a component-level object, a connection-level object, and a graph-level object, and the strategy library includes a clock coordination strategy, a last-write-effective coordination strategy, an ordered set coordination strategy, and a graph coordination strategy;
[0042] A processing module is configured to perform collaborative processing on the controlled objects of the multiple operations based on the at least one target collaborative strategy.
[0043] Optionally, the response module is specifically configured to:
[0044] If multiple operations cause connection changes or component changes, obtain the timestamp of each operation;
[0045] Determining, based on the controlled object of each operation and the timestamp of each operation, whether the target collaborative strategy is the last-written effective collaborative strategy or the clock collaborative strategy, wherein the last-written effective collaborative strategy is used to indicate that the operation with the latest timestamp is used as the operation of the controlled object, and the clock collaborative strategy is used to record the operations and operation times of each user and merge the operations of each user;
[0046] If multiple operations involve adding or deleting connections or components, determine whether the operations result in changes to the printed circuit board, schematic, or package structure;
[0047] If a change is caused to the printed circuit board, the target collaboration strategy is determined to be a graph collaboration strategy, which is used to add, delete, or merge components or connections and generate connection relationships;
[0048] If the schematic diagram or package structure changes, the target collaboration strategy is determined to be an ordered set collaboration strategy, which is used to modify the component library based on the user's operation so that the referenced components are modified at the same time.
[0049] Optionally, the response module is specifically configured to:
[0050] Determine whether the controlled objects of each operation are the same component or the same connection;
[0051] If the controlled objects of the operations are not the same component or the same connection, then the target coordination strategy is determined to be the last written effective coordination strategy;
[0052] If the controlled objects of the various operations are the same element or the same connection, then it is determined whether the attributes of the controlled objects of the various operations are the same attribute;
[0053] If so, determining that the target collaborative strategy is the last written effective collaborative strategy;
[0054] If not, it is determined that the target coordination strategy is a clock coordination strategy.
[0055] Optionally, the response module is specifically configured to:
[0056] After performing collaborative operations on the controlled object based on the last written effective collaborative strategy or the clock collaborative strategy, determining whether the multiple operations cause changes in a printed circuit board, a schematic diagram, or a package structure;
[0057] If a change is caused to the printed circuit board, the controlled objects of the multiple operations are processed based on the graph collaboration strategy;
[0058] If a change in the schematic diagram or the package structure is caused, the controlled objects of the multiple operations are processed based on the ordered set coordination strategy.
[0059] Optionally, the processing module is specifically configured to:
[0060] Determine whether the network status is normal;
[0061] If so, determine whether the controlled objects within the visual range of each user have changed. If so, obtain visual information based on the collaborative processing results of the controlled objects of the multiple operations;
[0062] According to the visual information, current information of each controlled object is displayed within the visual range of each user.
[0063] Optionally, the processing module is specifically configured to:
[0064] If the network status is abnormal, the operation information of each user is cached locally, and after the network status is restored, the operation information of each user cached locally is synchronized to the server.
[0065] Optionally, the project-level objects include module collections, global component libraries, cross-module connections, and global settings objects;
[0066] The module level includes module metadata, component instances, port systems, module nesting, and module wiring;
[0067] The component level includes component definition, instance attributes and associated data;
[0068] The connection level includes connection data, level association and status mark;
[0069] The layer level includes layer attribute definition, hierarchical relationship and state management.
[0070] Optionally, the last-write-effective coordination strategy is further used to:
[0071] Based on the pre-set user lock, the level operated by the target user is locked to prevent other users from operating the level operated by the target user.
[0072] Optionally, the last-written effective collaborative strategy is further configured to: if the operation instructs the user to perform a moving operation, the controlled object is first aligned with the grid on the basis of executing the movement.
[0073] In a third aspect, the present application provides an electronic device comprising: a processor, a storage medium and a bus, wherein the storage medium stores machine-readable instructions executable by the processor. When the electronic device is running, the processor communicates with the storage medium through the bus, and the processor executes the machine-readable instructions to perform the steps of the above-mentioned multi-person collaborative design processing method.
[0074] In a fourth aspect, the present application provides a computer-readable storage medium having a computer program stored thereon, and when the computer program is executed by a processor, the steps of the multi-person collaborative design processing method described above are executed.
[0075] The beneficial effects of the present application are: responding to multiple operations of multiple users on at least one controlled object in EDA software, and determining at least one target collaboration strategy based on each operation, so as to perform collaborative processing on the controlled objects of the multiple operations based on the at least one target collaboration strategy. On the basis of the controlled objects being a hierarchical structure, the multiple operations of multiple users are automatically coordinated through the target collaboration strategy, the processing process is simple, and it is more reliable than relying on a central server or master node to coordinate operations in the prior art. In addition, because each target collaboration strategy corresponds to a different operating condition, the multiple operations of multiple users are coordinated according to the target collaboration strategy, the collaboration logic is clear, the conflict resolution error rate is low, and it can better cope with various collaborative processing situations. BRIEF DESCRIPTION OF THE DRAWINGS
[0076] In order to more clearly illustrate the technical solutions of the embodiments of the present application, the following is a brief introduction to the drawings required for use in the embodiments. It should be understood that the following drawings only show certain embodiments of the present application and therefore should not be regarded as limiting the scope. For ordinary technicians in this field, other relevant drawings can be obtained based on these drawings without creative work.
[0077] Figure 1 This is a schematic diagram of an implementation framework of a multi-person collaborative design processing method provided in an embodiment of the present application;
[0078] Figure 2 This is a flow chart of a method for determining a target collaboration strategy according to an embodiment of the present application;
[0079] Figure 3 This is a flow chart of a method for determining a target collaboration strategy according to an embodiment of the present application;
[0080] Figure 4 This is a flowchart of another multi-person collaborative design processing method provided by an embodiment of the present application;
[0081] Figure 5 This is a schematic diagram of a strategy execution flow of a multi-person collaborative design processing method provided in an embodiment of the present application;
[0082] Figure 6 This is a flowchart of another multi-person collaborative design processing method provided by an embodiment of the present application;
[0083] Figure 7 This is a flowchart of another multi-person collaborative design processing method provided by an embodiment of the present application;
[0084] Figure 8 This is a schematic diagram of the structure of a multi-person collaborative design processing device provided in an embodiment of the present application;
[0085] Figure 9 This is a structural diagram of an electronic device provided in an embodiment of the present application. DETAILED DESCRIPTION
[0086] In order to make the purpose, technical solutions and advantages of the embodiments of the present application clearer, the technical solutions in the embodiments of the present application will be clearly and completely described below in conjunction with the drawings in the embodiments of the present application. It should be understood that the drawings in the present application only serve the purpose of illustration and description and are not used to limit the scope of protection of the present application. In addition, it should be understood that the schematic drawings are not drawn to scale. The flowcharts used in this application illustrate the operations implemented according to some embodiments of the present application. It should be understood that the operations of the flowcharts can be implemented out of sequence, and steps without logical context can be reversed or implemented simultaneously. In addition, those skilled in the art, under the guidance of the contents of this application, can add one or more other operations to the flowchart, or remove one or more operations from the flowchart.
[0087] In addition, the described embodiments are only a part of the embodiments of the present application, rather than all of the embodiments. The components of the embodiments of the present application generally described and shown in the drawings here can be arranged and designed in various configurations. Therefore, the following detailed description of the embodiments of the present application provided in the drawings is not intended to limit the scope of the claimed application, but merely represents selected embodiments of the present application. Based on the embodiments of the present application, all other embodiments obtained by those skilled in the art without making creative work are within the scope of protection of the present application.
[0088] It should be noted that the term "comprising" will be used in the embodiments of the present application to indicate the existence of the features declared thereafter, but does not exclude the addition of other features.
[0089] Current EDA collaboration software primarily relies on a central server or master node to coordinate operation sequences and resolve conflicts. However, existing methods for coordinating operation sequences and handling conflicts can become performance bottlenecks in distributed EDA software environments, and a central server failure can disrupt the entire collaborative process. Furthermore, conflict handling in common EDA collaboration software requires analyzing and converting operations, which is complex in complex scenarios and consumes significant computing resources and time. This approach can lead to inefficient conflict handling if multiple engineers are simultaneously making large-scale design changes.
[0090] Based on this, the present application proposes a multi-person collaborative design processing method, which responds to multiple operations of multiple users on the controlled object in the EDA software, and determines at least one target collaborative strategy from the strategy library based on the multiple operations, and then performs collaborative processing on the controlled objects of the multiple operations based on the at least one target collaborative strategy. The present application determines the target collaborative strategy based on multiple operations and performs collaborative processing according to the target collaborative strategy. It does not need to be coordinated based on a central server or a master node, thereby avoiding the interruption of the entire collaborative work due to the failure of the central server or the master node. In addition, each strategy in the strategy library proposed in the present application performs collaborative processing on multiple operations of various users, so that collaborative processing can be performed efficiently even in complex scenarios.
[0091] Next, refer to Figure 1 The implementation framework of multi-person collaborative design processing method is introduced. Figure 1 This is a schematic diagram of an implementation framework of a multi-person collaborative design processing method provided in an embodiment of the present application.
[0092] like Figure 1 As shown in FIG, the implementation framework of the multi-person collaborative design processing method includes a controlled object module, a strategy module, a network module, a processing module, a storage module, and a collaborative control module.
[0093] The controlled object modules include project-level objects, module-level objects, component-level objects, connection-level objects, and layer-level objects.
[0094] In project-level objects, the project level can be Y.Doc, which is a document object in Yjs. It represents the collaborative data that needs to be synchronized and can organize data through a multi-layer nested conflict-free replicated data type (CRDT) structure. Yjs is an open source JavaScript library, specifically a library based on the CRDT algorithm, for building real-time collaborative applications. The project level is the root container for the entire collaborative design, carrying the top-level architecture of all design data. It is specifically used to integrate and manage module collections, global component libraries, cross-module connections, and global setting objects. It also serves as the operation entry point for the CRDT algorithm and coordinates concurrent operations of multiple users.
[0095] Next, we will introduce the module collection, global component library, cross-module connections, and global settings objects included in the project-level objects.
[0096] A module collection can be a key-value pair of the Y.Map type. The key is the module path, such as Power / Filter. The module path uniquely identifies a functional partition, such as a power module or a signal filter module. The value is a module object. Module collections support multi-level nesting, forming a tree-like modular architecture. It's worth noting that each module in a module collection corresponds to a module-level object.
[0097] The global component library can be in the form of a key-value pair, which is of Y.Map type. In the key-value pair, the key is the unique identifier of the component. For example, the identifier of a resistor can be R1, and the value is the component definition. The component definition includes the type of component, symbol image, and pin layout, etc. The components in the global component library can be components in module-level objects or components outside module-level objects. Each component has dynamic properties, which can be processed collaboratively. For example, the component type can be a resistor, and the dynamic properties of the resistor can include resistance value and package, etc., wherein the user can modify the resistance value and package of the resistor.
[0098] Cross-module connections can be in the form of an ordered list, that is, a Y.Array type. Cross-module connections are connections between modules. Each connection must record the starting component, the end component, the pin information of the starting component, and the pin information of the end component. Each connection has electrical properties that can be modified by the user. Electrical properties include line width and layer type.
[0099] The global setting object can be in the form of a key-value pair, which is of Y.Map type. In the key-value pair, the key is the target of the global setting, and the value is the target value set for everyone. The global setting object is the design environment parameters, including grid size, unit system, and design rules. Among them, the grid is the alignment reference for components and lines, and the grid size affects the coordinate synchronization priority. For example, if the grid size is larger, the coordinate synchronization priority is smaller, and if the grid size is larger, the coordinate synchronization priority is larger. The unit system is the unit of the grid size and the size of the component legend. The unit can be, for example, millimeters or inches, and different users can set different unit systems. The design rules can be a Design Rule Check (DRC), which can ensure that the design meets a series of specifications for specific manufacturing standards and electrical performance requirements. Design rules may include, for example, minimum line spacing, line width rules, and alignment rules.
[0100] In module-level objects, the module level can be Y.Map <module>, that is, Y.Map is used to store information of module-level objects. The module level is a functional unit container for system design, which is used to organize the hierarchical structure of complex designs, which supports modular design and reuse. Module-level objects can allow multi-level nesting to form a tree-like framework. For example, the battery module nests the filter circuit nests the inductor and capacitor sub-circuit. In addition, module-level objects can describe the input and output of each module through ports, so as to clearly reflect the electrical connections across modules. It is worth mentioning that each module can be edited independently. Specifically, when the user edits the first module, the second module cannot be edited at the same time, thereby reducing the probability of conflict and improving collaboration efficiency. Among them, the first module and the second module are any two modules in the module-level object.
[0101] Next, we will introduce the module metadata, component instances, port systems, module nesting, and module connections included in the module-level objects.
[0102] The unique identifier of a module's metadata can be its path, such as Power / Filter. Additionally, users can name it for easier understanding, regardless of language. Module metadata also has a version tag, which records the module's modification history, making it easier to backtrack and reference target versions.
[0103] Component instances are instances of components stored in the memory module, including pin states that represent the connection status of each pin, such as floating or connected. Component instances can be associated with definitions in the global component library within a project-level object. During the design process, the position and orientation of component instances can be determined based on user actions and priorities expressed by collaborative processes.
[0104] The port system includes input and output ports and their connection relationships. Input and output ports are the module's electrical interfaces and their parameters, such as digital ports and their voltage ranges. Connection relationships record the cross-module connections associated with the ports, ensuring the correct signal transmission between modules.
[0105] Module nesting involves nesting multiple submodules within a module, each with its own independent data structure and editing context. It's worth noting that to ensure each submodule is uniquely identified, the path of each submodule is used as the identifier for the current submodule. This identifier inherits the module's path and is expanded upon.
[0106] Module wiring includes electrical connections within a module, which are distinct from cross-module wiring within project-level objects. Separating module wiring from cross-module wiring reduces coupling between the two objects. Module wiring also includes signal types, which identify the electrical characteristics of the wiring, such as power, ground, or signal, to aid design rule checking.
[0107] In component-level objects, the component level can be Y.Map <component>In other words, Y.Map is used to store component-level object information. The component level is the core of atomic function management in collaborative design, used to store metadata such as all component definitions, attributes, symbols, packages, and pins.
[0108] Next, we will introduce the component definition, instance properties and associated data of the component-level object.
[0109] Component definitions include identifiers, types, subclass extensions, graphic data, and pin definitions. The identifier is a unique identifier, such as R1, which can be used to locate the component. The type is used to indicate the type of component, which can be, for example, a resistor or capacitor. The type can be used to determine the symbol and default properties of the component. Subclass extensions can include the manufacturer of the component, component signals, associated datasheets, and models. Graphic data can be scalable vector graphics or vector graphics, which support multi-resolution rendering. The pin definition includes the pin number, pin electrical properties, and logical function. Pin electrical properties can be, for example, input, output, and power.
[0110] Instance attributes include electrical parameters, geometric attributes, and status tags. Among them, electrical parameters include static attributes and dynamic attributes. Static attributes can be the manufacturer's preset values of the component, such as resistance tolerance and temperature coefficient. Dynamic attributes can be the dynamic parameters of the component, such as resistance and capacitance. Users cannot modify static attributes, but can modify dynamic attributes. Geometric attributes include the position attributes, direction attributes, scaling attributes, and mirror attributes of the component. Geometric attributes can be determined based on user operations and collaborative strategies. Status tags include connection status and DRC status. The connection status is used to indicate whether the pins of the component are connected, and the DRC status is used to mark whether the design rules are violated, such as insufficient spacing.
[0111] Related data includes cross-module references and version history. Cross-module references record the references of components by modules and support cascading updates. Version history includes modifications to component properties and can be used for rollbacks and auditing.
[0112] In the connection level object, the connection level can be Y.Array <wire>Among them, Y.Array is also a shared data type of Yjs, which can be a collaboratively editable array. <wire>Indicates that this array is a wire-related array. The wire level manages the connections between components, ensuring correct circuit connections and complete signal transmission. Specifically, the wire level accurately records the starting and ending points of the wire, its path, width, layer type, and signal type.
[0113] Next, we will introduce the connection data, hierarchical associations, and status flags included in the connection-level objects.
[0114] Connection data includes identifiers, starting points, end points, path points, physical characteristics, and signal attributes. Among them, the identifier is the globally unique identifier of the connection, which is convenient for quick positioning and reference, such as W1. The starting point and end point can be located by the component identifier and the name of the component pin, avoiding the use of absolute coordinates that causes the connection to be unable to follow the component. Path points are used to record the broken line path coordinates of the connection, and users can change the path points through modification operations. Physical characteristics include connection line width, connection layer type, and impedance requirements, among which the connection layer type can be, for example, a copper layer and a silk screen layer. Signal attributes include voltage range, signal type, and network label. Among them, signal types can include analog signals, digital signals, and power signals.
[0115] Hierarchical associations include multi-module connections and grouped connections. Multi-module connections are connections that connect different modules. These connections can connect at least two modules and are typically represented by the identifiers of the connected components. Grouped connections are connections categorized by signal network, such as multiple power supply connections in a power network.
[0116] Status indicators include connection validity and connection errors. Connection validity indicates whether a connection endpoint points to a valid component. Examples of connection validity include dangling or connected. Error connections display connections that violate design rules using a preset display format, such as highlighting.
[0117] In layer-level objects, the layer level can be Y.Map <layer>, that is, using Y.Map to store information about layer-level objects. The layer level is used to manage visual and design layers, such as power layers, signal layers, and silkscreen layers, controlling the visibility, rendering order, and display format of different design elements, thereby supporting multi-dimensional design review collaboration. Furthermore, the layer level is used to bind layers to manufacturing parameters, such as line width and spacing, for DRC checking.
[0118] Next, the layer attribute definition, hierarchical relationship and status attributes of layer-level objects are introduced.
[0119] Layer property definitions include basic properties, display styles, and business properties. Basic properties include layer ID, layer name, layer visibility, and drawing order. The layer ID uniquely identifies the layer. The name is the user-defined layer name, which supports multiple languages and can also describe the layer's function. Visibility is the display of each layer in the user interface and can be controlled using a Boolean value. The drawing order is the stacking order of modules, components, and wires, defined by an integer. The display style includes layer color and display linetype properties. Layer color supports hexadecimal (HEX) and decimal (Red-Green-Blue, RGB) color codes. Display linetype properties include displayed linetype and transparency. Business properties include associated process layers and design rule sets. Associated process layers are used to bind manufacturing parameters, such as copper thickness and surface treatment, while design rule sets are used to specify DRC rules for layers, such as minimum line spacing.
[0120] Hierarchical relationships include layer nesting properties and component ownership properties. Layer nesting properties indicate that child layers inherit the visibility of their parent layers. Component ownership properties indicate the layer to which each component belongs.
[0121] State management includes lock status and configuration versions. The lock status indicates the locked state of a layer; if a layer is locked, it cannot be manipulated by other users. Configuration versions are used to save preset layer settings for key design stages and support quick comparison.
[0122] It is worth noting that among the above-mentioned project-level objects, module-level objects, component-level objects, connection-level objects, and layer-level objects, a component may belong to multiple hierarchical objects. For example, cross-module connections can be the same as connections in connection-level objects.
[0123] The strategy module includes clock coordination strategy, last-write-effective coordination strategy, ordered set coordination strategy, and graph coordination strategy. The last-write-effective coordination strategy specifies that the operation with the latest timestamp pair is used as the controlled object operation. The clock strategy records each user's operations and operation times and merges them. The graph coordination strategy selects or merges connection relationships based on user operations. The ordered combination coordination strategy modifies the component library based on user operations, so that referenced components are modified simultaneously.
[0124] The network module includes a network status detection unit and a data transmission unit.
[0125] The network status detection unit is used to monitor the network connection status in real time and determine whether the network connection status is normal. If the network connection status is abnormal, data synchronization is performed according to a preset connection strategy. The preset connection strategy may cache information about the current operation, or it may reconnect to the network and determine whether the network status is normal until the network connection status is normal.
[0126] The data transmission unit is used to transmit data, including data between clients and servers, or between clients. The data transmission unit supports reliable data transmission protocols, such as the WebSocket protocol, to ensure that operations and data can be transmitted accurately and timely.
[0127] The processing module includes an operation capturing unit and an operation distributing unit.
[0128] The operation capture unit is used to obtain the user's operations in the EDA software, such as adding, deleting, and modifying the properties of the controlled objects, and convert the user's operations into a processable data format.
[0129] The operation distribution unit distributes the acquired user operations to other users' clients, allowing them to view the results of their operations promptly, thus ensuring data synchronization. For example, if user A adds a component in their EDA software client, user B's client in the same collaborative project will update the added component operation accordingly, allowing user B to be informed of any changes to the current design in a timely manner.
[0130] The storage module includes a local storage unit and a server storage unit.
[0131] The local storage unit is used to store operation logs and partial data copies, etc. The data copies can be data within a preset historical time, which can store the design project status based on a database system of structured data, such as an indexed database (IndexedDB). The data cached in the local storage unit is used to temporarily store user operations when a network anomaly occurs. When the network is restored, the operation data is updated in sequence based on the data stored in the local storage unit and the storage order to ensure the integrity of the operation data. In addition, the local storage unit can be used to speed up data access.
[0132] The server storage unit is used to store all design data of the design project, including user information and historical versions, and provides support for client initialization and historical data recovery.
[0133] The collaborative control module includes a level change processing unit and a visual range processing unit.
[0134] The hierarchical change processing unit is used to execute collaborative processing according to the target collaborative strategy when a user performs a hierarchical operation. A hierarchical operation can be a user's action on a controlled object. For example, a user adds, deletes, or modifies a module, component, or connection. The hierarchical change processing unit is used to perform collaborative processing to ensure the consistency of hierarchical structure data.
[0135] The visual range processing unit is used to change the level within the visual range of each user in a multi-person collaborative scenario to ensure that the level changes that the user can see within the visual range are in line with the current operating permissions and visual range settings.
[0136] After introducing the implementation framework of the multi-person collaborative design processing method, the multi-person collaborative design processing method in this application is introduced below. Optionally, the multi-person collaborative design processing method can be applied to electronic devices.
[0137] Optionally, in response to multiple operations of multiple users on at least one controlled object in electronic design automation (EDA) software, at least one target collaboration strategy is determined from a strategy library based on each operation, and the controlled object includes at least one of the following: project-level object, module-level object, component-level object, connection-level object, and graph-level object, and the strategy library includes clock collaboration strategy, last write-effective collaboration strategy, ordered set collaboration strategy, and graph collaboration strategy.
[0138] Optionally, in a design project, multiple users can simultaneously perform multiple design operations in the EDA software, and the operation objects can be the same or different. This application coordinates an operation performed by each of the multiple users.
[0139] Alternatively, in the EDA software, each user can set up a visual interface on the client to view the design through the visual interface. Each user's visual interface can be updated in real time with the results of other users' collaborative operations.
[0140] As an optional implementation, at least one target collaborative strategy can be determined from the strategy library based on the controlled object and operation type of each operation. The operation type can be addition, deletion, movement, modification, etc. Specifically, each collaborative strategy has a corresponding controlled object and an operation for the controlled object. If the current controlled object and the current operation type match the controlled object and operation type corresponding to the collaborative strategy, the collaborative strategy is used as the target collaborative strategy. It is worth noting that according to multiple operations of multiple users, one or more target collaborative strategies can be corresponding to perform collaborative processing.
[0141] Optionally, the controlled object includes at least one of a project-level object, a module-level object, a component-level object, a line-level object, and a layer-level object, wherein the project-level object, the module-level object, the component-level object, the line-level object, and the layer-level object can be Figure 1 In the implementation framework of the multi-person collaborative design processing method introduced in the introduction, the project-level objects, module-level objects, component-level objects, connection-level objects and layer-level objects in the controlled object module are as follows. Figure 1 It has been introduced in detail, so I will not repeat it here.
[0142] Optionally, the clock coordination strategy, the last write effective coordination strategy, the ordered set coordination strategy and the graph coordination strategy included in the strategy library can be Figure 1 In the implementation framework of the multi-person collaborative design processing method introduced in the , the clock collaborative strategy, the last write effective collaborative strategy, the ordered set collaborative strategy and the graph collaborative strategy in the strategy module. Figure 1 It has been described in detail, so I will not repeat it here.
[0143] Optionally, collaborative processing is performed on the controlled objects of the multiple operations based on at least one target collaborative strategy.
[0144] Optionally, collaborative strategies are used to coordinate operations between multiple users. Specifically, clock collaborative strategies are used to directly merge operations from various users. Last-write-validates collaborative strategies prioritize the last writer, meaning that the most recent operation is selected as the processing operation during collaborative processing. Ordered-set collaborative strategies are used to modify component libraries based on user operations and simultaneously modify referenced components. Graph collaborative strategies are used to select or merge connection relationships.
[0145] After collaborative processing is performed on the controlled objects of multiple operations, the processed controlled objects are displayed in the visual interface of each user, so that each user can promptly know the real-time status of the controlled objects.
[0146] As an optional implementation, when the collaborative strategies in the strategy library still cannot achieve collaborative processing of the controlled object, a manual intervention process can be performed. Specifically, a visual comparison tool is used to assist manual decision-making, and the manual intervention result is used as the collaborative processing result.
[0147] Alternatively, traditional EDA collaborative software uses JavaScript Object Notation (JSON) for data transmission, which has disadvantages such as high redundancy, slow lexical analysis, and the need to modify fields to be compatible with older versions. This embodiment uses the protobuf binary protocol, which has no redundant fields, compact encoding, fast direct memory mapping parsing, and supports forward and backward compatibility.
[0148] In this embodiment, multiple operations of multiple users on at least one controlled object in the EDA software are responded to, and at least one target collaboration strategy is determined based on each operation to perform collaborative processing on the controlled objects of the multiple operations based on the at least one target collaboration strategy. Based on the hierarchical structure of the controlled objects, the multiple operations of multiple users are automatically coordinated through the target collaboration strategy. The processing process is simple and more reliable than the prior art that relies on a central server or master node to coordinate operations. In addition, because each target collaboration strategy corresponds to a different operating condition, the multiple operations of multiple users are coordinated according to the target collaboration strategy. The collaborative logic is clear, the conflict resolution error rate is low, and it can better cope with various collaborative processing situations.
[0149] Next, refer to Figure 2 The specific steps of determining at least one target collaborative strategy from the strategy library according to each operation in the above steps are introduced. Figure 2 This is a flowchart of a target collaboration strategy provided in an embodiment of the present application.
[0150] S201. If multiple operations cause connection changes or component changes, obtain the timestamp of each operation.
[0151] Alternatively, a connection change may be a line change, including a line start point change, a line end point change, and a line path point change. Component changes include module changes and component changes, where module changes include, for example, a change in the module position in a module-level object, and component changes include, for example, a change in the legend size of a component in a component-level object.
[0152] Optionally, when the user performs an operation that causes a connection change or a component change, a timestamp of each operation is obtained, and the timestamp is associated with a key-value pair corresponding to the controlled object.
[0153] S202. Determine the target collaborative strategy as the last written effective collaborative strategy or the clock collaborative strategy based on the controlled object of each operation and the timestamp of each operation. The last written effective collaborative strategy is used to indicate that the operation with the latest timestamp is used as the operation of the controlled object. The clock collaborative strategy is used to record the operations and the number of operations of each user, and merge the operations of each user.
[0154] As an optional implementation, if multiple users operate the same controlled object, the target collaborative strategy is determined to be the last written effective collaborative strategy; if multiple users operate different controlled objects, the target collaborative strategy is determined to be the clock collaborative strategy.
[0155] Next, the final write-effective collaboration strategy is introduced in detail.
[0156] The last write collaboration strategy can be a Last Write Wins Map (LWW-Map), which is a type of CRDT. Specifically, this strategy stores each operation in the form of a key-value pair and associates a timestamp with the key-value pair corresponding to each operation. This can be stored in an Automerge library that supports real-time collaborative editing. The key can be the controlled object, the value can be a specific operation, each operation has a unique identifier, and the timestamp can be set based on the current system time. The key-value pair corresponding to the latest timestamp is then determined, and the operation corresponding to this key-value pair is used as the operation of the controlled object.
[0157] Specifically, a key-value pair includes a key (Key) and a value (Value), and an associated timestamp (Timestamp) can be expressed as: "{(Key1, Value1, Timestamp1), (Key2, Value2, Timestamp2), ...}".
[0158] In addition, if a user performs a new operation and the key in the newly generated key-value pair already exists, the new timestamp will overwrite the old timestamp, and the value of the key will be determined based on the last write collaboration strategy.
[0159] In addition to coordinating operations that cause connection changes and component changes, the final write-in effective coordination strategy can also coordinate controlled objects such as configuration parameters. Configuration parameters can be, for example, clock frequency, power consumption, etc.
[0160] The last-write-effective collaboration strategy is a merge strategy. Specifically, for each stored key, if only one value is updated for that key, that value is directly used as a key-value pair. If two values exist for that key, the target value corresponding to the key is determined based on the timestamp associated with the key-value pair. For example, if user A configures parameter α of component a to 5 at 1:00, and user B configures parameter α of component a to 6 at 1:10, then based on the last-write-effective collaboration strategy, parameter α of component a will be 6.
[0161] In addition, if the timestamps are the same, that is, at least two users modify the same controlled object at the same time, further collaboration can be performed based on preset collaboration rules. The preset collaboration rules can, for example, be based on the identification priority of the controlled object.
[0162] As an optional implementation, when recovering from a weak network environment, full synchronization of data will consume a lot of bandwidth and take too long, so the last write-effective collaboration strategy also supports incremental updates. Specifically, each operation maintains a version number to record the current operation version. When collaborative data is needed, the version number of each operation is compared with the version number of other operations, so that only the newly added operations are coordinated. For example, if only a few controlled objects are modified, it is only necessary to synchronize the operations of the controlled objects and the corresponding timestamps, and there is no need to synchronize the key-value pairs of the entire design project.
[0163] It can be seen that the last write takes effect coordination strategy can quickly and easily handle concurrent write conflicts and reduce the amount of data transmission and the time consumed in weak network environments.
[0164] Next, we will introduce the clock coordination strategy in detail.
[0165] The clock coordination strategy is a distributed system-based logical clock mechanism. It records each user's operation history through a vector array corresponding to each controlled object and directly merges each user's operations based on specific operation logic. The operation history includes the operation and the number of times the operation was performed. In this vector array, each element corresponds to a user, and its value represents the number of times the controlled object has performed the operation. By recording each user's operation history, the clock coordination strategy manages the historical versions of the top-level design in the design data, resolves multi-user operation conflicts, and ensures that design changes are carried out according to a reasonable logic.
[0166] The specific implementation principle is as follows: Each controlled object maintains a vector array. The length of the array corresponds to the number of users, and the value of each element in the array is the number of times the user has modified the controlled object. For example, if there are three users involved in the development of a controlled object, the vector array corresponding to the controlled object can be represented as: [count_A, count_B, count_C].
[0167] When a user modifies a controlled object, the value of the element corresponding to the user in the vector array corresponding to the controlled object is incremented by 1. For example, if the vector array of controlled object a is [count_A, count_B, count_C], and user A corresponds to count_A, then when user A operates on controlled object a, the value of count_A is incremented by 1, and the vector array of controlled object a becomes [count_A+1, count_B, count_C].
[0168] Based on this, if two vector arrays include a first vector array and a second vector array, where the value of each element in the first vector array is less than or equal to the value of the corresponding element in the second vector array, and at least one element in the first vector array is strictly less than the value of the corresponding element in the second vector array, then it can be considered that the operation corresponding to the first vector array precedes the second vector array, that is, there is a causal relationship: the first vector array is the cause and the second vector array is the effect. If the value of an element in the first vector array is greater than the value of the corresponding element in the second vector array, and at the same time, the value of an element in the first vector array is less than the value of the corresponding element in the second vector array, then the operation corresponding to the first vector array and the operation corresponding to the second vector array are parallel operations.
[0169] During the design process, if one user's operation is earlier than another user's, it means that the other user's operation is based on the previous user's operation. The vector array ensures that the above logic will not be wrong, thereby realizing multi-party collaboration.
[0170] In addition, in the process of information transmission between users, when a user sends his or her operation information to other users, the current vector array will be sent at the same time. When other users receive the operation information, they will update it according to the received vector array and their own vector array. That is, the user who receives the operation message will add 1 to the value of its corresponding element, indicating that a message receiving operation has been processed, and the maximum value of the value of the element corresponding to the received vector array and the maximum value of the value of the corresponding element in its own vector array will be used as the value of the vector array corresponding to each user.
[0171] From Yjs's perspective, clock coordination strategies can achieve global uniqueness by recording the timestamp field and source field corresponding to the controlled objects. The timestamp field is used to record the time when the operation occurred, ensuring that operations on different controlled objects can be sorted and executed in chronological order. The source field is used to record the source of the operation.
[0172] S203: If the multiple operations are connection addition and deletion or component addition and deletion, determine whether the operations cause changes in the printed circuit board, schematic diagram, or package structure.
[0173] Optionally, adding or deleting connections refers to adding or deleting cross-module connections or connections between components.
[0174] Alternatively, the changes to the printed circuit board (PCB) may be changes to the components and their connections in the design diagram, and the changes to the schematic diagram and the package structure may be changes to the component library.
[0175] Optionally, the user's operation may be to add components without wiring them, and this operation will not cause changes to the printed circuit board, the schematic diagram, or the package structure.
[0176] S204. If changes are caused to the printed circuit board, the target collaboration strategy is determined to be a graph collaboration strategy. The graph collaboration strategy is used to add, delete, or merge components or connections and generate connection relationships.
[0177] Optionally, the graph collaboration strategy can be a data processing strategy based on CRDT for processing graph structured data in a distributed environment. The graph collaboration strategy allows multiple users to concurrently add, delete, and modify nodes and edges in the PCB, and ensures that the graph structure between each node is consistent. Nodes can be components or modules, such as resistors, capacitors, and chips. Edges can be lines between nodes, and the graph structure represents the line relationship between nodes and edges. When the user's addition and deletion of connections and addition and deletion of components cause changes in the printed circuit board, the graph collaboration strategy can support the dynamic adjustment of each node and edge to ensure that each user obtains the principle of the PCB design. Figure 1 To.
[0178] When the graph collaboration strategy is executed, a corresponding data structure is generated. The data structure includes nodes (Node) and edges (Edge). Among them, the node may include the identifier, attributes and timestamp of each controlled object. The identifier is the unique identifier of the node. The attributes include the type and parameters of the controlled object, among which the type can be, for example, a resistor and a capacitor, and the parameters can be, for example, resistance and capacitance. The timestamp is the time when the controlled object was created or the time when it was last modified. The edge may include an identifier, a starting node, an ending node, edge attributes and a timestamp. Among them, the identifier is the unique identifier of the edge. The starting node can be the identifier of the element where the connection starts, and the ending node can be the identifier of the element where the connection ends. The edge attributes can include the type of signal and signal strength, among which the type of signal can be, for example, a clock signal and a data signal. The timestamp is used to record the time when the connection was created or the time when the connection was last modified.
[0179] Next, we will introduce the specific methods of adding, deleting, or merging components or connections through the graph collaboration strategy and generating connection relationships.
[0180] When a new node is added, a unique identifier and timestamp are generated for the new node, and the node information is added to the connection relationship. When a node is deleted, the corresponding node identifier and timestamp are deleted, and the node information is deleted from the existing connection relationship.
[0181] When a new connection is added, a unique identifier and timestamp are generated for the new connection, and the connection information is added to the connection relationship. When a connection is deleted, the corresponding identifier and timestamp are deleted, and the corresponding information of the connection is deleted from the existing connection relationship.
[0182] Merging components or connections is based on the timestamps of the components or connections. Specifically, when multiple users add nodes with the same identifier, the decision on which node to retain is based on the timestamp of the operation. Optionally, the node with the newer timestamp is selected as the node corresponding to the identifier, and the information about the node is added to the connection relationship. When multiple users add connections with the same identifier, the decision on which connection to retain is based on the timestamp of the operation. Optionally, the connection with the newer timestamp is selected as the connection corresponding to the identifier, and the information about the connection is added to the connection relationship.
[0183] In addition, when merging PCB designs from different time points, nodes and lines with different identifiers are directly merged separately, and nodes or lines with the same identifier are selected according to the timestamp and the connection relationship is updated. It is worth noting that the connection relationship ensures that the nodes connected by each edge exist in the merged PCB design.
[0184] From the perspective of Yjs, hierarchical management is achieved through parent and child pointers. Each node can have one parent node and multiple child nodes. This hierarchical structure helps organize complex graph structures, clearly representing the connection relationships between components. For example, a power module can be a parent node, and the components within the power module can be child nodes. Alternatively, a component can be a parent node, and the pins within the component can be child nodes.
[0185] In addition to efficiently handling complex wiring relationships in schematic diagrams, the diagram collaboration strategy can also ensure that each user can see the latest status of the schematic diagram in a timely manner, thereby improving design efficiency and reducing communication costs.
[0186] S205. If a schematic diagram change or a package structure change is caused, the target collaboration strategy is determined to be an ordered set collaboration strategy. The ordered set collaboration strategy is used to modify the component library based on the user's operation so that the referenced components are modified at the same time.
[0187] Optionally, if the user's operation causes a change in the schematic diagram or the package structure, it means that the user has changed the component in the component library, so the target strategy is determined to be the ordered set collaboration strategy.
[0188] Optionally, the ordered-binding collaborative strategy can be executed based on the observed-remove set (OR-Set). OR-Set is a CRDT, which is a data structure of the set type. Specifically, OR-Set is used to manage element sets in a distributed system, thereby processing concurrent addition and removal operations on the set by multiple nodes, and ultimately ensuring that the state of the set on all nodes is consistent, where the nodes can be components. During the design process, the list of components in the component library may be accessed and modified by multiple users at the same time. Therefore, the components in the component library are managed through the ordered-binding collaborative strategy so that the referenced components can also be modified based on the modification of the components in the component library.
[0189] For example, if the component library includes a component H, and the component H is referenced by both module I and module J, when the user modifies the component H in the component library, the component H in both module I and module J will also be modified at the same time.
[0190] Optionally, the data structure of OR-Set includes an add set and a remove set. The add set (Add Set) is used to record all elements (Element) that have been added to the set, where the element can be a component and the set can be a component library. Each element includes a unique identifier and a timestamp (Timestamp). The identifier is used to distinguish different element instances, and the timestamp is the time when each element is added. The remove set (RemoveSet) is used to record all elements deleted from the set. Exemplarily, the data structure of OR-Set can be expressed as (AddSet, RemoveSet), where AddSet = {(Element1, ID1, Timestamp1), (Element2, ID2, Timestamp2), ...}, RemoveSet = {ID1, ID2, ...}.
[0191] Specifically, when a user adds a component to the component library, a unique identifier and timestamp are generated for the component to be added. The component, identifier, and timestamp are then added as a triplet to the Add Set. When a user deletes a component from the component library, the identifier of the component to be removed from the Add Set is retrieved and added to the Remove Set. Adding the component to be removed to the Remove Set, rather than directly deleting it, prevents element loss.
[0192] When merging multiple OR-Sets, you need to merge their add-sets and remove-sets separately. Specifically, when merging add-sets, if components with the same identifier exist, the component with the newer timestamp is retained to avoid duplicate additions. When merging remove-sets, if components with the same identifier exist, the component with the newer timestamp is retained.
[0193] For Yjs, the ordered combination and collaborative strategy achieves orderliness through the source field and the timestamp field. The source field is the user's identifier, and the timestamp field is used to record the time when the component was added to the component library.
[0194] By combining collaborative strategies in an orderly manner, multiple users' operations on components in the component library can be processed simultaneously, and ultimately the consistency of the referenced components and the components in the component library can be guaranteed.
[0195] In this embodiment, by judging whether multiple operations cause connection changes or component changes, the timestamp of each operation is obtained, and then the target collaboration strategy is determined to be the last written effective collaboration strategy or the clock collaboration strategy based on the controlled object and the timestamp of each operation, so as to coordinate multiple operations of multiple users, and then judge whether the multiple operations are connection additions or deletions or component additions or deletions. If so, it is determined whether the operation causes changes in the printed circuit board, schematic diagram or packaging structure, and the ordered set collaboration strategy or the diagram collaboration strategy is selected based on the change situation, so as to ensure that the logic of the schematic diagram is correct and the referenced components can be modified following the operation.
[0196] Next, refer to Figure 3 The specific steps of determining the target coordination strategy as the last written effective coordination strategy or the clock coordination strategy in step S202 according to the controlled objects of each operation and the timestamps of each operation are introduced. Figure 3 This is a flowchart of a target collaboration strategy provided in an embodiment of the present application.
[0197] S301: Determine whether the controlled objects of each operation are the same component or the same connection.
[0198] Specifically, it can be determined based on the identifications of the controlled objects in multiple operations whether they are the same component or the same connection.
[0199] S302: If the controlled objects of the operations are not the same component or the same connection, the target coordination strategy is determined to be the last written effective coordination strategy.
[0200] Specifically, the key-value pairs generated by the operation on the controlled object are directly added to the LWW-Map.
[0201] As an optional implementation, it is also possible to determine whether the controlled objects of each operation are the same controlled object. If so, the target coordination strategy is determined to be the last written effective coordination strategy. The controlled objects here can be modules and layers, etc.
[0202] S303: If the controlled objects of the various operations are the same component or the same connection, determine whether the attributes of the controlled objects of the various operations are the same.
[0203] Specifically, the judgment can be made based on the identifier corresponding to the controlled object. It is worth noting that the attributes of each module and component have a unique identifier.
[0204] If the properties of the controlled object are the same, it means that multiple users have modified the same property of the same component. For example, multiple users have modified the resistance value of resistor R2.
[0205] S304: If yes, determine that the target coordination strategy is the last coordination strategy written into effect.
[0206] Optionally, if multiple operation objects of multiple users are the same attribute of the same component or connection, the operation corresponding to the latest timestamp is used as the operation of the corresponding attribute of the component or connection.
[0207] S305: If not, determine that the target coordination strategy is the clock coordination strategy.
[0208] Specifically, based on the clock coordination strategy, the operation sequence is determined by timestamps, thereby ensuring the logic between multiple operations.
[0209] In this embodiment, by determining whether the controlled objects of each operation are the same component or the same connection, and determining whether the attributes of the controlled objects are the same attributes, the target collaborative strategy is determined to achieve collaborative processing of multiple operations of multiple users and ensure the logic of processing.
[0210] Next, refer to Figure 4 The specific process of executing collaborative processing on multiple controlled objects based on at least one target collaborative strategy in the above steps is introduced. Figure 4 This is a flowchart of another multi-person collaborative design processing method provided in an embodiment of the present application.
[0211] S401 , after performing collaborative operations on a controlled object based on the last written effective collaborative strategy or the clock collaborative strategy, determine whether multiple operations cause changes in a printed circuit board, a schematic diagram, or a package structure.
[0212] Optionally, after determining the target collaborative strategy as the last written effective collaborative strategy or the clock collaborative strategy based on the controlled objects of each operation and the timestamps of each operation, and executing the above two strategies, it is also possible to determine whether multiple operations of multiple users have caused changes in the printed circuit board, schematic diagram or packaging structure. If changes are caused, multiple operations can continue to be collaboratively processed based on the type of change.
[0213] S402: If changes are caused to the printed circuit board, the controlled objects of the multiple operations are processed based on the graph collaboration strategy.
[0214] Optionally, if the PCB design changes, indicating that the components or connection relationships have changed, the connection relationships are updated based on the diagram collaboration strategy to ensure that the design diagram principles are correct.
[0215] S403: If a schematic diagram change or a package structure change is caused, the controlled objects of the multiple operations are processed based on the ordered set coordination strategy.
[0216] Optionally, if the schematic diagram or package structure changes, indicating that the user's operation has modified the components in the component library, the components in the component library are modified based on the ordered set collaboration strategy, and the referenced components are changed synchronously.
[0217] In this embodiment, after performing collaborative operations on the controlled objects based on the last write-effective collaborative strategy or the clock strategy, if changes are caused to the printed circuit board, the controlled objects of multiple operations are processed based on the drawing collaborative strategy, thereby ensuring that the design drawing principle is correct. If changes are caused to the schematic diagram or the package structure, the controlled objects of multiple operations are processed based on the ordered set collaborative strategy, so that the components referenced from the component library are modified synchronously.
[0218] As an optional implementation, refer to Figure 5 This paper introduces the overall strategy execution process of the multi-person collaborative design processing method. Figure 5 This is a schematic diagram of the strategy execution flow of a multi-person collaborative design processing method provided in an embodiment of the present application.
[0219] S501: A user performs multiple operations on at least one controlled object in EDA software.
[0220] S502: If multiple operations cause connection changes or component changes, obtain the timestamp of each operation.
[0221] S503: Determine whether the controlled objects of each operation are the same component or the same connection. If so, execute S505; if not, execute S504.
[0222] S504: Determine the target collaboration strategy as the last collaboration strategy written into effect.
[0223] S505 , determining whether the attributes of the controlled objects of each operation are the same, if so, executing S504 , if not, executing S506 .
[0224] S504: Determine the target collaboration strategy as the last collaboration strategy written into effect.
[0225] S506: Determine the target coordination strategy as the clock coordination strategy.
[0226] S507: If the multiple operations are connection addition and deletion or component addition and deletion, determine whether the operations cause changes to the printed circuit board, schematic diagram, or package structure.
[0227] S508. If the printed circuit board is changed, the target collaboration strategy is determined to be the graph collaboration strategy.
[0228] S509: If a schematic diagram change or a package structure change is caused, the target coordination strategy is determined to be an ordered set coordination strategy.
[0229] After step S506 , the following is further executed: S510 : if a change is caused to the printed circuit board, the controlled objects of the multiple operations are processed based on the graph collaboration strategy.
[0230] S511. If a schematic diagram change or a package structure change is caused, the controlled objects of the multiple operations are processed based on the ordered set coordination strategy.
[0231] Next, refer to Figure 6 Another execution process of the multi-person collaborative design processing method is introduced. This process can be executed after the collaborative processing is performed on the controlled objects of multiple operations. Figure 6 This is a flowchart of another multi-person collaborative design processing method provided in an embodiment of the present application.
[0232] S601: Determine whether the network status is normal.
[0233] Specifically, it can be achieved through Figure 1 The network status detection unit in the network module determines whether the network status is normal.
[0234] S602: If yes, determine whether the controlled objects within the visual range of each user have changed. If yes, obtain visual information based on the collaborative processing results of the controlled objects of multiple operations.
[0235] Optionally, each user can set the visible range on his client, which can include the displayed level and the displayed area. It is worth mentioning that the user can set some objects to be invisible, for example, setting the power module to be invisible.
[0236] Optionally, the data stored for each strategy can be used to determine whether the controlled objects within each user's visual range have changed. For example, the vector array corresponding to the clock coordination strategy stores the number of user operations corresponding to each controlled object. If the vector array changes, the object has changed. The data structure corresponding to the graph coordination strategy stores each component, line, and connection relationship in the form of nodes and edges. Based on this data structure, changes in the PCB can be determined.
[0237] Optionally, if the network status is abnormal, the network status detection continues, and the current user operation is stored locally until the network status returns to normal.
[0238] Optionally, the visible information is information about changes in controlled objects within the visual range of each user.
[0239] S603: Display the current information of each controlled object within the visual range of each user according to the visual information.
[0240] Optionally, if the network status recovers from an abnormal state to a normal state, visual information is obtained from the server and current information of each controlled object within the user's visual range is updated.
[0241] The current information of the controlled object is information on the coordinated processing and results of the controlled object according to multiple operations.
[0242] It is worth mentioning that if the user's visual range changes, steps S601 to S603 need to be re-executed to update the current information of each controlled object within the visual range.
[0243] In this embodiment, if the network status is normal, it is determined whether the controlled objects within the visual range of each user have changed. If so, visual information is obtained based on the collaborative processing results of the controlled objects of multiple operations, and based on the visual information, the current information of each controlled object is displayed within the visual range of each user, thereby updating the current information of the controlled objects within the visual range of each user, avoiding the problems of slow update speed and long synchronization time caused by global update.
[0244] Optionally, if the network status is abnormal, the operation information of each user is cached locally, and after the network status is restored, the operation information of each user cached locally is synchronized to the server.
[0245] Optionally, when the network status is abnormal, use Figure 1 The local storage unit in the storage module caches each user's operation information and synchronizes the operation information stored in the local storage unit to the server storage unit after the network status is restored. The operation information is information generated by the user's operation, including the identification of the controlled object and the operation type.
[0246] In this embodiment, by caching the operation information of each user locally when the network status is abnormal, and synchronizing it to the server after the network status is restored, it is ensured that each user can still perform design operations in the case of weak network or network disconnection, and synchronized with the server after the network is restored, thereby ensuring the synchronization of each user's data.
[0247] As an optional implementation, Figure 7 This is a flow chart of another multi-person collaborative design processing method provided by the embodiment of the present application. Figure 7 The steps of the complete collaborative design process are introduced.
[0248] S701: A user performs multiple operations on at least one controlled object in EDA software.
[0249] S702: If the operation causes a level change, determine at least one target collaboration strategy according to each operation, and perform collaborative processing on the controlled object according to the target collaboration strategy.
[0250] Optionally, the level change indicates a change in a controlled object, and the controlled object may be, for example, a module, a component, or a component attribute.
[0251] S703: Submit the processing result in binary form to the server.
[0252] S704: Determine whether the network status is normal. If so, execute S705; if not, execute S706.
[0253] S705: The server integrates the collaborative processing result executed based on the controlled object with the current design data.
[0254] S706: Perform network status detection and continue to execute step S704.
[0255] S707: Determine whether manual conflict resolution is required. If yes, execute S708; if no, execute S710.
[0256] S708. Respond to manual coordination operations.
[0257] S709: Determine whether the network status is normal. If so, execute S710; if not, execute S712.
[0258] S710: Determine whether the controlled object within the current user's visual range has changed. If so, execute S711.
[0259] S711. Update the latest information within the current user's visible range.
[0260] S712: Perform network status detection and continue to execute step S709.
[0261] While executing S702, in S713, if the user operation is to exit, the collaborative design is terminated.
[0262] Next, based on the collaborative strategies in each strategy library Figure 1 The controlled objects at each level are introduced to perform the corresponding collaborative processing.
[0263] For project-level objects: Based on the last-write-takes-effect collaboration strategy, modifications between different submodules do not interfere with each other. For example, a user's modification to module A will not affect module B.
[0264] Key operations are pre-set so that they take priority over common operations. For example, if the operation information instructs the user to perform a move operation, the controlled object will prioritize the snap-to-grid operation over the move operation.
[0265] For module-level objects: Based on the last-write-takes-effective collaboration strategy, a pre-set user lock locks the level operated by the target user, preventing other users from operating on the target user's level. It's worth noting that before design begins, users can set whether the level is locked. For unlocked levels, multiple people can simultaneously modify the controlled objects within them.
[0266] Based on the last write-effective collaborative strategy, you can also lock frequently modified controlled objects such as power modules and highlight them to remind users to set modification permissions. After setting modification permissions, only users with modification permissions can modify the module.
[0267] Based on the clock coordination strategy, if multiple users simultaneously create a module with the same name, a suffix is automatically added to the name of each user's newly added module. This suffix can be the user name. For example, if user A and user B simultaneously add a filter module named Filter, the filter module added by user A is automatically named Filter-A, and the filter module added by user B is automatically named Filter-B.
[0268] Based on the clock coordination strategy, if the controlled object currently operated by a user is deleted by another user, the deletion operation is performed first and the user is reminded that the controlled object has been deleted.
[0269] For module-level objects: Based on the last-write-effective collaborative strategy, if a controlled object is modified by multiple people at the same time, the controlled object will be highlighted in the visual interface of each user, and the specific user will select which operation is the effective operation.
[0270] Based on the graph collaboration strategy, when the user selects multiple controlled objects and performs move operations on them, the selected objects are moved as a whole.
[0271] Based on the ordered set collaborative strategy, when a user deletes a controlled object, the controlled object is stored in the removal set to avoid user misoperation.
[0272] Based on the ordered set collaboration strategy, when a user drags a reused component from the component library, an identifier is automatically generated for the component, and the dragged original retains its original properties.
[0273] For connection-level objects: Based on the clock coordination strategy, when adding, deleting, or modifying connections, it is necessary to ensure that the starting and ending components of the connection exist, and that the pins of the starting and ending components used for the connection are valid.
[0274] Based on the last-written-in-effect collaborative strategy, if the operation of the user with the latest timestamp is invalid, it will automatically roll back to the most recent valid state. If an operation violates the preset rules, the user will be provided with a recommended value and prompted to confirm the operation. For example, if the line width modified by the user exceeds the process limit, the user will be provided with a recommended line width and prompted to confirm the line width.
[0275] Based on the graph collaboration strategy, when a component is deleted, the connected lines are also deleted based on the connection relationship. When a component is moved, the connected lines are also offset based on the connection relationship to maintain the connection relationship.
[0276] For layer-level objects, based on the last write-effective collaboration strategy, if the frequency of multiple users adjusting the layer exceeds the preset frequency, a reminder message will be generated and displayed when the user adjusts the image. The reminder message is used to ask the user whether to maintain the current state.
[0277] Based on the last write-effective collaboration strategy, set the layer priority, and high-priority layers cover low-priority layers.
[0278] Based on the last write-effective collaborative strategy, modifications to preset non-critical layers can provide different versions for each user to choose from.
[0279] Based on the last-written-in-effect collaborative strategy, when modifying a component's color, if the difference between the modified colors indicated by multiple users is less than a preset minimum color threshold, the two colors are directly merged to generate a target color. The target color can be an intermediate color between the modified colors indicated by multiple users. If the difference between the modified colors indicated by multiple users is greater than a preset maximum color threshold, the component is highlighted.
[0280] Based on the clock coordination strategy, when the parent layer is hidden, the child layer is automatically hidden and marked as "inherit hidden". When the child layer is hidden, the inheritance relationship with the parent layer is broken. When the layer is deleted, all components and connections in the layer are moved to the default layer.
[0281] Based on the clock coordination strategy, when the controlled object is a process parameter, the DRC rules of the associated layer are automatically updated.
[0282] In summary, through the above-mentioned collaborative strategies and extended rules, multiple users can collaborate on the same design project.
[0283] Based on the same inventive concept, the embodiment of the present application also provides a multi-person collaborative design processing method device corresponding to the multi-person collaborative design processing method. Since the principle of solving the problem by the device in the embodiment of the present application is similar to the above-mentioned multi-person collaborative design processing method in the embodiment of the present application, the implementation of the device can refer to the implementation of the method, and the repeated parts will not be repeated.
[0284] Reference Figure 8 FIG. 8 is a schematic diagram of a multi-person collaborative design processing device provided in an embodiment of the present application. The device includes a response module 801 and a processing module 802.
[0285] A response module 801 is configured to respond to multiple operations of multiple users on at least one controlled object in electronic design automation (EDA) software, and determine at least one target collaboration strategy from a strategy library based on each of the operations. The controlled object includes at least one of the following: a project-level object, a module-level object, a component-level object, a connection-level object, and a graph-level object. The strategy library includes a clock collaboration strategy, a last-write-effective collaboration strategy, an ordered set collaboration strategy, and a graph collaboration strategy.
[0286] The processing module 802 is configured to perform collaborative processing on the multiple controlled objects based on the at least one target collaborative strategy.
[0287] Optionally, the response module 801 is specifically configured to:
[0288] If multiple operations cause connection changes or component changes, obtain the timestamp of each operation;
[0289] Determining, based on the controlled object of each operation and the timestamp of each operation, whether the target collaborative strategy is the last-written effective collaborative strategy or the clock collaborative strategy, wherein the last-written effective collaborative strategy is used to indicate that the operation with the latest timestamp is used as the operation of the controlled object, and the clock collaborative strategy is used to record the operations and operation times of each user and merge the operations of each user;
[0290] If multiple operations involve adding or deleting connections or components, determine whether the operations result in changes to the printed circuit board, schematic, or package structure;
[0291] If a change is caused to the printed circuit board, the target collaboration strategy is determined to be a graph collaboration strategy, which is used to add, delete, or merge components or connections and generate connection relationships;
[0292] If the schematic diagram or package structure changes, the target collaboration strategy is determined to be an ordered set collaboration strategy, which is used to modify the component library based on the user's operation so that the referenced components are modified at the same time.
[0293] Optionally, the response module 801 is specifically configured to:
[0294] Determine whether the controlled objects of each operation are the same component or the same connection;
[0295] If the controlled objects of the operations are not the same component or the same connection, then the target coordination strategy is determined to be the last written effective coordination strategy;
[0296] If the controlled objects of the various operations are the same component or the same connection, then it is determined whether the attributes of the controlled objects of the various operations are the same attribute;
[0297] If so, determining that the target collaborative strategy is the last written effective collaborative strategy;
[0298] If not, it is determined that the target coordination strategy is a clock coordination strategy.
[0299] Optionally, the response module 801 is specifically configured to:
[0300] After performing collaborative operations on the controlled object based on the last written effective collaborative strategy or the clock collaborative strategy, determining whether the multiple operations cause changes in a printed circuit board, a schematic diagram, or a package structure;
[0301] If a change is caused to the printed circuit board, the controlled objects of the multiple operations are processed based on the graph collaboration strategy;
[0302] If a schematic diagram change or a package structure change is caused, the controlled objects of the multiple operations are processed based on the ordered set coordination strategy.
[0303] Optionally, the processing module 802 is specifically configured to:
[0304] Determine whether the network status is normal;
[0305] If so, determine whether the controlled objects within the visual range of each user have changed. If so, obtain visual information based on the collaborative processing results of the controlled objects of the multiple operations;
[0306] According to the visual information, current information of each controlled object is displayed within the visual range of each user.
[0307] Optionally, the processing module 802 is specifically configured to:
[0308] If the network status is abnormal, the operation information of each user is cached locally, and after the network status is restored, the operation information of each user cached locally is synchronized to the server.
[0309] Optionally, the project-level objects include module collections, global component libraries, cross-module connections, and global settings objects;
[0310] The module level includes module metadata, component instances, port systems, module nesting, and module wiring;
[0311] The component level includes component definition, instance attributes and associated data;
[0312] The connection level includes connection data, level association and status mark;
[0313] The layer level includes layer attribute definition, hierarchical relationship and state management.
[0314] Optionally, the last-write-effective coordination strategy is further used to:
[0315] Based on the pre-set user lock, the level operated by the target user is locked to prevent other users from operating the level operated by the target user.
[0316] Optionally, the last-written effective collaborative strategy is further configured to: if the operation instructs the user to perform a moving operation, the controlled object is first aligned with the grid on the basis of executing the movement.
[0317] For descriptions of the processing flow of each module in the device and the interaction flow between each module, reference can be made to the relevant descriptions in the above method embodiment, which will not be described in detail here.
[0318] The present application also provides an electronic device, such as Figure 9 FIG. 1 is a schematic diagram of the structure of an electronic device provided in an embodiment of the present application, comprising: a processor 901, a memory 902 and a bus. The memory 902 stores machine-readable instructions executable by the processor 901 (for example, Figure 8 The device includes the response module 801 and the processing module 802 corresponding to the execution instructions, etc.), when the computer device is running, the processor 901 and the memory 902 communicate through the bus, and when the machine-readable instructions are executed by the processor 901, the above-mentioned multi-person collaborative design processing method is executed.
[0319] An embodiment of the present application further provides a computer-readable storage medium having a computer program stored thereon. When the computer program is executed by a processor, the steps of the above-mentioned multi-person collaborative design processing method are executed.
[0320] Those skilled in the art can clearly understand that, for the convenience and brevity of description, the specific working process of the system and device described above can refer to the corresponding process in the method embodiment, and will not be repeated in this application. In the several embodiments provided in this application, it should be understood that the disclosed system, device and method can be implemented in other ways. The device embodiments described above are merely schematic. For example, the division of the modules is only a logical function division. There may be other division methods in actual implementation. For example, multiple modules or components can be combined or integrated into another system, or some features can be ignored or not executed. Another point is that the mutual coupling or direct coupling or communication connection shown or discussed can be through some communication interfaces, indirect coupling or communication connection of devices or modules, which can be electrical, mechanical or other forms.
[0321] In addition, the functional units in the various embodiments of the present application can be integrated into a processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit. If the function is implemented in the form of a software functional unit and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of the present invention is essentially or the part that contributes to the prior art or the part of the technical solution can be embodied in the form of a software product, which is stored in a storage medium and includes several instructions for enabling a computer device (which can be a personal computer, a server, or a network device, etc.) to perform all or part of the steps of the method described in each embodiment of the present invention. The aforementioned storage medium includes various media that can store program codes, such as a USB flash drive, a mobile hard disk, a read-only memory (ROM), a random access memory (RAM), a magnetic disk or an optical disk.
[0322] The above is only a specific implementation method of the present application, but the protection scope of the present application is not limited thereto. Any technician familiar with this technical field can easily think of changes or replacements within the technical scope disclosed in this application, which should be covered by the protection scope of the present application.< / layer> < / wire> < / wire> < / component> < / module>
Claims
1. A multi-person collaborative design processing method, characterized in that: The method comprises: In response to multiple operations of multiple users on at least one controlled object in electronic design automation (EDA) software, determining at least one target collaboration strategy from a strategy library based on each of the operations, wherein the controlled object includes at least one of the following: a project-level object, a module-level object, a component-level object, a connection-level object, and a graph-level object, and the strategy library includes a clock collaboration strategy, a last-write-effective collaboration strategy, an ordered set collaboration strategy, and a graph collaboration strategy; Based on the at least one target coordination strategy, coordinated processing is performed on the plurality of controlled objects under operation.
2. The multi-person collaborative design processing method according to claim 1, characterized in that: Determining at least one target collaboration strategy from a strategy library according to each of the operations includes: If multiple operations cause connection changes or component changes, obtain the timestamp of each operation; Determining, based on the controlled object of each operation and the timestamp of each operation, whether the target collaborative strategy is the last-written effective collaborative strategy or the clock collaborative strategy, wherein the last-written effective collaborative strategy is used to indicate that the operation with the latest timestamp is used as the operation of the controlled object, and the clock collaborative strategy is used to record the operations and operation times of each user and merge the operations of each user; If multiple operations involve adding or deleting connections or components, determine whether the operations result in changes to the printed circuit board, schematic, or package structure; If a change is caused to the printed circuit board, the target collaboration strategy is determined to be a graph collaboration strategy, which is used to add, delete, or merge components or connections and generate connection relationships; If the schematic diagram or package structure changes, the target collaboration strategy is determined to be an ordered set collaboration strategy, which is used to modify the component library based on the user's operation so that the referenced components are modified at the same time.
3. The multi-person collaborative design processing method according to claim 2, characterized in that: The determining, based on the controlled objects of each operation and the timestamps of each operation, that the target coordination strategy is the last written effective coordination strategy or the clock coordination strategy includes: Determine whether the controlled objects of each operation are the same component or the same connection; If the controlled objects of the operations are not the same component or the same connection, then the target coordination strategy is determined to be the last written effective coordination strategy; If the controlled objects of the various operations are the same component or the same connection, then it is determined whether the attributes of the controlled objects of the various operations are the same attribute; If so, determining that the target collaborative strategy is the last written effective collaborative strategy; If not, it is determined that the target coordination strategy is a clock coordination strategy.
4. The multi-person collaborative design processing method according to claim 3, characterized in that: After performing collaborative processing on the controlled objects of the multiple operations based on the at least one target collaborative strategy, the method further includes: After performing collaborative operations on the controlled object based on the last written effective collaborative strategy or the clock collaborative strategy, determining whether the multiple operations cause changes in a printed circuit board, a schematic diagram, or a package structure; If a change is caused to the printed circuit board, the controlled objects of the multiple operations are processed based on the graph collaboration strategy; If a schematic diagram change or a package structure change is caused, the controlled objects of the multiple operations are processed based on the ordered set coordination strategy.
5. The multi-person collaborative design processing method according to claim 1, characterized in that: The method further comprises: Determine whether the network status is normal; If so, determine whether the controlled objects within the visual range of each user have changed. If so, obtain visual information based on the collaborative processing results of the controlled objects of the multiple operations; According to the visual information, current information of each controlled object is displayed within the visual range of each user.
6. The multi-person collaborative design processing method according to claim 5, characterized in that: The method further comprises: If the network status is abnormal, the operation information of each user is cached locally, and after the network status is restored, the operation information of each user cached locally is synchronized to the server.
7. The multi-person collaborative design processing method according to claim 1, characterized in that: The project-level objects include module collections, global component libraries, cross-module connections, and global settings objects; The module level includes module metadata, component instances, port systems, module nesting, and module wiring; The component level includes component definition, instance attributes and associated data; The connection level includes connection data, level association and status mark; The layer level includes layer attribute definition, hierarchical relationship and state management.
8. The multi-person collaborative design processing method according to claim 1, characterized in that: The last write effective coordination strategy is also used for: Based on the pre-set user lock, the level operated by the target user is locked to prevent other users from operating the level operated by the target user.
9. The multi-person collaborative design processing method according to claim 2, characterized in that: The last-written effective collaborative strategy is also used for: if the operation instructs the user to perform a moving operation, the controlled object is aligned with the grid first on the basis of executing the movement.
10. An electronic device, characterized in that: include: A processor and a memory, wherein the memory stores machine-readable instructions executable by the processor, and when the electronic device is running, the processor executes the machine-readable instructions to perform the multi-person collaborative design processing method according to any one of claims 1 to 9.