A method and system for generating a specified DRC violation layout based on a controllable diffusion model

By using a controllable diffusion model, a specified DRC violation layout is generated, which solves the problems of low topological diversity and difficulty in cross-PDK migration in existing technologies. It achieves DRC violation layout generation with high topological diversity and low threshold, and supports rapid migration to different design rule checking tools.

CN122433666APending Publication Date: 2026-07-21SHANGHAI LIXIN SOFTWARE TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
SHANGHAI LIXIN SOFTWARE TECH CO LTD
Filing Date
2026-04-29
Publication Date
2026-07-21

AI Technical Summary

Technical Problem

Existing technologies cannot generate DRC violation layouts of a specified type in a specified area. The generated results have low topology diversity and are difficult to migrate across PDKs, which cannot meet the needs of process development and EDA tool verification.

Method used

A method based on a controllable diffusion model is adopted to generate a specified DRC violation layout through natural language input, construct control prompts that encode violation type and location information, and combine boundary spurs suppression and denoising post-processing to generate a DRC violation layout with high topological diversity and support cross-PDK migration.

Benefits of technology

It enables the generation of DRC maps for specified violation types in designated areas, maintains compliance outside designated areas, features high topology diversity and low usage threshold, supports rapid migration to different PDKs, and improves the rule coverage and verification efficiency of DRC tools.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN122433666A_ABST
    Figure CN122433666A_ABST
Patent Text Reader

Abstract

The application discloses a kind of specified DRC exception layout generation method and system based on controllable diffusion model, the method includes: fine-tuning generation type diffusion model, so that it generates sample conforming to layout feature;Control prompt coded with DRC exception type and exception location information is constructed, and conditional control training is carried out based on the control prompt, to realize the generation of DRC exception layout of specified position, specified exception type;The natural language input of user is obtained, and the exception area and exception type specified by user are extracted, and the required layout sample is generated;Grid-based boundary burr suppression denoising post-processing is executed to the generation result, to improve the layout quality, and effective results are screened out.The application can controllably generate specific DRC rule exception sample in specified area, has high topological diversity, supports natural language interaction, and can be used in DRC tool verification, design rule script debugging in PDK development and the like scene.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This invention belongs to the field of integrated circuit electronic design automation (EDA) technology, specifically relating to a method and system for generating violation layouts for Design Rule Check (DRC) based on a controlled diffusion model. Background Technology

[0002] As semiconductor process nodes continue to shrink, the complexity of integrated circuit (IC) layouts is increasing. Layout pattern generation plays a crucial role in multiple stages, including process development, EDA tool verification, lithography simulation, and design rule debugging. By building diverse layout pattern libraries, it can be used to construct test cases, evaluate circuit behavior, verify rule coverage, and identify lithography hotspots. However, the time-to-tapeout design cycle for circuit layouts is very long. To improve generation efficiency, industry and academia have proposed various layout pattern generation methods to generate layout samples in batches.

[0003] In practical process development and design, besides generating valid (DRC-clean) layout patterns, a large number of DRC violation patterns are also of significant value. In industry, manufacturers need violation sample testing to test their design rule decks and check whether the scripts match the expected behavior of the Design Rule Manual (DRM). PDK optimization requires violation or boundary sample observations of circuit behavior. Developers of DRC tools need the coverage and correctness of violation testing tool code for various rules. In academia, researchers attempting to use AI models for DRC or hotspot prediction require a large number of violation samples as training data. Therefore, constructing diverse and controllable DRC violation examples has become a key requirement in process development and research.

[0004] In existing technologies, traditional industrial tools can generate new layout patterns through geometric rearrangement and size changes, but they have significant limitations in handling complex topologies. On the other hand, existing academic research is limited to DRC-compliant layout generation, and can only circumvent or filter out DRC-violation patterns, but cannot generate them in a controllable manner. In addition, existing methods have poor transferability between different PDKs.

[0005] Therefore, how to construct a DRC violation layout generation method that can generate controllable violation types and locations in batches, has high topology diversity, and can be quickly migrated between multiple PDKs, in order to meet the needs of process development, DRC rule script debugging, and EDA tool verification, is a technical problem that urgently needs to be solved in this field. Summary of the Invention

[0006] The purpose of this invention is to provide a method and system for generating specified DRC violation maps based on a controllable diffusion model, thereby solving the technical problems of existing technologies, such as the inability to generate DRC violation maps of specified types in specified regions, low topological diversity of generated results, and difficulty in cross-PDK migration. This invention allows users to generate violation samples of specific DRC rules in specified regions using natural language commands. Furthermore, this invention can be flexibly migrated to various PDKs, and the generated results exhibit high topological diversity, which helps users perform tasks such as verifying the correctness and coverage of DRC tools and validating design rule scripts in the early stages of PDK development.

[0007] To achieve the above objectives, the present invention adopts the following technical solution: a method for generating a specified DRC violation layout based on a controllable diffusion model, comprising the following steps:

[0008] Step S1: Fine-tune the generative diffusion model to generate samples that conform to the layout characteristics;

[0009] Step S2: Construct a control prompt that encodes DRC violation type and violation location information, and perform conditional control training based on the control prompt to generate a DRC violation map of a specified location and violation type;

[0010] Step S3: Obtain the user's natural language input, extract the violation area and violation type specified by the user, and generate the required map sample;

[0011] Step S4: Perform mesh-based boundary spur suppression and denoising post-processing on the generated results to improve layout quality and filter valid results; the filtering conditions include: within the specified violation area, there are only the user-specified DRC violation type; outside the specified violation area, the layout remains DRC compliant.

[0012] Furthermore, in step S1, the generative diffusion model adopts ControlNet, which is a variant of the diffusion model Stable Diffusion, and introduces a conditional control branch to guide the model generation process through control cues; the inputs during the model training phase include: training images, text cues, and control cues, while the model inference phase only requires text cues based on natural language.

[0013] Furthermore, in step S1, a generative diffusion model is used to fine-tune the layout data. After the layout data is visualized into a pixel-represented image, it includes the following layout features:

[0014] (1) Binarization: The map image is divided into two parts: foreground and background;

[0015] (2) Manhattan graphic: The foreground graphic is a Manhattan graphic whose edges are parallel to the coordinate axes;

[0016] (3) Physical meaning: The foreground pattern corresponds to the structure in the actual integrated circuit layout.

[0017] (3) Physical meaning: The foreground pattern corresponds to the structure in the integrated circuit layout.

[0018] Furthermore, in step S2, the control prompt consists of a multi-channel tensor formed by splicing the violation type embedding feature map, the violation location mask, and the distance weight map, which is used to constrain the generated result during the denoising process of the diffusion model.

[0019] Furthermore, the violation type embedding feature map is obtained by inputting the pixel-by-pixel mask value of the violation location into a trainable embedding layer and mapping it to a continuous feature space, so as to improve the ability to distinguish between different violation types.

[0020] Further, in step S3, the specified violation type is extracted from the user's natural language input based on keywords; if the user specifies a violation area, a location box is generated in the corresponding area, otherwise a location box is generated at a random location; the location box and violation type information are encoded to form a control prompt, which is used to guide the model to generate a layout sample of the specified violation area and violation type.

[0021] Further, in step S4, the grid-based boundary spur suppression and denoising post-processing includes: extracting the connected components of each pattern individually; for each connected component, extracting the edge of the pattern and extending the scan line so that the scan line intersects to form a rectangular grid, dividing the pattern into several rectangles; for rectangular regions whose area or width after division is less than a preset threshold, they are determined to be spurs and eliminated to improve the quality of the generated result.

[0022] This invention also provides a system for generating a specified DRC violation layout based on a controllable diffusion model, used to perform the above-described method, comprising:

[0023] The model fine-tuning module is used to fine-tune the generative diffusion model to generate samples that conform to the layout characteristics;

[0024] The control prompt construction and training module is used to construct control prompts that encode DRC violation types and location information, and to perform conditional control training based on these control prompts;

[0025] The user interaction and generation module is used to obtain the user's natural language input, extract the violation area and violation type specified by the user, and generate a map sample;

[0026] The post-processing and filtering module is used to perform grid-based boundary spur suppression and noise reduction post-processing on the generated results, and to filter valid results that contain only specified violations within the specified area and maintain DRC compliance outside the area.

[0027] The present invention also provides an electronic device, comprising: at least one processor, at least one memory, and computer program instructions stored in the memory, wherein the above-described method is implemented when the computer program instructions are executed by the processor.

[0028] The present invention also provides a computer-readable storage medium having stored thereon computer program instructions that, when executed by a processor, implement the above-described method.

[0029] Compared with the prior art, the present invention has the following beneficial effects:

[0030] 1. Controllable violation generation: This invention, by constructing structured control prompts that encode violation types and location information, can generate a DRC violation map of specified violation types in a user-specified area, while maintaining full DRC compliance outside the specified area. This refined control capability is not available in existing technologies.

[0031] 2. High topological diversity: Based on the powerful generation capability of the diffusion model, this invention can generate layout examples with high topological diversity, avoiding the shortcomings of the single generation mode of traditional geometric methods, and helping to comprehensively test the rule coverage and correctness of DRC tools.

[0032] 3. Low barrier to entry and high portability: Users only need to describe their requirements using natural language (specifying the violation type and optional locations), without writing scripts or code, making it easy to use. Furthermore, the method of this invention can be quickly migrated to different PDKs, requiring only minor adjustments using the layout data of the corresponding PDK, demonstrating good versatility. Attached Figure Description

[0033] Figure 1 This is a flowchart illustrating the implementation of the method for generating a specified DRC violation layout based on a controllable diffusion model provided in this embodiment of the invention.

[0034] Figure 2 This is a flowchart of the control prompt encoding construction in an embodiment of the present invention;

[0035] Figure 3 This is a schematic diagram of the post-processing for suppressing and denoising boundary burrs in an embodiment of the present invention. Detailed Implementation

[0036] The present invention will be further described below with reference to the accompanying drawings and embodiments.

[0037] It should be noted that the following detailed descriptions are exemplary and intended to provide further explanation of this application. Unless otherwise specified, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this application pertains.

[0038] It should be noted that the terminology used herein is for the purpose of describing particular embodiments only and is not intended to limit the exemplary embodiments according to this application. As used herein, the singular form is intended to include the plural form as well, unless the context clearly indicates otherwise. Furthermore, it should be understood that when the terms "comprising" and / or "including" are used in this specification, they indicate the presence of features, steps, operations, devices, components, and / or combinations thereof.

[0039] This embodiment provides a method for generating a specified DRC violation layout based on a controllable diffusion model, such as... Figure 1 As shown, the implementation steps are as follows.

[0040] Step S1: Fine-tune the generative diffusion model to generate samples that conform to the layout characteristics.

[0041] The generative diffusion model employs ControlNet, a variant of the Stable Diffusion model that incorporates conditional control branches. Control hints guide the model's generation process. Inputs during training include training images, text prompts, and control hints. During inference, only natural language-based text prompts from the user are required.

[0042] In step S1, a generative diffusion model is fine-tuned using a large amount of layout data. After the layout data is visualized into a pixel-represented image, it includes the following layout features:

[0043] (1) Binarization: The map image is divided into two parts: foreground and background;

[0044] (2) Manhattan graphic: The foreground graphic is a Manhattan graphic whose edges are parallel to the coordinate axes;

[0045] (3) Physical meaning: The foreground pattern corresponds to the structure in the actual integrated circuit layout.

[0046] (3) Physical meaning: The foreground pattern corresponds to the structure in the actual integrated circuit layout, such as metal interconnects, device areas, etc.

[0047] The layout data required for training can be readily available layout datasets such as open-source layout datasets. There are no additional requirements regarding the PDK used in the dataset or whether the layouts are fully compliant. Regarding control conditions, only text prompts are needed; no control prompts are required for guidance. After fine-tuning, the layout images generated by the model will possess the aforementioned characteristics.

[0048] Step S2: Construct a control prompt that encodes DRC violation type and violation location information, and perform conditional control training based on the control prompt to generate a DRC violation map for a specified location and violation type.

[0049] The control prompt consists of a multi-channel tensor formed by concatenating a violation type embedding feature map, a violation location mask, and a distance weight map. This tensor is used to constrain the generated results during the denoising process of the diffusion model. The violation type embedding feature map is obtained by mapping the pixel-wise mask value of the violation location into a trainable embedding layer to a continuous feature space, thereby improving the ability to distinguish between different violation types.

[0050] Control cues include violation type and location information, encoded as high-dimensional vectors to enhance the model's understanding of violation patterns. The training data for this step consists of a map containing specific known violations. The training data needs to be labeled pixel-by-pixel with the violation type and location, and control cues are encoded based on this training data. Figure 2 As shown, the control prompt coding construction process is as follows:

[0051] (1) Extract the pixel-by-pixel mask of the violation location according to the violation type. Different values ​​of the mask distinguish different violation types. In order to avoid the numerical relationship between different integer values ​​from misleading the model, the mask value is mapped to a high-dimensional vector through the embedding layer, such as a vector with 8 dimensions or more, to increase the difference between different violation types and enhance the model's understanding ability.

[0052] (2) Generate a larger rectangular box around the violation area as a location box, including part of the surrounding normal map, to help the model understand the context of the violation area. For example, enlarge the length and width of the violation area by 2.5 times to generate a location box. The overlapping location boxes will be integrated into a larger location box that contains multiple violation areas.

[0053] (3) Generate a distance map based on the distance between the pixels inside and outside the positioning box and the box to enhance the model’s understanding of the specified area.

[0054] (4) Integrate the mask vector, bounding box, and distance map into a high-dimensional vector as a control cue. Taking the mask vector as an 8-dimensional example, the bounding box and distance map are each 1-dimensional vectors, and finally integrate them into a 10-dimensional control cue to guide the model to understand the violation layout data.

[0055] This step requires specifying the violation type in the text prompt, and training the model by combining control prompts and map data, so that the model has the ability to controllably generate DRC violations under the guidance of the prompts.

[0056] Specifically, DRC checks are performed on the training layout to detect DRC violations, and these violations are marked on a mask of the same size as the input layout to obtain a violation mask. The violation mask marks violation regions at the pixel level and uses different integer values ​​to represent different types of violations, serving as violation type identifiers, such as spacing violations, linewidth violations, and area violations. To avoid the numerical relationships between different integer values ​​misleading the model, an additional trainable embedding layer is added to the ControlNet model architecture to map the discrete violation type identifiers into vector representations in a continuous feature space through an embedding function.

[0057]

[0058] in, This indicates the violation type corresponding to the pixel. The control cue embedding layer is trainable, and its parameters are updated and saved synchronously during training. This mapping enables different violation types to be separable in a higher-dimensional feature space, thereby avoiding the numerical bias problem introduced by integer encoding.

[0059] Furthermore, an enlarged rectangular region is generated around each violation region as a bounding box, and a localization mask is constructed based on this bounding box to provide contextual information about the violation region. Simultaneously, a distance map is constructed based on the distance from each pixel to the bounding box boundary, used to assign different weights to different regions, thereby enhancing the model's attention to the violation region and its surrounding structure. The localization mask, distance map, and embedded violation mask are combined to form a multi-channel tensor, which is input into the model as a control cue, and used together with training data containing specific violations for model training. Finally, the control cue can be formally represented as:

[0060]

[0061] in, The feature map represents the embedding of the violation type. Indicates the location mask for violations. This represents a distance-weighted graph based on the bounding boxes. Compared to the low-level visual conditional control of the original ControlNet method, the structured control cues of this invention can simultaneously encode semantics (violation type), spatial (position), and geometric constraints (distance weights), enabling fine-grained control over the EDA layout generation task.

[0062] During model training, the control prompts The noisy image and time step are input into the diffusion model to guide the inverse denoising process, and its optimization objective is:

[0063]

[0064] in, Represents a noise prediction network. To control prompts, This is a text prompt.

[0065] Step S3: Obtain the user's natural language input, extract the violation area and violation type specified by the user, and generate the required map sample.

[0066] User input in natural language must include a specified violation type, with the option to specify a violation region. For user input in natural language, the model extracts the required violation type based on keyword extraction. If the user specifies a violation region, a bounding box is generated in the corresponding region; otherwise, a bounding box is generated at a random location. The bounding box and violation type information are encoded to form a control prompt. This control prompt guides the model to generate a layout sample specifying the violation region and violation type.

[0067] Step S4: Perform grid-based boundary spur suppression and denoising post-processing on the generated results to improve the layout quality and filter valid results.

[0068] The generation result of the diffusion model will inevitably introduce glitch, therefore this method improves the quality of the generated layout through a boundary glitch suppression and denoising post-processing algorithm. For example... Figure 3 As shown, this algorithm extracts the connected components of each pattern individually, avoiding interference from scan lines from other patterns. Within each connected component, the edges of the pattern are extracted and scan lines are extended so that the scan lines intersect to form a rectangular network. The pattern is then divided into several rectangles by the network. For the rectangular regions obtained from the mesh division... If the area or width of the segmented rectangular region is less than a preset threshold:

[0069]

[0070] These are identified as boundary burrs and deleted. and These are the area and width thresholds, respectively.

[0071] After denoising, the generated results of the model will be filtered. The filtering criteria, that is, the valid generated results, must meet two conditions simultaneously:

[0072] (1) Within the specified violation area, there are only the DRC violation types specified by the user.

[0073] (2) Outside the designated violation area, the map remains DRC compliant (DRC-clean).

[0074] The maps that meet the above conditions are selected as the final generated results.

[0075] This embodiment also provides a system for generating a specified DRC violation layout based on a controllable diffusion model, used to perform the above method, including:

[0076] The model fine-tuning module is used to fine-tune the generative diffusion model to generate samples that conform to the layout characteristics;

[0077] The control prompt construction and training module is used to construct control prompts that encode DRC violation types and location information, and to perform conditional control training based on these control prompts;

[0078] The user interaction and generation module is used to obtain the user's natural language input, extract the violation area and violation type specified by the user, and generate a map sample;

[0079] The post-processing and filtering module is used to perform grid-based boundary spur suppression and noise reduction post-processing on the generated results, and to filter valid results that contain only specified violations within the specified area and maintain DRC compliance outside the area.

[0080] This embodiment also provides an electronic device, including: at least one processor, at least one memory, and computer program instructions stored in the memory, which implement the above-described method when executed by the processor.

[0081] This embodiment also provides a computer-readable storage medium storing computer program instructions that, when executed by a processor, implement the above-described method.

[0082] Those skilled in the art will understand that embodiments of this application can be provided as methods, systems, or computer program products. Therefore, this application can take the form of a completely hardware embodiment, a completely software embodiment, or an embodiment combining software and hardware aspects. Furthermore, this application can take the form of a computer program product embodied on one or more computer-usable storage media (including but not limited to disk storage, CD-ROM, optical storage, etc.) containing computer-usable program code.

[0083] This application is described with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of this application. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer program instructions. These computer program instructions can be provided to a processor of a general-purpose computer, special-purpose computer, embedded processor, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, generate instructions for implementing the flowchart... Figure 1 One or more processes and / or boxes Figure 1A device that provides the functions specified in one or more boxes.

[0084] These computer program instructions may also be stored in a computer-readable storage medium that can direct a computer or other programmable data processing device to function in a particular manner, such that the instructions stored in the computer-readable storage medium produce an article of manufacture including instruction means, which are implemented in a process Figure 1 One or more processes and / or boxes Figure 1 The function specified in one or more boxes.

[0085] These computer program instructions may also be loaded onto a computer or other programmable data processing equipment to cause a series of operational steps to be performed on the computer or other programmable equipment to produce a computer-implemented process, thereby providing instructions that execute on the computer or other programmable equipment for implementing the process. Figure 1 One or more processes and / or boxes Figure 1 The steps of the function specified in one or more boxes.

[0086] The above description is merely a preferred embodiment of the present invention and is not intended to limit the invention in any other way. Any person skilled in the art may make changes or modifications to the above-disclosed technical content to create equivalent embodiments. However, any simple modifications, equivalent changes, and modifications made to the above embodiments based on the technical essence of the present invention without departing from the scope of the present invention shall still fall within the protection scope of the present invention.

Claims

1. A method for generating a specified DRC violation layout based on a controllable diffusion model, characterized in that, Includes the following steps: Step S1: Fine-tune the generative diffusion model to generate samples that conform to the layout characteristics; Step S2: Construct a control prompt that encodes DRC violation type and violation location information, and perform conditional control training based on the control prompt to generate a DRC violation map of a specified location and violation type; Step S3: Obtain the user's natural language input, extract the violation area and violation type specified by the user, and generate the required map sample; Step S4: Perform grid-based boundary spur suppression and denoising post-processing on the generated results to improve layout quality and filter valid results; the filtering criteria include: within the specified violation area, there are one and only user-specified DRC violation types. Outside of designated violation areas, the map maintains DRC compliance.

2. The method for generating a specified DRC violation layout based on a controllable diffusion model according to claim 1, characterized in that, In step S1, the generative diffusion model adopts ControlNet. The generative diffusion model is a variant based on the diffusion model Stable Diffusion and introduces a conditional control branch to guide the model generation process through control prompts. The inputs during the model training phase include training images, text prompts, and control prompts. During the model inference phase, only natural language-based text prompts are required.

3. The method for generating a specified DRC violation layout based on a controllable diffusion model according to claim 1, characterized in that, In step S1, a generative diffusion model is fine-tuned using the layout data. After the layout data is visualized into a pixel-represented image, it includes the following layout features: (1) Binarization: The map image is divided into two parts: foreground and background; (2) Manhattan graphic: The foreground graphic is a Manhattan graphic whose edges are parallel to the coordinate axes; (3) Physical meaning: The foreground pattern corresponds to the structure in the actual integrated circuit layout. (3) Physical meaning: The foreground pattern corresponds to the structure in the integrated circuit layout.

4. The method for generating a specified DRC violation layout based on a controllable diffusion model according to claim 1, characterized in that, In step S2, the control prompt consists of a multi-channel tensor formed by splicing the violation type embedding feature map, the violation location mask, and the distance weight map, which is used to constrain the generated result during the denoising process of the diffusion model.

5. The method for generating a specified DRC violation layout based on a controllable diffusion model according to claim 4, characterized in that, The violation type embedding feature map is obtained by inputting the pixel-wise mask value of the violation location into a trainable embedding layer and mapping it to a continuous feature space, so as to improve the ability to distinguish between different violation types.

6. The method for generating a specified DRC violation layout based on a controllable diffusion model according to claim 1, characterized in that, In step S3, the specified violation type is extracted from the user's natural language input based on keywords; If the user specifies a violation area, a location box is generated in the corresponding area; otherwise, a location box is generated at a random location. The location box and violation type information are encoded to form a control prompt, which guides the model to generate a layout sample of the specified violation area and violation type.

7. The method for generating a specified DRC violation layout based on a controllable diffusion model according to claim 1, characterized in that, In step S4, the grid-based boundary spur suppression and denoising post-processing includes: extracting the connected components of each pattern individually; for each connected component, extracting the edge of the pattern and extending the scan line so that the scan line intersects to form a rectangular grid, dividing the pattern into several rectangles; for rectangular regions whose area or width after division is less than a preset threshold, they are determined to be spurs and eliminated to improve the quality of the generated result.

8. A system for generating a specified DRC violation layout based on a controllable diffusion model, characterized in that, For performing the method of any one of claims 1-7, comprising: The model fine-tuning module is used to fine-tune the generative diffusion model to generate samples that conform to the layout characteristics; The control prompt construction and training module is used to construct control prompts that encode DRC violation types and location information, and to perform conditional control training based on these control prompts; The user interaction and generation module is used to obtain the user's natural language input, extract the violation area and violation type specified by the user, and generate a map sample; The post-processing and filtering module is used to perform grid-based boundary spur suppression and noise reduction post-processing on the generated results, and to filter valid results that contain only specified violations within the specified area and maintain DRC compliance outside the area.

9. An electronic device, characterized in that, include: At least one processor, at least one memory, and computer program instructions stored in the memory, which, when executed by the processor, implement the method as described in any one of claims 1-7.

10. A computer-readable storage medium having computer program instructions stored thereon, characterized in that, When the computer program instructions are executed by a processor, the method described in any one of claims 1-7 is implemented.