003_drc : Guardian DRC Verification Tool
Minimum Required Versions: Expert 4.10.39.R & Guardian 4.8.28.R
The Guardian DRC (Design Rule Checking) performs geometric checks on a VLSI layout against various design rules. The Guardian DRC performs various checks as a combination of logical operations and geometrical checks. When a DRC error exists, it can be highlighted in the layout.
1.1. DRC Script Run Setup
The DRC Script Run Setup dialog is used to set options that control the execution of entire Guardian DRC scripts. It can be accessed by either Setup->DRC Run or Verification->DRC->DRC run setup (see drc_setup.png ).
The scope of DRC, the DRC log file and the progress bar of DRC can be set in the DRC Script Run Setup dialog. Set the DRC Script Run Setup as follows.
- Scope: Whole hierarchy
- Write log file: Turn on
- Script progress bar: Turn on
- Command progress bar: Turn on
Scope: The Whole hierarchy option will make the DRC script process the whole contents of the current cell as if it were a flat layout. Therefore, the Whole hierarchy option must be set in a case where an exhaustive check for the geometry of the current cell is needed.
Write log file: This option creates the DRC log file.
Script progress bar and Command progress bar: These options enable the display of the script execution progress and the execution progress of every script command.
Please refer to "Chapter 11.11: DRC Script Run Setup" in the Expert Layout Editor User's Manual for details.
1.2. Load the DRC script and RUN
The Script Panel is the main tool for working with DRC scripts. This window allows you to create and run a DRC script. To open the Script Panel, select Verification->DRC->DRC Script Panel from the Expert main menu (see drc_script_panel.png ):
- Load the integration_ex03.eld file, and then open the ex03 cell.
- Load the DRC script file integration_ex03.dsf from the File menu in the DRC Script Panel.
- Execute the Run command by selecting DRC->Run or the DRC bar (see run_button.png ).
- The DRC log file is displayed in the DRC Script Panel. It contains the software, script, computer, DRC result and so on (see drc_log.png ).
- Load the DRC Error
When the DRC Script Panel is opened, the DRC bar and the DRC error inspection bar are added on the top of the Expert window. The DRC error is loaded from the Load DRC Errors dialog (see load_drc_errors.png ). To open the Load DRC Errors, select Verification->Errors->Load errors from the Expert window or click the Load errors button on the DRC bar (see drc_toolbar.png ).
The selected error is displayed in the layout by clicking the Load button after you select the error item. You can select two or more error items with the Shift key or the Ctrl key. - Confirm the DRC Error
The errors can be confirmed sequentially by using the "Next error" button on the DRC error inspection bar (see drc_error_toolbar.png ). It displays the error mark and pops up the error description (see drc_error.png ).
integration_ex03.dsf
Merge_input: ON; //----------------------------------------------------------------- // // 3. Poly // //----------------------------------------------------------------- //----------------------------------------------------------------- // 3.1 MINIMUM WIDTH //----------------------------------------------------------------- width: layer=Poly, limits < 0.4, ID="Poly Width Error, Width is greater than 0.4", Comment="3.1 Minimun width < 0.4 lambda."; //----------------------------------------------------------------- // 3.2 MINIMUM SPACING //----------------------------------------------------------------- outdistance: layer=Poly, options=(N), limits < 0.4, ID="Poly Spac Error, Space is greater than 0.4", Comment="3.2 Minimun spacing < 0.4 lambda"; //----------------------------------------------------------------- // // 5. CONTACT TO POLY // //----------------------------------------------------------------- //----------------------------------------------------------------- // 5.1 EXACT CONTACT SIZE //----------------------------------------------------------------- width: layer=Contact, limits != 0.4, ID="Contact Width Error, Width is greater than 0.4", Comment="5.1 Exact contact size < 0.4 lambda."; //----------------------------------------------------------------- // 5.2 MINIMUM POLY OVERLAP //----------------------------------------------------------------- indistance: layer1=Contact, layer2=Poly, limits < 0.1, ID="Contact Overlap Error, Contact is enclosed by Poly < 0.1", Comment="5.2 Minimum POLY overlap < 0.1 lambda."; //----------------------------------------------------------------- // 5.3 MINIMUM CONTACT SPACING //----------------------------------------------------------------- outdistance: layer=Contact, limits < 0.4, ID="Contact Space Error, Space is gearter than 0.4", Comment="5.3 Minimum contact spacing < 0.4 lambda."; //----------------------------------------------------------------- // // 7. METAL1 // //----------------------------------------------------------------- //----------------------------------------------------------------- // 7.1 MINIMUM WIDTH //----------------------------------------------------------------- width: layer=Metal1, limits < 0.4, ID="Metal1 Width Error, Width is greater than 0.4", Comment="7.1 Minimum width < 0.4 lambda."; //----------------------------------------------------------------- // 7.2 MINIMUM SPACING //----------------------------------------------------------------- outdistance: layer=Metal1, options=(N), limits < 0.5, ID="Metal1 Space Error, Space is greater than 0.5", Comment="7.2 Minimum spacing < 0.5 lambda."; //----------------------------------------------------------------- // // 8. VIA1 // //----------------------------------------------------------------- //----------------------------------------------------------------- // 8.1 EXACT SIZE //----------------------------------------------------------------- width: layer=Via, limits != 0.4, ID="Via Width Error, Width is greater than 0.4", Comment="8.1 Exact size < 0.4 lambda."; //----------------------------------------------------------------- // 8.2 MINIMUM VIA1 SPACING //----------------------------------------------------------------- outdistance: layer=Via, limits < 0.4, ID="Via Space Error, Space is greater than 0.4", Comment="8.2 Minimum via spacing < 0.4 lambda."; //----------------------------------------------------------------- // 8.3 MINIMUM OVERLAP BY METAL1 //----------------------------------------------------------------- indistance: layer1=Via, layer2=Metal1, limits < 0.1, ID="Via Enclose Error, Via is enclosed by Metal1 < 0.1", Comment="8.3 Minimum overlap by Metal1 < 0.1 lambda."; //----------------------------------------------------------------- // // 9. METAL2 // //----------------------------------------------------------------- //----------------------------------------------------------------- // 9.1 MINIMUM WIDTH //----------------------------------------------------------------- width: layer=Metal2, limits < 0.4, ID="Metal2 Width Error, Width is greater than 0.4", Comment="9.1 Minimum width < 0.4 lambda."; //----------------------------------------------------------------- // 9.2 MINIMUM SPACING //----------------------------------------------------------------- outdistance: layer=Metal2, options=(N), limits < 0.5, ID="Metal2 Space Error, Space is greater than 0.5", Comment="9.2 Minimum spacing < 0.5 lambda."; //----------------------------------------------------------------- // 9.3 MINIMUM OVERLAP OF VIA //----------------------------------------------------------------- indistance: layer1=Via, layer2=Metal2, limits < 0.1, ID="Via Overlap Error, Via is encloded by Metal2 < 0.1", Comment="9.3 Minimum overlap of via1 < 0.1 lambda."; //================================================================= // // End of Script // //=================================================================