Synopsys Containers

Many Synopsys tools now include support for running the tool to access a Synopsys container.

A Synopsys container contains OS libraries and other dependencies that container-aware Synopsys tools can access from outside the container. This is especially useful for running applications on heterogeneous clients or in a cloud environment.

Using a Synopsys container provides the following benefits:

  • A consistent, controlled runtime environment
  • The correct version of required OS libraries and other dependencies
  • The ability to run an application on heterogeneous host machines

The tool and container components need to be installed using the Synopsys Installer version 5.0.1 or later. The steps to do this are outlined below.  Also, information about Synopsys Container Setup is contained in the Container Setup document.

This document contains the following sections:

Container-Enables Tools
OS Support
Singularity Installation
Container Installation
Verifying the Container Setup
Starting a Tool with Container Access
Extending the Synopsys Container (Optional)
Further Assistance

 

Tool

First Container-Enabled Version

CustomSim

P-2019.06

FineSim

P-2019.06

Fusion Compiler

P-2019.03-SP2

HSPICE

P-2019.06

IC Compiler II

P-2019.03-SP2

IC Validator

P-2019.06

NanoTime

P-2019.03-SP3

QuickCap

P-2019.03-SP3

SiliconSmart

P-2019.06

StarRC

P-2019.03-SP1

OS Support

  • CentOS / RHEL 7.x 
    CentOS or RHEL 7.1 or higher is recommended, with a 3.10.0-x kernel.
  • CentOS / RHEL 6.x
    CentOS or RHEL 6.6 or higher is compatible, but an ELOOP error may be seen when invoking a container-enabled tool.  To resolve this, mark the root mount point as recursive-shared at startup. For example,

% cat /etc/rc.d/rc3.d/S99shared
#!/bin/sh
# Mark automount points shared for containers
mount --make-rshared /

  • Other Linux Distributions
    Although Synopsys Containers provide all required dependencies, not all Linux distributions are supported.  (For example, certain kernel versions might not be compatible with Synopsys tools.)  Synopsys support is limited to distributions specified in the Qualified System Configuration, although it is likely the tools will run on distributions (and versions) not specified in the QSC.   See https://www.synopsys.com/qsc

Singularity Installation

Synopsys Installer 5.0.1 comes bundled with the Singularity container solution.   

  1. Install Synopsys Installer 5.0.1 by executing the installer .run file.
  2. Install the included Singularity 3.1.0 (if it is not already installed).
    For Singularity installation instructions, see the README.install file at installer_root/container_setup/singularity-3.1.0 (installer 5.0.1)

Container Installation

1.   Download the Synopsys Container (if not already downloaded).

The Synopsys Container (which contains the Synopsys-required OS libraries and other dependencies), is a separate download. Download the container from the Synopsys Installer 5.x EFT download directory:

  • For Synopsys Installer 5.0.1 (recommended), download the following files:

snps_container_v1.1.bin.csh
snps_container_v1.1.bin.part00
snps_container_v1.1.bin.part01

Make the .csh file executable and then execute it:
            % chmod 755 snps_container_v1.1.bin.csh
            % ./snps_container_v1.1.bin.csh

This joins the *.part0x files and creates a single snps_container_v1.1.bin file.

2.   Install, configure, and deploy the Synopsys Container. 

These steps are performed with the container_setup.sh utility located at
installer_root/container_setup/container_setup.sh # installer 5.0.1

Install the Synopsys Container

% cd installer_root/container_setup

% container_setup.sh install \
-exe /path/to/singularity \
-source /path/to/snps_container # .bin file
-target /path/to/container-installation-directory

This installs the container to the target directory and creates the .snps_container setup file. Example:

% cd /usr/synopsys/installer/5.0.1/container_setup
% container_setup.sh install \
-exe /opt/singularity-3.1.0/bin/singularity \
-source /usr/synopsys/downloads \  # dir containing snps_container .bin
-target /usr/synopsys/tools

The above commands install the v1.1 container to /usr/synopsys/tools/snps_container_v1.1

To view the options for  “container_setup.sh install”, invoke
installer_root/container_setup/container_setup.sh install -help

Configure the Synopsys Container

This is an optional step that updates the .snps_container setup file with custom information.  For example, you might wish to mount certain directories that are not automounted.  To view the options for “container_setup.sh config”, see the help:
installer_root/container_setup/container_setup.sh config -help

Deploy the Synopsys Container

This step deploys, or copies, the .snps_container setup file to the container-enabled tools.
For example,

% pwd
/usr/synopsys/installer/5.0.1/container_setup

% ./container_setup.sh deploy -target /usr/synopsys/tools

To view the options for “container_setup.sh deploy”, see
container_setup.sh deploy -help

Note:
    The “container_setup.sh deploy” step will not need to be performed every time a container-enabled tool is installed. You do not have to redo the deploy step again unless you have modified the container configuration file (installer_root/container_setup/config/.snps_container) with a text editor or by re-running  “container_setup.sh install” or “container_setup.sh config”. 

Verifying the Container Setup

Verify that the Synopsys Container configuration file will start Singularity and create a 
container environment that provides access to the desired mount points.

a. Log in or su to a regular, non-root user account.

b. Change the directory (cd) to the root directory to prevent your current directory from being automatically bound into the container.

% cd /

c. Execute snps_container to start a shell inside the container environment. For example,

% /usr/synopsys/installer/5.0.1/container_setup/config/snps_container sh

If the container is properly configured, you will see the Singularity prompt:

Singularity>

d. At the Singularity prompt, cd to your home directory:

Singularity> cd $HOME

Type the following command to make sure other home directories are present. This indicates the home directories have been mounted inside the container.

% ls ..

e. (Optional) Use the df command to see the available mount points.  Open another terminal and compare the available mount points outside of the container to the mount points available inside the container.

f. To exit the Singularity container, type “exit.”

Starting a Tool with Container Access

To run a container-enabled tool in the container, use one of the following methods:

  • Use the tool_invocation_script -container command when you invoke the tool.
    For example,  “pt_shell -container”  (for PrimeTime P-2019.03-SP1 and later).
  • Set the SNPS_CONTAINER environment variable to 1 before starting the tool.

To verify, interactively, that the tool is running inside the container, for most tools you can use the built-in printev command.  If the tool is running inside the container, you will see that Singularity-specific variables are set.  For example,
% pt_shell -container

% pt_shell> printenv PS1
PS1 = Singularity>
% pt_shell> printenv S*
SINGULARITY_APPNAME =
SINGULARITY_CONTAINER = /synopsys/tools/snps_container_1.1/data/centos7.simg
SINGULARITY_NAME = centos7.simg
SNPSLMD_LICENSE_FILE = 27020@jove
SNPS_CONTAINER = 1

Also, if you run the ps command from the Linux shell, you will see that the “Singularity runtime parent” process is running for the user account. For example,

% ps -ef | grep user1

user1  14871  6713  0 03:19 pts/0    00:00:00 /bin/sh /synopsys/tools/pts/P-2019.03-SP1/bin/pt_shell -container
user1  14919 14871  0 03:19 pts/0    00:00:00 Singularity runtime parent

Extending the Synopsys Container (Optional)

If you wish to add your own packages to the Synopsys container, you can. The following steps show how to extend a Synopsys container. Creating a container image requires root privileges.

1.      Create a Singularity recipe file.  For example,

# Singularity
# Recipe File

Bootstrap: localimage
From: centos7.simg

%post

yum -y update

yum -y install \
       netpbm-progs  # Enter space-delimited list of RPM packages here

yum clean all

2. Create a work directory on a disk that is writeable by root. For example,
sudo mkdir -p /tmp/container

3. Copy the Singularity recipe file into the work directory.

4. Copy the Synopsys image file (centos7.simg) into the work directory.

5. Build the extended container. For example,

Bash Shell:

$ cd /tmp/container

$ sudo /opt/singularity-3.1.0/bin/singularity build ./centos7.x1.simg Singularity 2>&1 | tee centos7.x1.simg.log # substitute the correct path to the singularity executable

C Shell:
% cd /tmp/container

% sudo /opt/singularity-3.1.0/bin/singularity build ./centos7.x1.simg Singularity |& tee centos7.x1.simg.log # substitute the correct path to the singularity executable

7. View the centos7.x1.simg.log and make sure there are no errors.

8. Copy the newly built, extended container into the same directory as the original container.

9. Use vim or another editor to modify the image line of the configuration file:

vim installer_root/container_setup/config/.snps_container  
# .snps_container 
#image /usr/synopsys/tools/snps_container_v1.1/data/centos7.simg
image /usr/synopsys/tools/snps_container_v1.1/data/centos7.x1.simg

10. Execute “installer_root/container_setup/container_setup.sh -deploy -target /path/to/synopsys/tools” to deploy the updated configuration file to the tools.  

Further Assistance

For further container installation and setup help, see the Container Installation document. For general information on installing Synopsys tools with Installer, see the Installation Guide

If you need personal assistance from an installation specialist, open a support case at  https://onlinecase.synopsys.com.  For Installer and Container issues, specify “Installation” as the product.