Product Documentation
Virtuoso Electrically Aware Design Flow Guide
Product Version IC23.1, November 2023

D


Generating an EAD Technology File

An EAD technology file, named eadTechFile, is a binary encrypted file that contains electrical process parameters for RC extraction, halo distances, capacitance models, and the electromigration rules. While preparing the Layout EAD setup before running parasitic extraction and electromigration checks, you need to specify an EAD technology file in the Process Settings section on the Layout EAD Options form.

Virtuoso provides the eadModelGen executable utility under $CDSHOME/tools/catena/bin in the Virtuoso installation area. You can use this utility to generate an EAD technology file.

You would require a separate EAD technology file for every combination of process technology, layer stack, and process corner.

The following sections provide the details on how to use the eadModelGen utility to create or update an EAD technology file:

Prerequisites

Before running the eadModelGen utility, ensure that the following are available:

Generating an EAD Technology File

To run the eadModelGen utility, run the following command:

$ eadModelGen <ictfilename> | qrcTechFile

The utility reads the specified input ICT file or qrcTechFile to create a technology file and saves it at the current location. The input file is usually an ASCII file in the ICT format that contains the process description, but a binary qrcTechFile may also be used if an ICT file is not available.

For the <ictfilename> argument, you can provide the name of a technology file (ictfile, eadTechfile, or any other custom name) or a symbolic link to a technology file.

If the input file is an ICT file, EAD first looks for eadTechFile in the same directory. If found, loads it to update the content. Otherwise, loads the ICT file.

Depending on your requirements, you can also use one or more of the following optional command-line arguments:

Command-Line Argument Purpose
-h | -help

Prints help for the utility

-v | -version 

Prints the tool and library version information

-output_file

Saves the output in a file specified using this argument. If not specified, an output file with the default name, eadTechFile, is created.

-log_file

Saves output to the given log file

-dry_run

Displays the run information and options without actually running the command

-threads | -multi_cpu 

Runs the model generation jobs using the given number of threads

-update

Updates the complete ICT file contained in eadTechFile with the given ICT file.

You cannot update the eadTechFile using an ICT-EM file or emDataFile that is read only using the EAD Browser.

-update_em <EM-iRCX-file> 
-ircx_file <RC-iRCX-file>

Updates an existing eadTechFile with EM rules from an EM iRCX file.

While updating the EM rules, the command looks for matching layer names in the eadTechFile and the given EM iRCX file. However, when the layer names in these files do not match, you must provide an RC iRCX file along with the EM iRCX file by using the optional
-ircx_file argument. The RC iRCX file provides the missing layer mapping information.

You cannot update the eadTechFile using an ICT-EM file or emDataFile that is read only using the EAD Browser.

This command-line option updates only an existing EAD technology file. It cannot be used to update a QRC technology file.
-lsf_command

Runs the model generation jobs using LSF. Use this argument to provide a command string that defines how to submit jobs to an LSF queue in your specific LSF environment. For example:

-lsf_command "bsub -q lnx64 -m pto_opt -err err 
-o out " -lsf_number 100

Note that the LSF command must be enclosed in double quotes. You also need to specify the -lsf_number argument. It is also recommended that you use a unique project name (-P) when submitting your jobs so that you can easily query the job status later.

Depending on the process and the number of conductor layers, the LSF jobs might take a long time to generate models. Therefore, after submitting jobs to the LSF server, the eadModelGen command exits. When you find that LSF jobs have completed the run, you must execute the eadModelGen command again, with the same options except -lsf_command and -lsf_number, to compile all the models into a binary technology file. The following example steps show how to generate a technology file: 1. eadModelGen -lsf_command "bsub -q lnx64" -lsf_number 8 ictfile 2. Confirm that all the LSF jobs have completed their runs 3. eadModelGen ictfile

If you want the command to wait for the completion of jobs before exiting, use the -lsf_wait and
-lsf_wait_interval options.

The eadModelGen command internally uses the bjobs command to check the status of the submitted LSF jobs. If bjobs fails to return the status of the jobs, the command exits and shows an error message.

-lsf_number

Specifies how many LSF jobs to run in parallel. This argument is used with the -lsf_command argument. For example:

-lsf_command "bsub -q lnx64 -m pto_opt -err err -o out " -lsf_number 100
You can use the -threads with this argument for multi-threaded execution in LSF.
-lsf_wait 

Forces the eadModelGen utility to wait until all the LSF jobs have completed and eadTechFile has been created. This option prevents the command to exit immediately after running the LSF commands.

Note:

  • This argument is useful only when used with -lsf_command and -lsf_wait_interval.
  • If you use this command, you do not need to rerun the eadmodelGen utility after completion of LSF jobs.
-lsf_wait_interval <no-of-seconds>

Specifies the duration (in seconds) after which the eadModelGen utility needs to repetitively check the completion status of LSF jobs. After all the jobs are complete, the eadModelGen utility exits.

This argument is useful only when specified with -lsf_command and -lsf_wait.
-mail <email_address>

Sends an email to the given address after all model generation jobs have completed and the EAD technology file has been created.

After receiving the completion mail, you must execute the eadModelGen command again, with the same options except -lsf_command and -lsf_number, to compile all the models into a binary technology file.

-overwrite 

Forces overwrite of the existing eadTechFile if one already exists in the output directory.

-split

Splits the components of an existing eadTechFile into the given directory

-info

Prints the summary information about the specified ICT file, EAD technology file, or qrcTechFile. Provide the complete directory path to the file for which you want to print information.

-comments

Prints the comments embedded in the ICT file in addition to the summary information printed by -info.

Use this argument along with -info.
-no_cap_models

Creates an eadTechFile without capacitance models. The resulting eadTechFile can be used only for the R extraction mode, EM checking, and high precision C extraction, but cannot be used for fast C extraction.

The time required to generate this partial eadTechFile is much less than the time required to create the default file that contains the capacitance models.
An efficient way can be to get started using EAD very quickly using this option, that is with the R-only extraction, EM checking, and HPC. In parallel, you can generate the full eadTechFile that includes capacitance models too.
-no_load_models

When using an existing eadTechFile, instead of an ICT file, as the input to eadModelGen for model generation, you can specify this option. This will avoid loading the existing capacitance models in the eadTechFile, which will not be used anyway.

-use_ead2dc

Use the native EAD 2D solver instead of the default FEM 2D solver to generate the capacitance models for all the layers.  This option may be necessary if model generation fails to complete with the default FEM 2D solver.

-use_ead2dc_for_device_layers

Use the native EAD 2D solver instead of the default FEM 2D solver to generate the capacitance models for the local interconnect and device-level layers. The default FEM 2D solver will be used for all other layers. This option may be necessary if model generation with the FEM 2D solver fails to complete for these layers.

-no_cap_3d_models

Creates an eadTechFile without any 3D correction capacitance models.  As a result, EAD will not consider any 3D corner or crossover effects for normal capacitance extraction.  However, this does not affect extraction using the High Precision C Solver.

-skip_layer_type

Skips generating capacitance models involving layers of the given type. For example, diffusion, poly, lil, or metal.

-lithobias_file

Specifies the lithoBias rules file to be considered for the generation of eadTechFile. This file should be in the standard OpenDFM format provided by Si2. The lithoBias rules are added to eadTechFile.

If the input file for the eadModelGen command is a QRC technology file that contains lithoBias rules, these rules are automatically included in the output eadTechFile. You can use the eadModelGen -info command to view the names of layers that include lithoBias rules.
-combination_layers

Limits the number of capacitance models to be generated to the set of layer combinations specified by the combination_layers section in the ICT file.

-protected_process

Protects the process information in the resulting eadTechFile so that the ICT process description cannot be extracted from the file using the -split option.

-max_spacing_factor

Overrides the default halo spacing distance per layer, which is the distance that EAD uses to search for neighboring shapes.  Specify a factor to be multiplied by the min_spacing value in the ICT file. This option may be necessary in order to generate capacitance models for processes that define a very thick substrate, or thick oxide layers below the first conductor layer.

-max_simulation_widths

Specifies that if the ICT file contains manual_simulation_points, use the simulation_widths table to define the maximum width per conductor layer. This limits the width ranges used while generating models.

-max_width_file <file-name>

Specifies an optional file that defines the maximum width for each conductor layer in the ICT file. Other than the comments marked with #, each line in the given file should consist of a layer name followed by a maximum width value (in microns).

It is required that the maximum width value should be at least 9 times the minimum width value for the given layer.
-status

Returns the status of model generation jobs for the given ICT file.

Important Points to Note

Example Scenarios of EAD Technology File Generation

This section provides some of the possible example scenarios in which an eadTechFile can be generated with different requirements.

Scenario 1: You need to update an existing eadTechFile with a new ICT file

You can update an existing eadTechFile with a new ICT file only if there is no change in the ICT file that would affect the capacitance models. For example, in cases where the existing eadTechFile does not contain the EM rules, but now you need to include the EM rules added to the ICT file. In this case, do the following:

  1. Change the name of the new ICT file to a name other than ictfile.
  2. Run the eadModelGen utility with this following command:
    $ eadModelGen -update <new_ict_file_name> eadTechFile

Scenario 2: You need to extract all the components contained in the given eadTechFile.

You can do this by executing the following command:

$ eadModelGen -split <tmp_dir> eadTechFile

If you run this command on a protected eadTechFile, the specified directory will contain all the contents of eadTechFile except the ICT File.

The following examples describe how the eadTechFile is split in different cases:

Scenario 3: You need to protect the process information in the eadTechFile.

You can use the -protected_process command-line argument, as shown below.

$ eadModelGen -protected_process -threads 16 ictfile
If the eadTechFile is protected, it is not possible to extract the ICT file using the -split command-line argument.

Scenario 4: The generation of the complete eadTechFile with capacitance models takes a very long time (a few hours), so you need to generate a partial eadTechFile without capacitance models.

You can do this by executing the following command:

$ eadModelGen -no_cap_models -threads 16 ictfile

Scenario 5: Your ICT file contains an explicit specification of the layer combinations required for model generation in the manual_simulation_combinations section. You need to include only those layer combinations in the eadTechFile instead of automatically generating all the possible layer combinations.

To do this, run the following command to limit the model generation to only the specified layer combinations:

$ eadModelGen -combination_layers -threads 16 ictfile

Scenario 6: You need to verify some details for an existing eadTechFile.

You can do this using the -info command-line argument, as shown below:

$ eadModelGen -info -log_file info.log eadTechFile 
eadModelGen version 7.2.6r910, built 2014/03/31 23:01:34, platform opteron (64bit)
Current time is Tue Apr 01 11:19:49 2014
Loading technology file : eadTechFile
Technology File : ./eadTechFile
Process Name    : cln28hp_1p10m_7x2r_typical
Model version   : 6
Created on      : 2013/08/11 14:39:47
Created by      : eadModelGen version 7.2.6r543 (built 2013/08/05 23:41:52)
Layers          : 23
Diffusion            : 1 (active)
Poly : 1 (poly)
Conductors : 10 (M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, C1, C2, B1, B2)
lithoBias : 0
Vias : 11 (odCont, polyCont, VIA1, VIA2, VIA3, VIA4, VIA5, VIA6, VIA7, VIA8, VIA9)
EM Models : 0
Cap models   : 2944

Scenario 7: You have a QRC technology file, which contains a copy of the ICT file (including the EM rules). You need to use this for eadTechFile generation.

In this case, you can run the following command to generate eadTechFile from qrcTechFile:

$ eadModelGen -threads 16 qrcTechFile

Scenario 8: You have an EAD technology file, but the EM rules are missing. You need to update the eadTechFile to include EM rules from an iRCX file.

You can do this by performing the following steps:

  1. Update the EAD technology file using the eadModelGen utility, as shown below.
    $ eadModelGen -update_em <iRCX file> <eadTechFile>
  2. (Optional) Confirm that the EAD technology file has EM models by using the eadModelGen utility, as shown below.
    $ eadModelGen -info eadTechFile

The EM rules get added to the existing eadTechFile in lines beginning with EM models.

Scenario 9: Run eadModelGen with LSF using 200 jobs, wait for the LSF jobs to complete (checking every 10 minutes), and then receive an email when eadTechFile has been created.

You can do this by submitting an LSF command and using the supporting options, as shown below.

eadModelGen -lsf_command "/grid/sfi/farm/bin/bsub -P EAD:6.1.8:RD:gpdk090 -R
2015_lnx86_test -W 48:00 -q lnx64" -lsf_number 200 -lsf_wait -lsf_wait_interval
600 -mail abc@mailaddress.com ictfile

The LSF command string will depend on your specific LSF installation. It is recommended to use a unique project name (-P) when submitting your jobs so that you can query the job status later using that name. In the above example command, a project name has been provided using -P. You can query its status as shown below.

$ bjobs -P EAD:6.1.8:RD:gpdk090

Updating an EAD Technology File

As the foundries update the ICT and processes on a regular basis, you might also need to update the EAD models in the eadTechFile. For this, you can use the -update command-line argument to update the eadTechFile without regenerating the capacitance models.

Some examples of changes in ICT that do require generation of new EAD models are given below.

You might also need to update the eadTechFile if some modeling improvements have been done.

Some examples of changes in ICT that do not require generation of new EAD models are given below.

After upgrading Virtuoso, you need not update or regenerate the eadTechFile because it is backward compatible.

EM Rule Support in EAD

This section lists the differences between EM rules supported in EAD and Voltus-Fi:

Voltus-Fi-XL supports parameters for only limit-based EM analysis. The following parameters can be used to specify EM rules in the ICT EM file. The EM rules might also be embedded in the ICT file or the qrcTechFile.

Parameter Name

Description

em_vcwidth <value>

Optional parameter for via layers that defines the minimum size via that is used by the software to identify single square via.

This parameter is similar to the viaWidthList parameter in emDataFile.

em_W_n

Optional parameter that specifies the wire width in microns below which a line is considered narrow. All lines are considered wide unless you specify otherwise using this parameter

It helps to select the rule between em_jmax_*_w and em_jmax_*_n. If w < em_W_n , then em_jmax_*_n is selected, otherwise em_jmax_*_w selected.

em_jmax_dc_rms_metal_line_factor

Defines the relationship between the value of power on metal lines and the Irms rating values for DC RMS analysis.

em_jmax_ac_rms_metal_line_factor

Defines the relationship between the value of power on metal lines and the Irms rating values for AC RMS analysis.

em_ac_rms_context_aware_pitch_num

Context-aware relaxation keyword.

Specifies the pitch count values for RMS relaxation for AC RMS analysis in the context-aware RMS Relaxation flow.

For example,

em_ac_rms_context_aware_pitch_num 5

The context-aware RMS Relaxation flow is foundry-specific. For more information, contact your Cadence representative.

em_dc_rms_context_aware_pitch_num

Context-aware relaxation keyword.

Specifies the pitch count values for RMS relaxation for DC RMS analysis in the context-aware RMS Relaxation flow.

For example,

em_dc_rms_context_aware_pitch_num 5

The context-aware RMS Relaxation flow is foundry-specific. For more information, contact your Cadence representative.

em_jmax_ac_rms_context_aware_factor

Additional factor to be multiplied for EM limits to take into consideration the context-aware RMS relaxation flow.

For example,

em_jmax_ac_rms_context_aware_factor 1.5   srms_0>= 0.008 srms_1> 0.0004

Where,

srms_0 is the worst srms value in the neighboring area within the context-aware region of the parasitic.

srms_1 is the second worst srms value in the neighboring area within the context-aware region of the parasitic.

The context-aware RMS Relaxation flow is foundry-specific. For more information, contact your Cadence representative.

em_jmax_dc_rms_context_aware_factor

Specifies the benefit factor for RMS relaxation for DC RMS analysis in the context-aware RMS Relaxation flow.

Additional factor to be multiplied for EM limits to take into consideration the context-aware RMS relaxation flow.

For example,

em_jmax_dc_rms_context_aware_factor 1.5   srms_0>= 0.008 srms_1> 0.0004

Where,

srms_0 is the worst srms value in the neighboring area within the context-aware region of the parasitic.

srms_1 is the second worst srms value in the neighboring area within the context-aware region of the parasitic.

The context-aware RMS Relaxation flow is foundry-specific. For more information, contact your Cadence representative.

em_segment_length

A process definition parameter that determines how to calculate the length of a wire segment. This parameter determines whether the segment length is of the type perimeter, centerline, or total. The difference between the different length types is as follows:

  • perimeter: specifies that the length calculation is along the wire’s outer edge boundary. This value is used for 28nm process nodes.
  • centerline: specifies that the length is extended to the edge of the segment along the centerline path. This value is used for 20nm process nodes.
  • total: specifies that the segment length is calculated by adding the path lengths of all the resistors in the segment.

em_recover

This parameter is supported in the parser and in the EM process, but it is not used during EM analysis.

Optional parameter that specifies the recovery factor used for calculating the average current density with recovery. You can set the recovery factor to -1.0 when you want to account for the average of the absolute current (avg(abs(current))) so that the negative current does not cancel the positive current values in arriving at the average current result.

Default: 1

Range: A positive integer or floating point number

Current Density (JMAX) Keywords

The table below lists the Current Density (JMAX) keywords that can be specified in the ICT EM file.

Keyword

Description

em_jmax_dc_avg*

Optional keyword that specifies the DC AVG analysis.

em_jmax_ac_avg*

Optional keyword that specifies the AC AVG analysis.

em_jmax_dc_peak*

Optional keyword that specifies DC PEAK analysis.

em_jmax_ac_peak*

Optional keyword that specifies AC_PEAK analysis.

em_jmax_dc_rms*

Optional keyword that specifies DC RMS analysis.

em_jmax_ac_rms*

Optional keyword that specifies AC RMS analysis.

em_jmax_ac_rec

Optional keyword that specifies the maximum recovery AC current analysis.

Where star ‘*’ implies that ‘_w’ and ‘_n’ rules are also supported.

For example,

Rules for Defining EM Parameters

An example of the EM rule for defining the em_jmax_dc_avg parameter is provided below:

[em_jmax_dc_avg <value> | <value_1> <area_1/width_1> [...] | EQU <fn(E)>]
[jmax_factor <temp1> <scale1> [<temp2> <scale2> ...]]
[jmax_life <life1> <scale1> [<life2> <scale2>.......]]
[current_direction up | down | both]
[conditions]
[single]
[power_rail/power_grid    ]
[priority==<priority no.>]
[device==”<device model names>”]
[sub_conductor=="<subconductor names>"]
[color=="<list of color no.>"]
[mask==<mask no.>]
[via_range <value>]

All other EM parameters are defined with the same structure but apply to different characteristics of the em_model (peak current versus average for instance). The following rules apply to all the limit-based em_model parameters:

Rules for Specifying Via Area

You can specify PWL in either one of the following ways:

EM Rule Selection Priority

This section details the order of priority in which the EM rules are applied by Voltus-Fi-XL based on the specified keywords. The order of priority of keywords in descending order is provided below:

  1. device --> highest priority
  2. sub_conductor
  3. bridge_via
  4. priority
  5. power_grid/power_rail
  6. color
  7. mask
  8. current_direction
  9. Conditions
  10. Area matching in case of PWL
  11. Base rule
  12. Optimistic/pessimistic rules --> lowest priority

These are detailed below.

For more information about EM rules, see Voltus-Fi Custom Power Integrity Solution L User Guide and Voltus-Fi Custom Power Integrity Solution XL User Guide.

Solvers for Generation of Capacitance Models

eadModelGen can use different solvers for capacitance model generation. Each solver has its own advantages and limitations. Depending on your accuracy requirements, choose a solver by using appropriate command options.

The solvers available for capacitance model generation are listed below:

On some processes, particularly for the FEOL and MEOL layers, the default FEM 2D solver may not provide the best option for accuracy. In such cases, you can run the EAD 2D solver by using the -use_ead2dc command-line option. You can also run a hybrid mix of these solvers by using the -use_ead2dc_for_device_layers command-line option. With this option, EAD automatically runs the EAD 2D solver for any models involving FEOL or MEOL layers, and invokes the default solver for the BEOL layers.

Guidelines for Using a Solver


Return to top
 ⠀
X