Product Documentation
Virtuoso IPVS User Guide
Product Version 20.11, March 2021

3


All about Design Rules: Snapshot

This chapter covers basic concepts of snapshots, its definition and the type of snapshot directories. The content of this chapter is organized as follows:

Snapshot Definition and Files

A snapshot captures design rules in a compiled binary format, which only PVS understands. This format allows PVS the direct access to design rules during DRC without re-compiling design rules from the rule deck. The advantages of using snapshot over rule deck are:

Following table gives an overview of these snapshot files.

Table 3-1 Snapshot Files Outline

Snapshot Files Description

SnpName.preset

  • Preset file that contains Snapshot Creator GUI configuration setting for a given snapshot

SnpName.tag

  • Reference for Dynamic Rule Filtering

SnpName.cap

  • Cap file contains default rule selectivity, rule caption, rule types and rule description.
  • Reference for Dynamic Rule Filtering

SnpName.snp

  • Snapshot: the compiled version rule deck

SnpName.layermap

  • Technology layer mapping file

SnpName.objectmap

  • VIPVS uses this reference to lookup OA specific object to its equivalent stream pair

SnpName.rules

  • VIPVS uses this file to store rule file names, used to generate snapshot.

SnpName.sum

  • VIPVS uses this file to check the validity of overall snapshot reference files.

In order for VIPVS to work properly, a set of snapshot related files are created by the tool either through interactive or batch snapshot creation. Eight files are created by VIPVS and the filename is formatted as snapshot name appended with specific file type suffix: .preset, .tag, .cap, .snp, .layermap, .objectmap, .rules, and .sum.

For dynamic rule selection, VIPVS relies on information collected from .tag, .cap and .layermap /.objectmap. Since polygons drawn in Virtuoso are represented by Layer-Purpose pairs defined in the technology file, VIPVS transfers these LPP specific polygons to their Layer-Datatype stream pair equivalents and then passes them directly to PVS. This is a direct communication between Virtuoso and PVS through VIPVS interface socket. In addition to transporting geometry data, VIPVS performs rule selection based on layer visibility by relying on information stored in the .cap and .tag files. The .tag file contains rule specific layers check lookup table. All the layers are represented by Layer-Datatype stream pair. Following is the general syntax declared in .tag file.

<Rule Caption> <# of different layer pair's check>
<LayerStream1#> <LayerStream2#> <Datatype1#> <Datatype2#>
:

Following example shows three different rule captions: M1.Spacing.1, M1.Width.1, and M1.Area.1. There are also three layer check conditions:

Rule is selected for DRC if any of the above interlayer check combinations is detected in the Palette.

Figure 3-1 Layer Lookup Example

For the .cap file, it contains rule types that VIPVS refers to for either density or connectivity type rules exclusion. Below example shows a typical content of .cap file. Its rule status' syntax is composed as following:

<Select Tag> <Rule Name> <Rule Caption's Line Count> <Rule Type>
<Rule Caption>
:

Figure 3-2 .cap general content

The .preset file is the configuration file that contains the Snapshot Creator Form setting. It is only for GUI application and is not understood by PVS engine. The advantage of having this .preset file is allowing you to load settings that generate current active snapshot while launching Snapshot Creator GUI. In addition to .tag, VIPVS refers to .cap file to ensure rule selection only on rules existed in the snapshot (.snp).  

Finally .sum is for VIPVS to check snapshot files completeness. For a given snapshot validity check, VIPVS does not populate it in the snapshot combo field if file information recorded in .sum mismatches from its detected files.

Snapshot Directory Types and Customizations

For the interactive snapshot creation, VIPVS by default stores generated snapshot files under .cadence/pvs/<userid>/presets/vipvs/snapshot. This is defined as the local snapshot directory. Furthermore, the local snapshot directory is explicitly created per userid. For a given working space, there may be more than one user specific snapshot directories stored under .cadence/pvs. However, VIPVS only checks and loads snapshots from the snapshot directory matched current user information that is queried through ‘echo $user’ or ‘whoami’.

During VIPVS initialization, it first examines the content of this snapshot directory. If any pre-existing snapshot is found, it proceeds to perform snapshot files validity and version checks. If the potential snapshot passes these checks, it is included in the VIPVS's snapshot drop-down list. Otherwise, VIPVS issues warning messages in CIW and this incompliant snapshot is excluded from the snapshot drop-down list.

In general, snapshot creation is a one-time setup. Re-usability of pre-existing snapshots in the local snapshot directory is guaranteed as long as the snapshot passes snapshot compatibility and file validity checks.

VIPVS allows you to define one or multiple snapshot directories through PVS_SNAP_SHOTS_DIRS. Once this shell environmental variable is set, VIPVS checks and honors the contents of snapshot directories declared through this shell variable. If the snapshot directory is not available, VIPVS creates the snapshot directory automatically. However, this setting overrides the default snapshot directory. In other words, if default local snapshot directory path is not part of PVS_SNAP_SHOTS_DIRS, VIPVS excludes it from mandatory checks.

To ensure the default local snapshot as part of user-defined snapshot directories, you can include it as part of declaration as shown below in .cdsinit:

Figure 3-3 Example of declaring user specific snapshot directories

PVS_SNAP_SHOTS_DIRS supports path inputs containing following syntax:

VIPVS checks path validity and displays the absolute snapshot directory path in the Virtuoso IPVS Snapshot Creator and VIPVS Manage field. The order of directory paths in PVS_SNAP_SHOTS_DIRS dictates its display order in both of Virtuoso IPVS Snapshot Creator and VIPVS Manage field.

Quick Start: Create Snapshot

This section introduces different ways of creating snapshots

First Time

Virtuoso IPVS Snapshot Creator allows you to interactively create the snapshot. It can be invoked through the Create Snapshot button under the VIPVS Run Options.

Figure 3-4 Invoke VIPVS Snapshot Creator GUI

To generate a snapshot using Virtuoso IPVS Snapshot Creator, three minimum inputs are required:

Assuming no technology is set up, VIPVS flags missing required inputs visually by boxing fields with the red highlight. Once the cursor hovers over the red-box, error message is displayed as a tooltip. Following example illustrates error dictated by the interface. Till required inputs are incomplete, GUI prevents you from creating a snapshot.

Figure 3-5 Input Validity Check

To generate a snapshot, enter the required inputs in Virtuoso IPVS Snapshot Creator. Then click Apply or OK to invoke snapshot creation. During Snapshot Creation, following popup box indicates the progress of snapshot generation.

Figure 3-6 Snapshot Creation in Progress

The newly created snapshot is automatically populated under VIPVS toolbar's snapshot combo field.

From Preset

The preset file contains the configuration setup that can be loaded into Virtuoso IPVS Snapshot Creator. As long as the syntax in the preset file is supported by VIPVS, its setup value will be populated in the GUI.

To load the preset, you can interactively click the Load Presets icon on the File toolbar or File -> Load Presets.

Figure 3-7 Invoke load presets GUI

It opens a file searching form. For the current Look in directory, files' name with suffix .preset are populated in the window. Current Look in directory is initially set to current snapshot directory populated under the Snapshot Path field. You can navigate to any of available snapshot directory content by either selecting it from the left directory list field or through file searching utility provided by this GUI. These available snapshot directories are determined by PVS_SNAP_SHOTS_DIRS.

Figure 3-8 Loading Presets GUI

Once the desired preset file is located, click Open. It loads the VIPVS Snapshot Creator contents based on the selected preset file. After successfully loading the preset, the loading status is displayed at the bottom of VIPVS Snapshot Creator.

Figure 3-9 Preset loading status

From Current Active Snapshot Setting

Similar to creating snapshot from a preset file, VIPVS allows you to load current active snapshot setting during Snapshot Creator invocation. The advantage of this feature is to allow you to further create a snapshot from a reference snapshot setting.

Figure 3-10 Load current snapshot setting

This option is enabled by default when VIPVS identifies the current active snapshot.

Virtuoso IPVS Snapshot Creator Form

This form is another derivation of PVS run submission form. However, its contents are specific to VIPVS snapshot creation only. You can invoke this GUI within Virtuoso session or standalone through ipvs invocation utility. You can refer to Appendix A - Preset to Snapshot Batch Migration for standalone GUI invocation.

Similar to PVS submission form, Virtuoso IPVS Snapshot Creator GUI has a built-in intelligence that checks on input validity before generating snapshots. If any required input is missing, fields in question are enclosed with red box highlights. The error message is displayed as a tooltip when the cursor is hovered over each of the red boxed field.

This GUI fields are grouped as following:

Snapshot Content Customization Field

Right above the Output field, six tabs are available for customization. These options allow you to specify DRC criteria that will be stored in the snapshot.

Input

The Input tab contains information used for VIPVS to do correct polygon translation and packaging.

Figure 3-11 VIPVS Snapshot Creator: Input tab

The layer handling between Virtuoso and PVS is different. VIPVS is built as an active bi-directional communication channel that transports polygons between two platforms. Thus, it handles direct layer mapping between Virtuoso and PVS. To ensure the accuracy of layer translation, mapping file is mandatory for VIPVS while is optional for signoff PVS DRC.

There are two types of mapping files: layer and object. The former contains mapping between Layer-Purpose pair and Layer-Datatype stream pair while latter maps Virtuoso specific object attributes to Layer-Datatype stream pair. Object mapping file is optional and layer mapping file is given by the same source distributes rule deck.

You can specify the layermap file by clicking the (...) button and browse to the location to select it. To remove a layer map file, select the file and click Remove.

Similarly, you can specify the object mapping file by either of the following ways:

Since layermap file is one of required inputs, you can specify its initial value in the Layer Map List text box through the Virtuoso_IPVS_defaultSNPLayerMap shell variable before launching Virtuoso. If design library is attached or is referencing the technology library, then the Layer Map List field is automatically populated within layermap file being found in technology library.

Depending on the version of Virtuoso release, Enable Coloring and Map All Colored To Locked options are available to specify color mapping criteria.

Starting from ICADV12.1, for a given Layer-Purpose pair, a set of polygons can have additional color attributes assigned on them: color and color state in the layout. By selecting Enable Coloring check box, VIPVS understands color implications set on these polygons. It first translates them to equivalent Layer-Datatype stream pair based on layer mapping definition and then transports them to PVS prior to DRC. Similarly data preparation is done after DRC during reporting violations transport from PVS to Virtuoso. Following example shows how VIPVS refers layer mapping definition to translate data between Virtuoso and PVS.

Figure 3-13 VIPVS data preparation between Virtuoso and PVS

Map All Colored To Locked is a sub-option of Enable Coloring and its enabled once you select the Enable Coloring check box. It is only available in ICADV122 or later. When this option is selected, VIPVS treats all colored polygons in the layout as locked and maps them to equivalent Layer-Datatype stream pair accordingly. By default, Map All Colored To Locked field is hidden. Use environment variable: envSetVal("xstream" "xstHideMapAllColorToLocked" 'boolean nil) or shell environment variable Virtuoso_IPVS_hideMapAllColorToLocked N to make it visible on the form.

The priority of controls is the following:

1. envGetVal("xstream" "xstHideMapAllColorToLocked") if defined.

2. If not defined, shell envvar "Virtuoso_IPVS_hideMapAllColorToLocked".

3. If both are not defined - default:hide.

Following example shows VIPVS data preparation when Map All Colored To Locked is selected.

Figure 3-14 VIPVS data translation when "Map All Colored To Locked" is on

Tech&Rules

This tab defines the source that snapshot is generated from. You can either add the rule deck path under the Rules field or refer to the rule set available under the Technology field. In general, these settings under this tab should be controlled by CAD. Following examples show two ways of setting up the technology specific DRC deck information:

Figure 3-15 VIPVS Snapshot Creator: Tech & Rules tab via rule deck

Figure 3-16 VIPVS Snapshot Creator: Tech & Rule Tab via Technology

Technology

Since DRC deck is one of required inputs, you can specify its initial value in Rule File(s) field through the Virtuoso_IPVS_defaultSNPRuleDeck shell variable prior to Virtuoso launch. For details of setting rule set using Technology, see Appendix C - Handling Technology Data in PVS in the PVS User Guide.

Configurator

For a given rule deck, it may contain a set of switches controlling the rule selection. In the configurator, you can change switch's value to trigger rules selection that is different from the default content in the rule deck. Due to the amount of switches defined in the rule deck, manual changing rule deck content can be difficult to manage and track the changes. Thus, configurator flow allows you to select or override setting without manually editing rule file content.

By default, configurator is disabled. Select Use Configurator check box to enable it. Once it is enabled, it asks for a configuration file to be loaded.

Figure 3-17 VIPVS Snapshot Creator: Enable Configurator Flow

After loading the configuration file, the graphical representation of options are populated under the Config Options field. Following example shows any of four switches defined through #define in the DRC deck can be overridden interactively without physically modifying the DRC deck itself.

Figure 3-18 VIPVS Snapshot Creator Flow: Configurator Enablement

At the same time, both of View and Edit buttons are activated. These buttons allow you to view configurator file content and edit its content on the fly. Following figure shows how to view configuration file content interactively.

Figure 3-19 Snapshot Creator Flow: view configuration file

For detail of configuration file syntax, refer to the PVS Configurator chapter in the PVS User Guide.

Generally, Configuration file is maintained globally by CAD. CAD can declare its initial value in the Input field through the Virtuoso_IPVS_defaultSNPConfigFile shell variable before launching Virtuoso.

Rule Selector

The initial content of Rule Selector reflects current rule selection found in the loaded rule deck. Essentially, it is the result of rule deck compilation done through PVS. The Rule Selector section enables you to individually select or deselect rule sets or rule groups.

In Rule Selector tab, two view modes are available: Groups and Plain.

The default view mode is Groups. In this default view mode, rules are displayed either by the group they belong to or by Ungrouped Rules. Following example shows how groups' representation in Rule Selector is declared in the rule deck. All G_* rule groups are defined through the group_rules command in the rule deck.

Figure 3-20 Rule display reflect rule grouping definition in the rule deck

Within Groups, rule information is constructed based on its rule name and description. Rule name is defined through the rule command while rule description is defined through the caption command. You can expand or hide all of rule names and descriptions using:

Following example shows what happens when you click the All Groups: Expand button. All the rules that belong to a group are displayed.

Figure 3-22 Expand content of all groups

To see the description of each rule, clicking the All Captions: Expand button shows each rule's description as its child hierarchy. Following example shows the rule's content after clicking the All Captions: Expand button.

Figure 3-23 Expend content of all captions

The Plain view mode allows you to see rules based on their current selection status. It is a flat display by rule name. Once the Plain mode is selected, additional three buttons are available for you to set rule display based on its current selection status.

Figure 3-24 Plain View: display rules based on its selection status

By default all rules are displayed. You can further filter unselected rules by clicking Show Selected to customize the rule display. Rule by default are displayed by rule names. However, you can expand or hide its rule caption using All Captions: Expand/Collapse.

Figure 3-25 Display rules in Plain view mode

Figure 3-26 Display selected only rules in Plain view mode

When the Rule Selector tab is activated to perform rule selections, all the selection options are enabled. For batch rule selection, you can select or deselect all the rules through All and None buttons. You can also reset the rule selection back to default through Default button.

Figure 3-27 Rule select utility overview

Following example shows results after clicking the None button. Note that rule selection summary indicates 0 rule selection.

Figure 3-28 Deselect all of rules

For search based rule selection, you can first set the search filter and then further define searching criteria by declaring searching condition in the entry field. Once matched rule names or captions are found, they can be pre-viewed. You can then perform rule selection by clicking the Select or Unselect buttons. The preview column is only displayed where there is searching condition declared in the entry field.

Figure 3-29 Search based rule selection flow

Pre-defined search filter allows you to specify where and how the search should be conducted. You can customize your search using any of the search criteria listed in the Search in drop-down list. The options are: All Rules, Connectivity Rules and Density Rules. The by field is related to the Search in field and the drop-down list provides second level of filtering. You can narrow down the search results using options listed in the drop-down list. The options are: Wildcard (Rule Names), Wildcard (Rule Captions), Reg. Exp. (Rule Names)and Reg. Exp. (Rule Captions).

Figure 3-30 Available pre-defined search filters

Reg. Exp. (Rule Name) and Reg. Exp. (Rule Captions) search filters support regular expression syntax.

You can specify multiple rule names separated by space as shown below:

Following example shows finding rule description containing exact match of 20% through Reg. Exp. (Rule Captions) search filter.

Figure 3-31 Search rule caption matching searching criteria

Figure 3-32 Search rule name through regex syntax

Search options Connectivity and Density show all rule names based on the connectivity and density respectively.

The Reload Rules button re-compiles rules contents from the rule deck. After the compilation, rules contents are refreshed based on compilation results. This is different from the Default button in Select. Reload Rules deletes all the rule compilation results initially obtained by the tool and re-generates rules based on the current active rule deck while Select: Default only resets rule selection status based on the original compilation results.

Figure 3-33 Recompile rule content

Finally, you can interactively select rules through the rule display field by clicking the check box located in the front of rule names or group names.

Figure 3-34 Interactive rule selection

Text and Connect

For detailed usages of this tab, refer to the Text and Connect Tab section of DRC Run Submission Form - Virtuoso in PVS User Guide.

Golden Layout

For detailed usages of this tab, refer to the Additional Layout Tab section of DRC Run Submission Form - Virtuoso in PVS User Guide.

Snapshot Output Field

Figure 3-35 Snapshot Output Field

The Output field contains final snapshot name declaration, snapshot comment, the snapshot directory path, snapshot type, and check box for defining custom bloat value.

In the Snapshot Name field, you can enter the snapshot name. The naming syntax should not include any special characters, SPACE or TAB. If any special character is detected in the snapshot name input, following pop-up message box appears and requests you to modify the input.

Figure 3-36 Error message on detecting special characters declared in Snapshot Name

If the snapshot name you have defined already exists, the following message is displayed:

Figure 3-37 Snapshot Name overwrite message

The Snapshot Comment field specifies a description comment for the snapshot.

The Snapshot Path drop-down list allows you to set the directory path that snapshot is going to save to. The Snapshot Path field is set to the local snapshot directory by default. However, its drop-down items can be replaced through PVS_SNAP_SHOTS_DIRS. If PVS_SNAP_SHOTS_DIRS is specified, paths in this shell variable is parsed and stored as a list for the Snapshot Path combo field. The order of the snapshot directory path in this list is based on the order of declaration in PVS_SNAP_SHOTS_DIRS. Thus, the active snapshot directory path is the first item in the list. Also, path declared in PVS_SNAP_SHOTS_DIRS is expanded and displayed in its absolute path format.

Following example shows all four paths declared in PVS_SNAP_SHOTS_DIRS and how they are displayed under the Snapshot Path drop-down list.

Figure 3-38 VIPVS acknowledged snapshot directories

The Snapshot Type Drop-Down list allows you to select the type of snapshot you want to create. Select DRC to generate a snapshot of type DRC to perform in-design DRC checks and select Fill to generate a snapshot to perform signoff fills runs.

Figure 3-39 Snapshot Type

The Set Custom Bloat Value check box allows you to specify the custom bloat value. By default the option is disabled. In this case bloat value is defined by the PVS engine based on selected checks and this information is outputted as part of snapshot header after the snapshot is created. When you select the check box and specify the custom bloat value, this value is stored as part of the snapshot header.

Figure 3-40 Custom Bloat Value Setting

You can enter any positive float value including “0”. However, If you enter “0” bloat value, it would mean that you want to check area “as-it-is”. When this option is off, bloat value is determined by PVS engine based on selected checks and output this information as part of the snapshot header. Otherwise, custom bloat value declared through this option is stored as part of snapshot header.

Manage Snapshots

VIPVS allows you to create unlimited snapshots and store them in various snapshot directories. However, accessing snapshots can be cumbersome when multiple snapshots created using different sources are available. To effectively manage snapshots, following utilities are available:

Snapshots Inquiry

Snapshot content is only readable by PVS. Therefore, this feature not only allows you to query the overview of the active snapshot, but also generates a comprehensive snapshot storage location overview.

Figure 3-41 Snapshot Info inquiry

This inquiry utility contains three drop-down items on the VIPVS Run Option icon:

To view the header of the current active snapshot, info can be printed out in CIW after clicking INFO: Print Current Snapshot Header.

Figure 3-42 Snapshot header information in CIW

For each component listed in snapshot header, the detail of usage is documented in the following table:

Table 3-2 Snapshot Header Overview

Header Info Description

Snapshot Name

  • Current active snapshot

Snapshot version

  • Snapshot version issued by PVS
  • Version number is updated when PVS rule-deck to snapshot compiler engine supports new PVS command.

The bloat value

  • Area expansion threshold in X and Y directions for PVS to perform final area of checking.
  • It is the maximum value determined from selected checks stored in snapshot or custom bloat value defined in snapshot creation form.

Licenses Features

  • License required to run VIPVS for a given selected checks stored in the snapshot.
  • License issuing is dependent on the content of selected rule decks.

PVS Version

  • PVS binary used to create this snapshot

Source Rule Deck

  • The source rule deck(s) this snapshot is generated from

Date of creation

  • Time stamp when snapshot is first created

type

  • Type of snapshot: DRC or Fill.

You can print all available snapshots’ header information and locations where they are stored into by invoking INFO: Print All Snapshot Locations. VIPVS composes a snapshot lookup map and populates this information in CIW. It is grouped by snapshot directory. Following figure shows lookup map outline.

Figure 3-43 Snapshot lookup map

The INFO: Explain Marker option allows you to select a marker in the layout viewer and that marker will then be highlighted in the Marker Browser window.

To use this option, you must select DRC Results Viewer as browser.

The Snapshot inquiry utility can be de-activated through shell variable Virtuoso_IPVS_Info no.

Snapshots Management

The snapshot accessibility becomes a challenge when multiple snapshot directories are available in their working environment. Since total of snapshot display counts has a limit of 10, some snapshots are hidden inside snapshot combo field unless you scroll down to the drop-down list. In addition to this limitation, items in the snapshot drop-down list gives you no information that which snapshot directory they are stored under.

Thus, VIPVS allows you to selectively display snapshots based on snapshot directories in the snapshot drop-down list. It is through the Manage button under the Snapshots field in the Virtuoso IPVS Run Options. You can enable it through Virtuoso_IPVS_enableSNPManagement.

Clicking the Manage button opens the Virtuoso IPVS Snapshot Manager form:

Figure 3-44 Virtuoso IPVS Snapshot Manager form

The form lists all snapshot directories defined in environment variable PVS_SNAP_SHOTS_DIRS. If PVS_SNAP_SHOTS_DIRS is undefined, then the form lists default snapshots directory <$PWD>/.cadence/pvs/<$userid>/presets/vipvs/snapshot.

By default, all fetched snapshot directories are listed in Directories to use block. This means that snapshots from these directories will be displayed in the toolbar.

Figure 3-45 Manage Snapshots

If you do not want to display snapshots from specific directory in the toolbar, then move the directory to the Directories to ignore block using the arrow key:

Figure 3-46 Snapshot display based on selective directory

You can rename the snapshot name by selecting the snapshot name and clicking the Rename button. Similarly, you can delete a snapshot by selecting a snapshot and clicking the Delete button.

Snapshots Upgrade

PVS guarantees snapshot forward compatibility for base release life cycle. In other words, engine can interpret a snapshot created by base release and its ISRs/HFs/EHFs. However, VIPVS still checks snapshot readability during layout opening. If the incompatibility is detected, it outputs following warning messages in CIW:

*WARNING* VIPVS: Following snapshots are generated using different PVS that is incompatible with current PVS installation and will not be populated under Snapshot list. Please re-generate the snapshots with current PVS version.

Then, these version incompatible snapshots will not be available to choose from the snapshot drop-down list.

PVS rule parser may be changed in ISR or hot fix to achieve better results. In this case snapshot version will be changed. New VIPVS version will read old snapshots generated by previous VIPVS versions of the same base release. However, changes in rule parser will not be visible. To take advantage of new PVS rule parser, snapshot need to be upgraded.

Figure 3-47 VIPVS Incompatibility Check

You can invoke Upgrade Snapshot utility that runs a batch upgrade on all incompatible snapshots. The Upgrade Snapshot button in the Snapshots section of the Virtuoso IPVS Run Options form is active if there are incompatible snapshots in snapshots directory. You can make it available through Virtuoso_IPVS_maintenance.

Figure 3-48 Upgrade Snapshots

Once you click Upgrade Snapshot, following pop-up window is shown.

Figure 3-49 Precede with snapshot upgrade

Above pop-up window is to remind you that snapshot upgrade is final and you cannot revert the changes once the commitment is made. Once you make the upgrade commitment, VIPVS precedes with snapshot upgrade and upgrade status is printed out in CIW. During the time of snapshot batch upgrade, Virtuoso is not accessible.

Figure 3-50 Snapshot upgrade status in CIW

Once the snapshot upgrade is complete, all snapshots are populated in the snapshot drop-down list in the toolbar.

Figure 3-51 Snapshot Batch Upgrade

Portability of Snapshots

VIPVS snapshots are portable between different locations. It means that if rule deck contains the include statements of additional rule deck files, then in case you create snapshots and copy it to different location from which old paths are not visible, VIPVS will generate results for given snapshot.

However, if rule deck contains reference to an additional data like GOLDEN GDSII/OASIS files, you will need to use environment variable Virtuoso_IPVS_data to make snapshot portable between different location. This is because VIPVS snapshot stores absolute paths which may be not visible from other locations.

Example:

> setenv PVS_DK /usr/dk/pvs_data

Rule deck contains line:

layout_path $PVS_DK/GOLDEN_GDS/golden1.gds GOLDEN;
layout_path $PVS_DK/GOLDEN_GDS/golden2.gds GOLDEN;

In the VIPVS snapshot these lines will be stored as:

layout_path /usr/dk/pvs_data/GOLDEN_GDS/golden1.gds
layout_path /usr/dk/pvs_data/GOLDEN_GDS/golden2.gds

Thus, if path /usr/dk/pvs_data/GOLDEN_GDS/ is not visible from end-user location, VIPVS will issue an error and will not generate any results.

To make snapshot portable, perform the following steps:

  1. User, who generates snapshot should set:
    1. setenv Virtuoso_IPVS_data /usr/dk/pvs_data
    2. Generate snapshot. Paths to golden GDS files will be stored as:
      ${Virtuoso_IPVS_data}/GOLDEN_GDS/golden1.gds.
      ${Virtuoso_IPVS_data}/GOLDEN_GDS/golden2.gds.
  2. End-user:
    1. Install design kit in local directory. For example: /usr/user/pvs_data
    2. setenv Virtuoso_IPVS_data /usr/user/pvs_data
    3. Run VIPVS.

Checking that Snapshot is Generated by Up-to-Date DK Version

If DK team wants to make sure that their users use snapshot generated by latest DK versions then they can create a SKILL code which checks validity of snapshot based on VIPVSValidateSnapshot SKILL function and then define how to proceed further: either allow to use with warning or hide snapshot.

General assumption is that the customer implements procedure of fixed name and list and order of arguments.

  1. If VIPVSValidateSnapshot(snp_name snp_dir snp_comment) returns:
    1. t
      i. Snapshot name will show up on VIPVS Toolbar
      ii. There will be no message in CIW
    2. nil
      i. Snapshot name will not show up on VIPVS Toolbar
      ii. Following warning message will be shown in CIW:
      VIPVS: snapshot <snp_name> located in <snp_dir> didn't pass validation against comment <snp_comment> 
    3. Non empty error_message (string)
      i. Snapshot name will not show up on VIPVS Toolbar
      ii. Following warning message will be shown in CIW:
      "VIPVS: <error_message>"
    4. Empty error_message (string)
      i. Snapshot name will not show up on VIPVS Toolbar
      ii. There will be no message in CIW
    5. Anything else (list, symbol, and so on …) will be treated as nil like point # b above
  2. This procedure must be loaded before first layout cell is opened (this is when the SKILL context is loaded and snapshot validation is run on init).
    Examples (called from .cdsinit):
    Allowing snapshots located only in a specific directories:
procedure( VIPVSValidateSnapshot( snp_name snp_dir snp_comment)
let((project_dir valid)
 project_dir = getShellEnvVar("PVS_N7_DIR")
 if( project_dir && simplifyFilename(project_dir) == simplifyFilename(snp_dir)
 then
valid = t
 else
valid = sprintf(nil "Refusing snapshot %s from %s. Only snapshots from %s directory are enabled." snp_name snp_dir project_dir)
    );if
 valid
);let
);procedure

Allowing snapshots based on processing its comment line:

procedure( VIPVSValidateSnapshot( snp_name snp_dir snp_comment)
let(()
rexMatchp( " N[5-7]" snp_comment)
);let
);procedure

Example

  1. Create snapshot and add comment:
  2. Create another snapshot and add comment:
  3. Create SKILL and load it at Virtuoso start:
  4. Open layout window. Just default snapshot is available. default_old is hidden. Warning is issued to CIW.

Return to top