Product Documentation
Virtuoso ADE Assembler User Guide
Product Version IC23.1, November 2023

14


Running Fault Simulations

As a part of the Legato™ Reliability Solution, fault simulations in ADE Assembler provides the capability to run defect-oriented tests on analog IC designs. These tests allow you to evaluate the ability to eliminate a die with manufacturing defects and resulting test escapes that cause field failures. It can also be used to optimize wafer test, reducing the number of tests required to achieve the target defect coverage by eliminating over-testing and potentially reducing the number of tests.

A typical fault analysis consists of fault injection, fault analysis, and test optimization for better fault coverage. Analog fault analysis provides the capability to estimate fault coverage by generating a detection matrix. In addition, it can be used as part of functional safety analysis.

Some faults are more likely to occur than others; therefore, a test that detects the more likely faults will have a higher coverage than the one that detects the less likely faults. You can calculate the defect coverage using the likelihood-weighted sum of the detected faults divided by the likelihood-weighted sum of all simulated faults.

The defect detection matrix can be obtained by comparing the faulty simulation results with nominal (faultless) data. You can further optimize the test to improve the defect coverage based on the defect detection matrix.

In functional safety applications, fault detection is tracked for both functional and diagnostic (checker) modules but reported separately. Functional safety report can be generated based on assert violations of fault analysis results.

The following sections in this chapter provides details on how to use ADE Assembler for these purposes:

You can view at Performing Fault Simulation in Virtuoso ADE Assembler using Legato Reliability Solution.

Prerequisites

Ensure that you have set the path to the required simulator as indicated by the table given below.

Design Analysis Type Simulator

Analog

Direct Fault Analysis

Transient Fault Analysis

Spectre 19.1 ISR7 or higher versions

Mixed-Signal

Direct Fault Analysis

Transient Fault Analysis

AMS Flex flow with a combination of Xcelium 19.03 s006 and Spectre 19.1 ISR7, or higher versions

Preparing the Setup for Fault Simulation

Before running a fault simulation, do the following in the ADE Assembler setup:

Setting up Faults

You can set up faults by using the Fault Setup assistant in ADE Assembler.

To open the fault setup, do any one of the following:

To prepare the setup in the Fault Setup assistant:

  1. Specify the DUT library, cell, and view for which you plan to run fault analysis simulation.
    To do this, in the Fault Setup assistant, double-click the value cell for DUT Library/Cell/View.
    The Select DUT Library / Cell / View form is displayed.
    Select the library, cell, and view to which this fault setup has to be applied.
    Important Points to Note:
    • Other fields on the assistant remain disabled until you select the DUT.
    • Ensure that the selected DUT is not a top-level design.
    • Ensure that the selected DUT is used by all tests enabled for the simulation run.
    • If you change the DUT later after configuring the faults, you can retraverse the design to reflect the changes in the Fault Setup assistant.
    • To simplify the fault simulation setup, ADE Assembler assumes that multiple tests in a maestro view are used only for one DUT. Even if you use multiple tests for simulating the design, they share the fault setup and the results also show a combined view for all tests. If you want to work on different DUTs, it is recommended to create multiple maestro cellviews.
    • If your test setup contains config sweeps, all swept cellviews use the common fault list created for the design specified in the DUT Library/Cell/View field of the Fault Setup assistant. The fault list is created using the base configuration, which includes the design setup assuming no config sweep is defined. You need to ensure that the swept cellviews use the same device under test so that the fault list remains accurate for all runs. Depending on the changes in the config sweep, you might find that some faults are not simulated for a swept cellview. For example, if you replace a block by a behavioral block, in that case, all faults inside that block become invalid.
  2. Ensure that the local variables for the enabled test do not contain sweep values. Local sweeps are currently not supported by fault simulation.
  3. Specify faults to be injected into the design, which is the DUT selected in step 1.
    There are three ways in which you can specify the faults to be injected in the DUT:
  4. (Optional) Create fault groups to group the faults that you would like to use together in a simulation.
    By default, all rules and individual faults defined in the Rules and Individual Faults tree in the Fault Setup assistant are used. To run any other group in the simulation run, select the name of that group from the Fault Group to Run drop-down list on the top of the Fault Setup assistant.
The rules format has changed from IC 6.1.8 ISR8. If your maestro cellview contains fault rules created before this release, remove those manually and recreate new faults.

Specifying Global Preferences for Fault Setup

Before defining a fault to be injected, verify that the global or default options to be used for different types of faults have the required values. These global preferences can be specified on the Virtuoso ADE Fault Setup Global Preferences form.

To open the Virtuoso ADE Fault Setup Global Preferences form:

The Virtuoso ADE Fault Setup Global Preferences form is displayed.

Configure your preferences on the different tabs of this form:

Injecting Faults in a Design

You can inject either Bridge, Open or Stuck-at faults into the design. The Fault Setup Assistant provides the following methods to specify the faults to be injected:

Using Fault Rules

Fault rules provide a quick way to create faults for multiple instances or nets that meet the given criteria. To define the rules for fault creation, use the Fault Rules form.

To create faults based on fault rules, perform the following steps:

  1. In the Fault Setup assistant, expand the Rules and individual faults tree.
  2. Right-click Fault Rules, and choose the Add Bridge, Add Open, Add Stuck-at, or Add Custom command depending on the type of fault for which you are defining the rule.
    The Fault Rules form is displayed.
    By default, the rule is defined by using the * wildcard in the Instances and Pin Names fields.
  3. Modify the values in the Fault Rule Setup section to define the rules or criteria for fault creation. For example, you can specify the names of instances as /I3 /I3/I4, and pin names as D S.
    See Fault Rules Form for mode information.
    The values displayed in the Weight Expression and Weight Factor fields are taken from the Weight tab of the Virtuoso ADE Fault Setup Global Preferences form
  4. In the Fault Rule Preview section, click Refresh to view the list of possible faults that can be created using the rule defined in this form.
    When you click Refresh, ADE Assembler runs Spectre info analysis that generates a fault list based on the instances, devices, and pins specified by the criteria defined by the given rules. A progress bar indicates the completion status of the info analysis.
    When the info analysis is complete, the resulting list of faults is shown in the Faults table at the bottom of this form. The total count of faults is displayed in the Fault Count field.
    While identifying all faults based on the specified rule, Spectre info analysis uses fault collapsing or the weight expression to calculate the absolute fault, which is the likelihood count of a fault. This absolute weight value is displayed in the Absolute Weight field in the preview table. ADE Assembler uses this value later for fault normalization while generating fault preview before simulation.
  5. Review the list of faults. If required, edit the rules again and click Refresh ( ) in the Preview section to review the list of possible faults.
    You can configure the type of information to be displayed in the Faults table by clicking Configure preview settings, and selecting or deselecting an option.
    You can also configure the columns to be displayed by using the options on the General tab of the Virtuoso ADE Fault Setup Global Preferences form shown below.
  6. When the fault rule setup and the resulting faults are final, click OK to close the form.
    The rule is added to the <fault-type> tree within the Rules and individual faults tree.
    A rule can be edited or deleted later by using the Edit and Delete commands from the context-sensitive menu of that rule. To delete multiple faults at a time, press the Ctrl key and select the faults to be deleted, right-click and choose Delete.

Fault Rules Form

Form Field Description

Type

Type of fault to be injected. Either Bridge, Open (Terminal-Based), Stuck-at, or Custom.

Bridge Resistance (ohm)

Resistance between two nodes of a bridge fault.

Default value: 100

Weight Expression

An expression that defines the likelihood of faults for a block during fault generation. The likelihood of a fault occurrence can be based on the circuit element area, proximity of the adjacent interconnect, length of the interconnect, or other factors.

In ADE Assembler, you can define a weight expression using device parameters. For example, w*l.

Default value: 1

When the parameters are not specified or contain multiple types of devices or models, weight expressions may not be evaluated for some of the models. In such situations, the expression can result into 0. To avoid this, you can use the fmin function in weight expressions.

Example: fmin(w*l, 1e-12)

In this example, fmin prevents the weight from becoming zero if the fault instance does not have parameters w or l. If w*l cannot be evaluated, 1e-12 will be assigned as the weight value.

Similarly, fmax limits the values of weight expressions. For example, fmax(0.1, 0.001*r). In this example, fmax clamps the maximum resistance which is used as weighting function.

For information about fault weighting and its usefulness in the calculation of coverage report, see Weighted Likelihood Calculation in Spectre Classic Simulator, Spectre APS, Spectre X, and Spectre XPS User Guide.

Weight Factor

A value that defines the weighting factor for a given block or rule. Weight factor is used for the normalization of faults across fault bocks or rules when faults in a particular fault block have very high or very low likelihood as compared to the faults in other fault blocks.

Default value: 1

Rule Name

Name to be assigned to the fault rule. This rule name prefixed with the default prefix for each rule type is shown in the rule summary shown in the Fault Setup assistant.

For example: RB_myRule(/I4 * where * on * with res = 100)

Default value: ""

Open Resistance (ohm)

Resistance between two nodes of an open fault.

Default value: 10k

Stuck At Net

Name of the net to be used to short the terminals of the specified devices. This field is available only for stuck-at faults.

Custom Type

Type of custom fault to be inserted. These custom faults can be available in text files or in schematics.

Possible values are:

  • Custom Insert: Generates custom faults of fault subcircuit to be inserted at specific terminals of the given devices. For example, a custom fault of subcircuit to be inserted at the drain, gate, and source terminals of bsim4 devices.
  • Custom Open: Generates custom open faults of fault subcircuit to be inserted at specific terminals of the given devices. For example, a custom open fault of subcircuit to be inserted at the drain, gate, and source terminals of bsim4 devices.
  • Custom Replace: Generates custom faults of fault subcircuit to replace specific devices. For example, a custom fault of subcircuit to replace bsim4 devices.

Fault Custom

Name of the subcircuit to be used to insert custom faults.

Design Hierarchy Filter

This section contains settings that are used to filter devices on which faults are to be injected.

Use Netlist Syntax

Specifies whether to use the netlist format for instance names. For example, I0.I2

By default, this check box is not selected and you can specify the instance names in the schematic syntax.

When using the netlist syntax, you can specify only one instance in the Instance field. When using the schematic syntax, you can specify multiple instance names.

Fault Extract

Specifies where to inject layout-based faults.

Possible Values:

  • spf: Generates a fault list that is compatible with the post-layout netlist.
  • sch: Generates a fault list that is compatible with the schematic netlist.
  • no: Layout-based fault list is not generated. This is the default value.

If you choose spf or sch, ensure that you have specified at least one DSPF file in the Simulation Files Setup form for the test.

When this field is set to sch or spf, an additional field Fault Layer is displayed in the Design Hierarchy Filter section of this form.

Instance

Name of an instance below which you want to inject the faults. Either specify the name of an instance or use the * wildcard to inject faults for all instances in the design hierarchy for which the other rules specified on this form are also met.

When the Use Netlist Syntax check box is deselected, you can select an instance from the schematic by clicking (...) to the right of this field. You can also use the wildcards to specify instance names in netlist syntax.

Exclude Instances

A space-separated list of instance paths that you want to exclude while injecting faults in the given design hierarchy.

You cannot use the * wildcard to specify multiple instance paths.

When the Use Netlist Syntax check box is deselected, you can select one or more instances from the schematic by clicking (...) to the right of this field. You can also use the wildcards to specify instance names in netlist syntax.

Exclude Subcircuits

A space-separated list of subcircuit names that you want to exclude while injecting faults in the given design hierarchy.

You can use all wildcards in subcircuit names.

Minimum Capacitance

Specifies the minimum capacitance an extracted parasitic capacitor must have to be identified as a short defect.

This field is visible only when the Type field is set to Bridge or Stuck-at and Fault Extract is sch or spf.

Minimum Resistance

Specifies the minimum resistance an extracted segment resistor must have to be identified as an open defect.

This field is visible only when the Type field is set to Open and Fault Extract is sch or spf.

Fault Level

Defines the hierarchical level of the design to be considered during the fault list generation. By default, Spectre generates faults in subcircuits at all levels of the design.

Fault Layer

Specifies the layer number of the layers on which layout-based faults are to be identified. Possible values are:
  • 0: Identifies faults on all layers including the connectivity between layers.
  • [x y ...]:Identifies faults on the specified layers
  • [(x,y)]: Identifies faults for all the layers in the given range excluding the connectivity between layers in both cases.
This field is visible only when the Fault Extract field is set to sch or spf.

Fault Insertion Restrictions

This section contains settings that define restrictions to be applied while faults.

Fault Devices

A space-separated list of fault devices on which you want to inject faults. You can use the * wildcard to specify multiple device names matching the given criteria.

By default the field is set to *, which means that the faults are to be injected on all the devices in the specified design hierarchy. It is mandatory to provide a value in this field.

Pin Names

A space-separated list of pin names on which you want to inject faults.

If you want to inject faults on all pins of the specified instances, specify * in this field. It is mandatory to provide a value in this field.

This field is not available when custom faults with type Custom Replace are inserted.

Enable IEEE 2427 Mode

Enables the IEEE 2427 mode for Spectre info analysis.

Enable Fault Collapse

Enables fault collapsing to remove equivalent faults. When you enable fault collapsing, Spectre collapses each set of equivalent faults within a fault rule into one and assigns an absolute weight, which is a summation of the absolute weight assigned to each equivalent fault collapsed into it. For more details on fault collapsing, refer to Fault Collapsing and Weighting Function.

This check box is enabled only when the Apply fault collapsing to setting on the Virtuoso ADE Fault Setup Global Preferences form is set to Rule Specific. That means you can enable or disable fault collapsing at a rule level only if allowed at the global level.

Extra Options

Additional options to be used by the Spectre info analysis that is run to inject faults.

Ensure that the options are written in a format supported by Spectre.

Creating Individual Faults

If you want to create a fault with unique settings, instead of using fault rules, you can create individual faults of type bridge, open, or stuck-at.

Creating Individual Bridge Faults

To create an individual bridge fault:

  1. Expand Individual Faults in the Fault Setup assistant.
  2. Right-click Bridge and choose Add Bridge.
    Alternatively, right-click Individual Faults and choose Add Bridge.
    The schematic of the design is displayed.
  3. Select two nets for the bridge.
    A bridge fault is defined to be added between the selected nets.

    By default, the fault uses the default resistance value and weight factor specified on the Virtuoso ADE Fault Setup Global Preferences form. You can modify the resistance value for a fault rule by using the Modify Individual Fault command in the context-sensitive menu of a fault. This command opens the Modify Individual Fault form that you can use to modify the resistance value or the weight of the selected fault.

Creating Individual Open Faults

To create an individual open fault:

  1. Expand Individual Faults in the Fault Setup assistant.
  2. Right-click Open and choose Add Open.
    Alternatively, right-click Individual Faults and choose Add Open.
    The schematic of the design is displayed.
  3. Click a net on the schematic.
    The Individual Open Defect form is displayed. This form displays a list of pins through which the selected net is connected to the instances in the design.
  4. Using the arrows, move the terminals to the Left or Right list to define the placement of the open fault.
    The fault will be injected in such a way that the terminals listed in the Left list are on the left and the terminals listed in the Right list are on the right of the open resistor is injected on the selected net. The Individual Open Defect form lets you customize the cut set of the net.

Creating Individual Stuck-at Faults

To create an individual stuck-at fault:

  1. Expand Individual Faults in the Fault Setup assistant.
  2. Right-click Stuck-at and choose Add Open.
    Alternatively, right-click Individual Faults and choose Add Stuck-at.
    The schematic of the design is displayed.
  3. Click a net that you want to use for the stuck-at fault.
    A new fault is created by using the selected net. The resistance value used for this fault is taken from the Virtuoso ADE Fault Setup Global Preferences form.

Creating Custom Faults

You can create the following types of custom faults:

Subcircuits for Custom Faults

You can specify subcircuits to be used in custom faults in the following two ways:

Fault Setup for Custom Faults

Similar to the other types of faults, specify fault injection rules on the Fault Rules form. The following form fields are specific to custom faults:

Related Topics

The Fault Rules form

Using Fault Files

You can import the faults defined in a text file directly into the fault setup. All faults imported from the fault file are added to a group in the setup. For more details, refer to Importing Faults from a File into a Group.

Importing Fault Rules from Other Cellviews

If the fault rules defined in another cellview are relevant for the testbench in the current cellview, you can import the rules from those cellviews by using the Import Setup form.

If the destination cellview does not contain any fault rule, the complete set of fault rules are imported from the source cellview. However, if the destination cellview contains fault rules, the value of the Operation field on the Import Setup form defines how the rules from the source and destination cellviews are used.

The following rules describe the import mechanism.

Value Rules

Retain

  • If the names of imported rules do not match the rules already defined in the destination cellview, they are copied.
  • If the names of imported rules conflict with the rules already defined in the destination cellview, the rules from the source are not copied.

Merge

  • All fault rules from the source cellview are copied to the destination cellview.
  • If the names of imported rules conflict with the rules already defined in the destination cellview, the imported rules are used. The existing rules are overwritten.
  • All unique existing fault rules are retained in the destination.

Overwrite

  • All fault rules are removed from the destination cellview.
  • All fault rules from the source cellview are copied to the destination cellview.
  • The fault rules in the destination cellview and the source cellview are the same.

Setting Up Fault Rules for Layout-based Faults

Layout-based fault rules are useful when you want to inject faults that consider parasitics from DSPF files. To create rules for layout-based faults:

  1. In the Simulation Files Setup form, specify the paths to the DSPF files extracted from the layout.
  2. In the Fault Rules form, choose a fault type in the Type field.
  3. Enter specifications for the fault rule in the Fault Model section.
  4. From the Fault Extract drop-down list, select one of the following values:
    • sch: Injects faults that are compatible with the schematic-based netlist
    • spf: Injects faults that are compatible with the layout-based netlist

    Depending on the fault type, a new field is displayed in the Design Hierarchy Filter section. When the Type field is set to Bridge or Stuck-at, the field is named Minimum Capacitance. When the Type field is set to Open, the field is named Minimum Resistance.
  5. Enter a valid value in the Minimum Capacitance or Minimum Resistance field.
  6. Complete the rule setup and close the form.
    A new fault rule is created and added to the Fault Setup assistant.

If required, create more fault rules for other fault types. If you want to use the rules injected by multiple rules in a simulation, create a new group and add the fault rules to that. The tool calculates a unique set of faults and shows the count in the Add to Fault Groups form. Choose a group name and click OK.

You cannot include rules for layout-based faults and schematic-based faults in the same group. Fault sampling too does not work for layout-based faults.

Related Topics

Injecting Faults in a Design

Creating Fault Groups

Fault Rules Form

Creating Fault Groups

If you want to use some fault rules together on a design hierarchy, you can bundle them together in fault groups.

By default, the fault simulation is run for the faults specified in the Rules and Individual Faults tree in the Fault Setup assistant. This is indicated by the green highlight in this assistant. If you want to consider any other fault group for the simulation run, select the name of that fault group from the Fault Group to Run drop-down list.

To create a fault group:

  1. In the Fault Setup assistant, expand the Fault Groups tree and click Click to add.
    A new item is added to the tree and the group name field becomes editable.
  2. Type a name to be used for the group, and press Enter.
    A new group is created with the given name and its fault count is set to 0. This group is also added to the Fault Group to Run drop-down list.

Related Topics

Adding Faults to Fault Groups

Creating a Fault Group by Copying An Existing Group

You can also create a fault group by copying an existing group. The newly created group gets the faults from the source group. You can modify it by adding or removing faults.

To create a copy of a fault group:

A copy of the group is saved with the default name in the format source-group-name_copy_incremental-num. You can rename it as required.

The status of the new fault group is same as that of the source group name.

Adding Faults to Fault Groups

At a given point of time, there can be many faults and fault rules defined in the Fault Setup assistant. You can include a similar set of faults in a group to manage them together or to run simulation for all faults grouped together.

You can add faults to a fault group in two ways:

To add faults defined in the Fault Setup assistant to a fault group, perform the following steps:

  1. Select one or more fault rules or individual faults to be added to the group.
  2. Right-click and choose Add to Fault Group.
    If no fault list is generated for the selected fault rules or their fault list is not up to date, the tool shows a message to prompt you whether you want to generate the fault list before adding the rule to the fault group. Click Yes if you want to continue.
    If you are sure that you want to always generate fault list in such cases, set the suppressAddToFaultGroupsPrompt environment variable to t.
    The Add to Fault Group(s) form is displayed.
    In the Unique faults being added field, the form displays the total count of unique faults resulting from the rules in different groups.
  3. Hold the Ctrl key and select the names of groups in the Groups list.
  4. Click OK.
    The faults are added to the selected groups.
    If you have rules for layout-based faults, you cannot group them together with schematic-based faults in a fault group.
    If you have created fault groups, ensure that in the Fault Group to Run drop-down list, you select the group that you want to use for the simulation run. The selected group is highlighted in green. You can also preview the list of faults included in a fault group. For more details, refer to Previewing Faults in a Fault Group.

Importing Faults from a File into a Group

You can import the faults defined in a text file directly into the fault setup. All faults imported from the fault file are added to a group in the setup.

To import the faults from a file, perform the steps given below.

  1. In the Fault Setup assistant, expand the Fault Groups tree.
  2. Click Click to add and specify a name for the fault group that will contain the faults imported from the fault file.
    The faults imported from the fault file are added to this fault group.
  3. Right-click on the newly added fault group and choose Import Fault File from the context-sensitive menu.
  4. In the Choose Fault Files form, browse the required CSV file path, and click Open.
  5. The specified CSV file containing the faults is added to the setup.
    The faults given in the fault file are read and their count is reflected in the fault group. The fault group is also added to the Fault Group to Run drop-down list.

The fault file is required to be written in a specific CSV format that is read by ADE Assembler. The following example shows the format to be used:

Name,Type,From,To,OpenTerminals,Net,Resistance
B1,Bridge,gnd!,/<dutInst>/I10/vdd!,,,100
OT1,Open,,,/<dutInst>/I27:B,/<dutInst>/net21,10K
ON1,Open,,,/<dutInst>/I5/M3:G,/<dutInst>/clk,10K
S1,StuckAt,/<dutInst>/net44,/<dutInst>/I2/vddd!,,,100

Deleting Fault Rules and Fault Groups

To delete fault rules,

  1. Select one or more fault rules.
  2. Right-click and choose Delete.
    The tool displays a message with a list of selected fault rules seeking confirmation for deletion.
  3. Click OK to proceed with deletion.

Similarly, to delete fault groups, select one or more fault groups, right-click, and choose Delete Fault Group from the context menu.

Specifying Fault Sampling Options and Auto Stop Criteria

When the fault universe consists of a large number of faults, it is practically impossible to run simulations for all the faults. You can choose to run simulation for a subset of faults or apply a stopping criteria to automatically stop simulations after a specific coverage criteria is met.

Specifying Fault Sampling Options

Sampling helps in selecting a subset with fewer faults that can represent the whole fault universe. This helps in estimating the overall coverage with very less simulations.

In ADE Assembler, you can use the following sampling methods supported by Spectre:

For details and guidance on these sampling methods, see Fault Selection and Sampling in Spectre Classic Simulator, Spectre APS, Spectre X, and Spectre XPS User Guide.

To specify sampling options for fault analysis:

  1. Click Sample the faults on the Fault Setup assistant toolbar.

    The Sampling and Stop Criteria Settings form is displayed.
  2. Select Enable Sampling.
  3. Choose a sampling method from the Sampling Method drop-down list.
  4. In the Perform Sampling By field, choose one of the following options to specify how you want to choose samples:
    • Number: Uses a specific number of faults. This is selected by default.
      If you choose to perform sampling by number, specify the number of random samples to be selected in the Number of Samples field.
    • Ratio: Uses a percentage or ratio of the possible samples.
      If you choose to perform sampling by ratio, the Sample Ratio (%) field is enabled. Specify the percentage of the samples to be selected.
  5. In the Seed Value field, specify the seed value to be used as the starting point for random sample generation.
  6. If the sampling method is randomuniform or randomweighted, sampling is performed by replacement, which means that a selected fault is retained in the sampling pool and may be sampled again. With this method, the number of faults simulated can be fewer than the number of samples selected. Therefore, fault detection is done at a specific confidence level. The default confidence level is 97%, but you can change it in the Confidence Value (%) field.
  7. Click OK to save the sampling options and close the form.

The sampling options specified on this form are used to generate samples of faults used for simulation. The Fault Group Preview form also shows the sampling information and an effective list of faults.

For the randomuniform or randomweighted sampling methods, Spectre internally uses the Clopper-Pearson formula to estimate the confidence interval when the sampling based simulation is finished. After the results are displayed in the Faults results view, you can change the value in the Confidence (%) field or the confidence interval calculation formula in the Interval Option drop-down list on the toolbar and check the confidence interval.

Spectre supports two approaches for confidence interval calculation with the given confidence level:

For more details about these approaches, see Calculating Confidence Interval for Different Sampling Methods.

Specifying Automatic Stopping Criteria

To specify auto stop criteria:

  1. In the Sampling and Stop Criteria Settings form, select Enable AutoStop.
  2. Specify a percentage value in the Target Coverage (%) field. When the given percentage of total faults are run, ADE Assembler stops simulating the remaining points.
  3. (Optional) Select Use Confidence Limit to use the confidence limit instead of coverage target as a criteria for automatic stopping. Use this option when you selected the randomuniform or randomweighted sampling method.
  4. Click OK to save the options and close the form.

In the next simulation run, ADE Assembler considers the settings specified on this form and automatically stops the simulation when the specified criteria is met. For example, if you specify the target coverage percentage as 60%, ADE Assembler stops the simulation after 60% points are run. For the remaining points, the results are shown as canceled in the Detail or Detail-Transpose view.

Sometimes, auto stopping might lead to a slightly higher percentage in the results. For example, you set the coverage target as 75%, the final coverage might be shown as 77%. This can happen because by the time calculations are done and the simulation actually stops, more faults get executed in parallel resulting into a higher coverage.

Previewing Faults in a Fault Group

Fault preview helps in viewing the final list of faults the tool will use to run simulation for the selected fault group.

To preview the list of faults included in a fault group, do this:

  1. Select the name of the fault group in the Fault Group to Run drop-down list on top of the Fault Setup assistant.
  2. Click Preview all faults for fault group selected to run ( ) on the Faults Setup assistant.
    ADE Assembler runs the Spectre info analysis to identify the fault list and if enabled, applies the sampling options to arrive at the final list of fault samples in the Faults table.
    It then displays the list in the Fault Group Preview window.

Key Points to Observe

Probing Faults in a Schematic

While previewing faults in the Fault Group Preview form, you can also probe them in the schematic view of the design.

To probe a fault in the schematic:

  1. Preview the fault list for the group.
  2. In the Fault Group Preview form, right-click a fault and choose Open fault in design.
    ADE Assembler opens the schematic in a new tab and highlights the device with the fault.

Clearing Fault Cache

After modifying the fault rules or individual faults, you need to re-evaluate the fault universe by running the rules again. To clear the fault cache and re-validate the faults before generating the fault preview, click on the toolbar of the Fault Setup assistant. After clearing the cache, you can run the Preview Faults command to regenerate the fault list.

Modifying Fault Groups

You can modify a fault group by removing the faults not required for that group. To remove faults from a fault group:

  1. Preview the fault list for the group.
  2. In the Fault Group Preview form, select the faults to be removed.
    You can hold the Ctrl key and click faults for multiple selection.
  3. Right-click and choose Delete.
    The selected faults from removed from the preview.
  4. Click Save to save the changes in the fault group.
    The fault count for this fault group is updated on this form as well as in the Fault Setup assistant.

Setting up Run Options for a Fault Simulation

Before running a fault simulation, spefcify the run options to be used. For this, click Simulation Options in the ADE Assembler toolbar.

You can select from the two methods given on the Fault Simulation run options form. These methods use two different fault analysis engines provided by Spectre–direct fault analysis and transient fault analysis. These engines provide a trade-off between accuracy and performance.

Direct Fault Analysis

In the direct fault analysis, faults are injected at the beginning of each analysis type, such as dc, ac, or transient. This mode provides the most accurate results. However, when there is a large number of faults in the design hierarchy, the simulations might take long to complete.

Transient Fault Analysis

In the transient fault analysis, a circuit with fault is simulated together with the test points specified on the time axis. Spectre starts regular transient analysis till the time reaches the test point. Then, at each test point, the following actions are performed:

Fault-free transient simulation is restored and continues till the next test time point.

Run Options for Direct Fault Analysis

As explained earlier, this Direct Fault Analysis is used to inject faults in the beginning of each analysis type and considers them for the entire run. It provides most accurate results, but should be avoided for large designs.

Run Nominal Simulation — Specifies whether to perform a nominal (fault free) analysis before fault analysis.

Extra Options — Specifies additional options for the selected fault analysis. You can specify a space-separated list of option-value pair of options for that are currently not available in ADE Assembler, but are available in Spectre.

The options specified in the Extra Options field are added to the sweep statement for the direct fault analysis. These options are not validated or processed by ADE Assembler. They are directly added to the netlist. Ensure that these are specified in the correct format.

To use any extra options for the transient analysis statement:

  1. Expand Analyses for the test in the Data View assistant.
  2. Double-click tran to open the Choosing Analysis form.
    The tran analysis is selected and the form shows options for this analysis.
  3. Click Options to open the Transient Options form.
  4. Specify additional options in the additionalParams field on the Misc tab. An example is shown below.

Run Options for Transient Fault Analysis

Transient fault analysis injects and considers faults only at specific test points and given lead times on the time axis. For the other time values, a fault-free state of circuit is used. This method produces results very fast, but with limited accuracy.

The description of each field is given below.

Section: Simulation Method for Transient Fault Analysis

Section: Fault Points Method

Running a Fault Simulation

After injecting the faults and setting the run options, you can run the Fault Simulation by clicking Run Simulation on ADE Assembler toolbar.

ADE runs Spectre info analysis before every fault simulation run to resolve the fault universe. In this process, Spectre removes all duplicate faults added by different rules.

Also see: warnWhenSimsExceed

After the simulation is complete, the Results tab shows the results in Detail view. It is a consolidated report of the fault expressions defined in the tests. For a detailed analysis of results for each fault, open the Fault result view and apply filters as explained in the Viewing Results of Fault Simulation section.

If there are failures in the simulation results, you can review the netlist or the setup. For more details, refer to the Debugging Results and Troubleshooting Errors section.

To improve the performance of the fault analysis, you can distribute the run to multiple jobs by configuring the job policy.

Related Topic: Running Simulations Using Selected Faults from Results

Viewing Results of Fault Simulation

The simulation tries to detect the injected faults for each output of type faultexpr, a new output type in ADE Assembler. At each fault point, the simulator evaluates the outputs and calculates the count of detected and undetected faults, as shown in the snapshot of the Detail-Transpose results view given below.

The red and green colors of the cells in the Detail and Detail-Transpose views indicate detected and undetected faults, respectively. Though for a fault simulation, it is considered good when a fault is detected, this color schema has been kept similar to the one used for the results of specifications where red indicates a failure in meeting the defined specification for an output.

In the Detail view, you can plot graphs for outputs across all design points, as shown below.

The following topics explain how to explore the results of a fault simulation:

Viewing Summary of Fault Simulation Results

You can view the summary of fault results in the Fault results view. By default, this view shows the count of detected or undetected faults found while evaluating the expressions for each test.

By default, all simulation errors and evaluation errors are considered as undetected faults. You can use the handleErrorsAs environment variable to ignore the errors or consider them as detected faults. When the errors are ignored, they are not included in the count of detected or undetected errors.

You can use the various filters or hyperlinks to focus on specific test, expression, or output, or to view faults in the design schematic.

When the setup has multiple tests, you can use the coverage report to identify the useful tests that you can keep and eliminate others.

For this, select Cumulative in the expr column. The cumulative results for all the expressions evaluated for each test are shown. The detectedCount and undetectedCount columns show the total number of faults detected or undetected for all expressions evaluated for that test.

The example given below shows that test DCGain detects a total of 47 out of 50 faults (with 94% coverage). Therefore, it gives a better coverage, but at the same time, you need to analyze the undetected faults for this test. It helps to ensure that the undetected fault is not a must item to be detected. If it is, you need to modify the setup to ensure that the fault is detected.

Exploring Instance that Contain Faults

The values in the fault view are hyperlinked to further details which are helpful in exploring the detected or undetected faults at the schematic level. For example, the count of detected or undetected faults are hyperlinks to the detailed view of these faults.

In the detailed view, you can click a fault name to view the design instance where the fault is reported, as shown in the following example:

Customizing the Display of Faults in the Fault View

You can customize the view of the fault table in the following ways:

Creating a Custom Fault Filter

By default, the drop-down list to select a fault filter shows the two main types, Coverage and Detail. If required, you can create your own custom fault filters with different criteria and save them so that they can be reused for the same or different results.

To define and save a custom fault filter, perform the following steps:

  1. Click Edit or create custom violation filter on the toolbar of the Fault results view to open Customize Fault Filters form.
  2. Specify appropriate values in the following fields of this form.
    Field Description

    Filter Name

    The name of the custom filter

    Description

    The description for the custom filter

    Shows

    The type of report you want to view

    Available Fields

    The list of fields or columns available in the Fault result view

    Where

    Specifies the filter criteria. To define this criteria based on the values in a field or column, click the column name in the Available Field list and click the left arrow. The field name is added to the Where field. You can now build an expression to define the filter criteria.

  3. Click Save on this form to save these filter settings in a custom file.

Important Points to Consider for Custom Filter Syntax:

Merging Results from Multiple Fault Simulations

You can merge the results of multiple fault simulation histories to view the consolidated results in one history.

This feature saves the time required to rerun simulations in the following scenarios:

You can view a video demonstration of this feature at Merging Fault Simulation Results.

To merge results of multiple fault simulations:

  1. Open the history of the fault simulation that you want to update by merging results from other histories into it.
  2. Open the Fault results view.
  3. Click Merge Fault Histories on the toolbar of the Results tab.
  4. The Merge Fault History form is displayed. It shows the list of all available histories of fault simulation run for this testbench, as shown in the following example.
  5. Select one or more histories from which you need to merge the results.
  6. Click OK.
  7. The results of all selected histories are merged in the history for which you displayed results. The history name on the Results tab shows the progress of merging.
    After the merge is successful, the count of detected and undetected faults are updated to reflect the merged data.

The following example shows the benefit of merging fault simulation results saved for two different tests separately:

Original Results of FaultSimulation.0:

Results of FaultSimulation.1:

Results of FaultSimulation.1 after FaultSimulation.0 is merged with it:

Important Points to Note

Related Topics

dropUndetectedSimErrorsInFaultDroppingFlow

handleErrorsAs

handleSimulationErrorsAs

Checking Fault Detection Rate

Fault simulation runs are generally time consuming because of a large number of faults in the design. Ensuring an effective fault coverage would help in saving time.

In a multi-test testbench, you can check the fault detection rate for each test by running simulation for each test individually and dropping the faults detected for one test in the fault setup for other tests. You can then merge the results of all tests and review the cumulative report to calculate the effective overall coverage.

Consider an example testbench with three tests: DCGain, DC-Test, and Swing. The following figure shows the cumulative coverage of faults when a simulation is run with all three tests enabled in this example:

To check the effective coverage of faults:

  1. Create a new fault group, say undetectedFaultGrp, in the Fault Setup assistant to save all undetected faults.
  2. Select a test in the Data View assistant and deselect other tests.
    In the first run, it is recommended to select a test that has the maximum coverage of faults and minimum run time according to your estimate or observation.
  3. Using the complete fault rule setup that was used for simulation with all tests enabled, run a fault simulation.
  4. To view the cumulative coverage of faults, open the Fault results view and select Cumulative from the Filter list for the expr column.
  5. Right-click the value in the undetectedCount column and choose Add to Fault Group and then the name of the fault group you created in step 1.
  6. Choose the newly created fault group in the Fault Group to Run drop-down list in the Fault Setup assistant.
  7. Disable the test already used in steps 2 to 5.
  8. Select one of the remaining tests and repeat steps 3 to 6.
    In each iteration, you run fault simulations by selecting one test at a time and using the undetected fault list from the previous runs. In every run, you drop the faults already detected in the test used for the previous simulation run. The next run considers only the undetected faults.
  9. After the simulation for all tests are complete, merge the results in one history. For details on how to merge faults, refer to Merging Results from Multiple Fault Simulations.
  10. Select Cumulative from the Expression drop-down list in the Fault results view.
    Observe the difference in the fault coverage for each test with the initial coverage reported by the run with three tests.
    The coverage for tests DCGain and Swing are different because by default, a fault is counted as detected for all tests if it is detected by any one of them and it is reflected in the coverage for each test. By dropping the faults detected by one test from the simulations for other tests, you create a unique fault set for each test.
    The fault set created after fault dropping is as effective as the fault set without fault dropping. In the previous example, the cumulative fault coverage for both cases, with or without fault dropping is same, 80.43%.
    Therefore, it is important to understand that fault dropping is not essential. You can evaluate whether fault dropping improves the run time for your designs or not.

Automatic Fault Dropping Using a Run Plan

You can create a run plan using the fault setup to run multiple simulations, one for each test, in a sequence where each subsequent run in the plan uses a reduced list of faults that were not detected in the previous run. This way of dropping faults that are detected by the previous run helps in focusing on fault coverage and also saves time because the simulation is not run for the faults that are already detected.

Creating a Run Plan for Fault Dropping

To create a run plan for automatic fault dropping:

  1. Ensure that the maestro cellview contains multiple tests that refer to the same design under test. Each test can have a different setup.
  2. In the Data View assistant, select the tests for which you want to run fault simulation.
  3. Ensure that the selected run mode is Fault Simulation.
  4. In the Fault Setup assistant, prepare a fault setup using fault rules and individual faults as described in Setting up Faults.
  5. Click Create Fault Dropping Run Plan on the Fault Setup assistant toolbar.
    ADE Assembler opens the Run Plan assistant and creates a run plan by using the tests enabled in the Data View assistant.
    For each run in the plan, ADE Assembler automatically adds a pre-run script and a post-run script to prepare a fault list for the next run in the plan.
    If a run plan already exists in the Run Plan assistant, runs from that run plan are disabled.
    If only one test is enabled in the setup, the run plan is not created and an error message is displayed.
  6. (Optional) To review the pre- and post-run scripts, right click on any run in the Run Plan assistant and choose Edit Run Conditions.
    The Add/Edit Run Conditions form is displayed for the run. The path to the scripts is shown in the Pre-Run Script and Post-Run Script fields. You can open the script files to review and if required, modify their contents by using the SKILL functions related to fault simulations. However, it is recommended not to modify these files.
    For all runs except the first run in the plan, this form also adds a run condition to check the success status of the previous run before starting the next run.
  7. Close the Add/Edit Run Conditions form.
  8. Click Execute Run on the Run Plan assistant toolbar to start a simulation for the run plan.
    The Results tab opens the Status results view. This view shows the status of each run in the run plan.
    The CIW also shows the log for the fault dropping flow.
    This log indicates the number of simulations saved by dropping faults in the flow. In the above example, the total fault count visible in the Fault Preview form was 10. If all fault points were run for both tests, a total of 10 simulations would have been required. However, the log shows that, fault dropping saved 8 simulations. In addition, this log shows the coverage statistics. These logs are also saved in the _faultDropping.logs file in the current work directory.
    You can now analyze the detailed results in the Fault results view.

Running Simulations Using Selected Faults from Results

Based on your analysis of output values, you might need to run a simulation using only the fault points corresponding to a few selected output values. You can create a fault group for those fault points and run simulation for that group.

To add faults from simulation results to a fault group:

  1. Identify a fault group to which you want to add faults.
  2. Open the Fault or Detail–Transpose results view.
  3. Select any cell in the row of the fault that you want to add to a group.
    To add multiple faults, hold the Ctrl key and select the cells for those faults.
  4. Right-click any one of the selected cells and choose Add to Fault Group.
    The Add to Fault Group form appears. The Faults list shows the names of the selected faults, and the Groups list shows the names of available fault groups.
  5. Select the name of a fault group.
  6. Click OK.

The faults are added to the group. You can select the group in the Fault Group to Run list on the Fault Setup assistant and then run a simulation.

Debugging Results and Troubleshooting Errors

If the design contains dummy devices, Spectre would ignore those because they are not relevant for the functionality of the circuit. However, the devices are still listed in the faults list created by ADE Assembler. This might result into simulation errors. To avoid this, make sure that Spectre does not skip dummy devices.

Debugging Results

While debugging simulation results, if you need to access netlist and output log of Spectre info analysis, click Open Info Analysis Results on the toolbar of the Fault Setup assistant.

This command opens the directory where the netlist and the psf directory of the info analysis is saved.

Running Functional Safety Checks

An important reliability check for a device is its functional safety. This check mainly focuses on the effect of a failure during the lifetime of a device.

To generate this report, you need to have checker blocks in your design to validate the outputs of the functional block.

If the fault detection is enabled for both functional and checker blocks, you can generate a functional safety report that is aligned with the safety classification defined in the ISO 26262 standard, which classifies safe or dangerous, and detected or undetected defects.

The following diagram describes the various types of functional safety categories defined according to this classification.

To generate the functional safety report, perform the following steps:

  1. Open the results of a fault simulation.
  2. Click Generate FSA Report ( ) on the toolbar of the Results tab.
    The Generate FuSA Report form is displayed.
  3. In the File Name field, specify the file name and path to be used to save the report.
  4. In the Select Checker Expression list, select the names of the checker expressions you created to check the output of the checker blocks in the design.
  5. In the Failure Mode ID field, specify an integer ID of the failure mode being addressed with this report.
  6. From the Failure Mode drop-down list, choose one of the following failure modes:
    • SPF: Single Point Failure
    • LFC: Latent Fault Continuous
    • LFP: Latent Fault Periodic

    Single point failures are faults in a functional or checker module. In this mode, only a single failure, that is either the functional block or the checker block is considered at a time.
    Latent faults are multiple-point faults where the effect of a faulty checker module is evaluated in the context of a faulty functional module. A common method of calculating latent fault results is to apply all relevant failure modes of the functional module to the input of the checker module and then run fault simulation only on the checker module.
    Latent faults can be of two types, continuous (LFC) and periodic (LFP).
    To identify a latent fault of continuous type, the output of the functional module needs to be monitored continuously by means of a continuous detection in the checker block.
    To identify a latent fault of periodic type, the checker module is periodically turned on and off to monitor the output of the functional block.
    For more details on these failure modes, refer to Fault Analysis.
    The values from the Failure Mode ID and Failure Mode fields are printed at the top of the functional safety report. These are not used in the calculations done for report generation.
  7. In the Confidence Value field, specify a confidence level in percentage.
    For the randomuniform or randomweighted sampling methods, Spectre internally uses the Clopper-Pearson approach to estimate the confidence interval when the sampling based simulation is finished. The confidence level you specify in this field is used to show the corresponding confidence intervals in the fault detection matrix.
    For more details about how Spectre calculates confidence interval, see Calculating Confidence Interval for Fault Sampling.
  8. From the Interval Option drop-down list, choose a formula to be used for confidence interval calculation. Both, Clopper-Pearson Interval and Wald Interval methods are supported.
  9. Click OK.

The resultant report shows the fault detection matrix for each test followed by an aggregate of detected or undetected, safe and unsafe defects.

The functional safety report shows the fault detection matrix for only those tests for which outputs of type faultexpr are specified.

For details about this report, refer to Functional Safety Report.


Return to top
 ⠀
X