SOS Administration
SOS Administration
SOS Administration
Administration Guide
August, 2019
Revision R
Legal Notices
Copyright © 2014-2019 ClioSoft, Inc. All rights reserved. Published in the USA.
The information in this publication is provided as is. ClioSoft makes no representations or
warranties of any kind with respect to the information in this publication, and specifically disclaims
implied warranties of merchantability or fitness for a particular purpose.
The use, copying, or distribution of any ClioSoft or third-party software described in this publication
requires an applicable software license.
ClioSoft, SOS, and the ClioSoft logo are registered trademarks of ClioSoft Inc. All other
trademarks used in this document are the property of their respective owners.
2
TABLE OF CONTENTS
CHAPTER0
3
Using the SOSAdmin Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Setting Up Primary and Cache Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Configuring a Primary Server and its Local Cache Server . . . . . . . . . . . . . 48
Setting Up a Remote Cache Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Connecting Multiple Primary Servers to a Single Cache Server. . . . . . . . . 53
Adjusting the Advanced Primary and Cache Server Settings. . . . . . . . . . . 54
Adjusting Server Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Accessing Linux Servers from Windows Clients. . . . . . . . . . . . . . . . . . . . . 56
Starting the SOS Servers Automatically . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Configuring SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Configuring Client Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Enabling and Administering the SOS Web Interface . . . . . . . . . . . . . . . . . 59
Creating and Updating Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Defining a New Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Migrating SOS 6 Projects to SOS 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Incrementally Updating Imported SOS 6 Projects . . . . . . . . . . . . . . . . . . . 62
Adding Files to a Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5 Configuring Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Overview of the Server Configuration File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Selecting the Server Configuration File to Read. . . . . . . . . . . . . . . . . . . . . 79
Working With Configuration Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Configuration File Locations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Configuration File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Configuration File Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Customizing Configuration Files with SOSAdmin . . . . . . . . . . . . . . . . . . . . 81
Setting Project Access Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Host-Based Access Control in SOSAdmin . . . . . . . . . . . . . . . . . . . . . . . . . 84
Configuration File Example for Access Control . . . . . . . . . . . . . . . . . . . . . 85
4
Global and Default Access Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Access Control Best Practices for Virtuoso Data . . . . . . . . . . . . . . . . . . . . 87
Roles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Managing umask and Linux Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Setting the Default Revision Search Order, Populate, Root Directory, Branch, and
Work Area UMASK Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Revision Search Order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Directories to Populate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Work Area Root Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Branch Options for Files and Directories . . . . . . . . . . . . . . . . . . . . . . . . . . 94
UMASK Settings for Work Areas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Server-side Tcl Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Defining Reference Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Setting Up Projects for Referencing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Adding References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Specifying the RSO for a Reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Generating a Who Uses Report for a Reference Project . . . . . . . . . . . . . . 99
Syntax of the REFERENCE_PROJECT Block . . . . . . . . . . . . . . . . . . . . . . 99
Defining and Using Project Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100
Using the Revision Search Order in Project Views. . . . . . . . . . . . . . . . . . 102
Creating a Project View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Using a Project View. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Using Writable Work Areas and Specifying Work Area Types . . . . . . . . . . . . 105
Integrating SOS Projects with Change Request Tracking Systems . . . . . . . . 106
5
Example: Script for Notification of Command Results . . . . . . . . . . . . . . . 130
Server-side Triggers and the Tcl exec Call. . . . . . . . . . . . . . . . . . . . . . . . 130
Specifying Exclude, Cleanup, and Local Copy Files . . . . . . . . . . . . . . . . . . . .131
Setting the Exclude Files List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Setting the Cleanup Files List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Setting the Local Copy Files List. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Setting UDMA Rules for Automatic Cellview Packaging . . . . . . . . . . . . . . . . . 132
UDMA Rule Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Example UDMA Rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Using X Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Priority of X Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Working With X Resource Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Changing Colors and Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Displaying Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Adding Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Specifying SOS Tcl Commands in .sosrc . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Default Settings in .sosrc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Priority of .sosrc Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
6
OVERVIEW OF SOS ADMINISTRATION
CHAPTER1
This manual explains how to install, configure, and manage the ClioSoft SOS
hardware configuration management software. This manual is for CAD managers
and project leads who have an administrative role in SOS design projects.
This chapter covers the following topics:
• How Hardware Configuration Management Works
• Documentation and Support
LICENSING
This chapter explains how to install the ClioSoft SOS software and set up licensing
in the following sections:
• System Requirements
• Downloading and Installing the Software
• Upgrading to a New Release of SOS
• Licensing
• Verifying the Installation
• Integrating SOS with Your CAD System
• Installing and Configuring the SOS Web Client
System Requirements
The SOS software is supported on the following platforms and operating system
versions:
Table 1 Supported Platforms
Platform Supported OS Versions
Red Hat Enterprise Linux 5.0 and later
Microsoft Windows XP and later
The next table lists the hardware requirements for SOS servers.
Table 2 Server Hardware Requirements
Resource Requirements and Recommendations
CPU x86 multi-core processor at 3GHz or faster. Because
the primary and cache servers are multi-threaded,
ClioSoft recommends that you use a multi-CPU server
for optimal performance if you plan to run multiple SOS
server and cache daemons on the same machine.
Memory
Minimum of 16 GB. The SOS primary and cache
servers are supported by their own PostgreSQL back-
end daemons. The primary server does very little work
if caching is enabled because the cache server caches
all of the data needed. Allow for about 4 kb per
managed object to cache meta-data without swapping.
For example, a project with 50,000 object files would
need 200 MB for cached metadata.
NOTE: Slow NFS connectivity can cause performance bottlenecks by blocking access to
the SOS database.
The next table lists the hardware requirements for the client systems where users
run the SOS client software and their EDA tools.
Table 3 Client System Hardware Requirements
Resource Requirements and Recommendations
CPU x86 at 1.5 GHz or faster.
Memory Minimum of 4GB.
Network connectivity 100 Mbps
SOS servers by default require that the database repository file system be mounted
with options that ensure reliability. If the file system is mounted with either the -soft
or -async option, the server reports an error and exits. To disable this check, set
SOSD_DISABLE_MOUNT_CHECK to 1. We recommend using at least these options:
rw,hard,nointr,sync,actimeo=0,tcp
Downloading
1 Visit www.cliosoft.com and log in to your support account. If you do not have an
account, you must register for an account before downloading the software.
2 From the ClioSoft Support page, under Technical Resources, click Download
Releases.
3 Click Download to accept the license agreement.
4 Click the link to download the installation file for your release.
• If you wish to use some other location for the directory for any reason. For
example, some customers set up a different SERVERS directory for each project.
Another reason to use a different location is if you install the SOS software on a
read-only disk or partition, because the SERVERS directory must be writable by
users who need to create and manage servers.
Another way to relocate the SERVERS directory is by using a symbolic link; in this
case, it is not necessary to have all of the users set $SOS_SERVERS_DIR:
mkdir writable_servers_dir
mkdir writable_servers_dir/LOCAL writable_servers_dir/REMOTE
chmod -R a+rwx writable_servers_dir
rm -rf $CLIOSOFT_DIR/SERVERS
ln -s writable_servers_dir $CLIOSOFT_DIR/SERVERS
These permissions allow any user to create a server. Omit the chmod command to
restrict creating servers to administrators.
4 If you have a full installation but only want to use VDD as a standalone utility, set
the CLIOSOFT_CDS_DIFF variable to 1. For example, for the C shell:
setenv CLIOSOFT_CDS_DIFF 1
Here is a summary of the .cshrc file changes:
setenv CLIOSOFT_DIR path_to_SOS_installation
set path = ($path $CLIOSOFT_DIR/bin)
setenv LD_LIBRARY_PATH "$CLIOSOFT_DIR/lib/64bit:$CLIOSOFT_DIR/
lib:$LD_LIBRARY_PATH"
setenv GDM_USE_SHLIB_ENVVAR 1
Here is a summary of the Bourne shell .profile file changes:
CLIOSOFT_DIR=path_to_SOS_installation
PATH=$PATH:$CLIOSOFT_DIR/bin
LD_LIBRARY_PATH="$CLIOSOFT_DIR/lib/64bit:$CLIOSOFT_DIR/ lib:$LD_LIBRARY_PATH"
GDM_USE_SHLIB_ENVVAR=1
export CLIOSOFT_DIR LD_LIBRARY_PATH GDM_USE_SHLIB_ENVVAR
NOTE: All users need to update their Linux startup file with these variables.
Create a separate “latest version” symbolic link for each platform, as shown in the
example.
The $CLIOSOFT_VDD_DIR environment variable specifies the path to the top-level
directory of the ClioSoft installation to use for running VDD. By default, the software
uses the $CLIOSOFT_DIR directory as this path. Specify $CLIOSOFT_VDD_DIR if users
need to choose different versions of the ClioSoft software for VDD and SOS.
4 Click I Agree to accept the license agreement and continue to the Choose
Installation Type page.
5 If you use SOS with Keysight ADS, choose ClioSoft for SOS via ADS. Otherwise
choose Default.
6 Click Next and open the Choose Installation Folder page.
7 Accept the default location (recommended) or click Browse and choose a different
location. Then click Next.
8 Click Browse and choose a new or existing SERVERS folder. This will almost
always be a folder on a remote system. Windows and Linux clients share a
common SERVERS folder, so you almost never want to create the SERVERS folder in
the default location on your local Windows disk. Here is a typical path to the folder:
\\myserver.mycompany.com\edatools\clio\SERVERS
If the shared SERVERS directory is not on a shared mounted directory, specify a
SERVERS directory on the local disk and use the SOSAdmin application to create a
local server that references the remote server. This lets you specify the server
location with a URL, rather than a CIFS path. For instructions, see “Accessing
Linux Servers from Windows Clients”.
9 Click Install to continue.
10Click Next in the Installation Complete page to view the Release Notes page, and
then click Finish to complete the installation.
• installPath is the optional installation path. The default path for Windows 7 is
C:\Program Files (x86)\ClioSoft\sos_release-number. If you are
installing SOS to use with Keysight ADS, you must use this argument to override
the default path and specify a path that does not contain spaces.
• serversDir is the optional location of the SERVERS directory. The default location
is installPath\..\SERVERS.
Below are some examples.
• To install at the default location:
sos_6.23.p3s_win.exe /S
• To install at a different location:
sos_6.23.p3s_win.exe /S /INSTDIR=c:\cliosoft\sos_6.22.p3
• To install using a different location for the SERVERS directory:
sos_6.23.p3s_win.exe /S /SERVERS=z:\cliosoft\SERVERS
NOTE: If you are upgrading from SOS 6 to SOS 7, skip this section and follow the
instructions in Upgrading Linux Installations from SOS 6 to SOS 7, next.
1 Follow the instructions in “Downloading” to download the software.
2 Log in to the CAD tools software manager account.
3 Copy the installation .tar file to your ClioSoft installation directory,
$CLIOSOFT_DIR.
If your installation follows the ClioSoft recommendations, that directory will now
resemble this example, with one or more existing directories for ClioSoft releases
and a .tar file for the release that you are about to install:
% ls $CLIOSOFT_DIR
latest_sos@ -> sos_6.24.p1_linux
SERVERS/
sos_6.25.p2_linux.tar
sos_6.24.p1_linux/
sos_6.23.p1_linux/
...
In the example, we are preparing to upgrade from SOS release 6.24.p1 to release
6.25.p2.
4 Follow the instructions in “Installing the Software on Linux”.
After you run the installation script, you will have a new directory for the new
release at the same level as the latest_sos symbolic link and the SERVERS
directory.
5 Delete the existing symbolic link:
rm latest_sos
6 Update the symbolic link to latest_sos to point to the new release:
ln -s sos_6.25.p2_linux latest_sos
7 Shut down and restart the SOS servers with the Shutdown and Startup buttons in
the SOSAdmin application. For instructions, see “Shutting Down and Restarting
Servers”.
8 If your installation directory scheme is different than the suggestion above, and
$CLIOSOFT_DIR does not point to a symbolic link that you can update, tell your
users to update $CLIOSOFT_DIR to point to the new installation root.
9 Advise your users to exit and restart their design tools and the SOS client software
so that they can begin using the new version. To force an update to running
clients:
1 Click Clients in the SOSAdmin window.
2 Click Select All in the Clients dialog box.
3 Click Exit Clients.
converts your project data from the ClioSoft proprietary database format to a
PostgreSQL database. Follow the steps in the next sections to upgrade to SOS 7.
NOTE: If you are upgrading from an earlier version of SOS 7, follow the instructions in the
previous section, “Upgrading Linux Installations with SOS Minor Revisions”.
To upgrade, see the following related topics:
• Preparing to Upgrade to SOS 7
• Installing the SOS 7 Software
• Post-Installation Steps when Upgrading to SOS 7
• Migrating Work Areas to SOS 7
Licensing
This section describes how to set up and manage SOS licenses. SOS uses FlexNet
to manage software licensing. The SOS software contacts the FlexNet license server
daemon, lmgrd, running on a license server host on your network. Typically, your
organization will already have a license server host set up for your EDA tool
software, and you can use that license server host with the SOS software. Version
11.10.1 of FlexNet is included with the SOS software. You can run the license server
on Linux or Windows hosts.
When a user starts SOS, the SOS software contacts the license daemon on the
license server to obtain a license. Licenses are keyed to the host ID of the license
server.
NOTE: The SOS software uses its own server daemon sosd for communication between
SOS servers and clients. This daemon is not a license daemon. Typically, the
license daemon (lmgrd) runs on the license server host, which may be a host on
your local area network or a remote host.
This section covers the following topics:
• License Options
• Obtaining License Keys from ClioSoft
• About the ClioSoft License File
• Setting Up Named User Licensing
• Setting the License Server Environment Variable
• Configuring Licensing for Windows
License Options
ClioSoft licenses are user-based. ClioSoft offers two options for licensing the SOS
software: 24-hour reserved licensing and named user licensing.
The default license option is 24-hour reserved licensing. With this option, anyone
may check out a license. The license remains checked out for 24 hours after the user
exits all of their SOS clients.
Named user licensing requires that you maintain a FlexNet options file, typically
named users.lst,that contains a list of user IDs. (This file may also specify other
FlexNet options.) Only the listed users may run the SOS software, even if unused
licenses are available. You can modify the list at any time, but you cannot add more
users to the users.lst file than the number of purchased licenses. Changing the list
requires stopping and restarting the license daemon. FlexNet limits the frequency of
changes to the users.lst file.
Large organizations generally prefer the 24-hour reserved licensing option to avoid
the need to maintain a users.lst file and restart the daemon frequently. These
licenses have the suffix _ul (“user linger”).
With either licensing option, a single license lets a user run any number of SOS
clients.
There are three tiers of licenses: enterprise (ent), standard (std), and read-only
(rdo). Each license key in the license file contains a string for the license tier. A read-
only license lets users populate a work area and view its contents, but not make
modifications. For example, a read-only license enables the populate, update,
userev, query, and status commands, but not the co, ci, tag, snapshot, modattr,
delete, create, and rename commands. Users can specify which tier of license to
check out by setting the SOS_USE_LIC_TIER environment variable to ent, std, or
rdo. If a user sets this environment variable, SOS only checks out the specified tier
of license. If this variable is not set, the highest available tier of license is checked
out by default.
(wired) Ethernet adapter. If you use the host ID of the wireless adapter, licensing
will fail whenever the wireless adapter is disabled.
The Ethernet Address value is the FlexNet host ID for your Windows system. A
typical value is 008048e575e6. The Computer/Hostname is the Windows host
name.
3 Send the FlexNet host ID and the host name in an email message to
support@cliosoft.com. Please include your contact information, including a
telephone number, and the names of the ClioSoft products that you have
purchased (or want to evaluate).
For example:
# ----------------------------------------------------------------------
# ClioSoft License File generated on: 15.January.2013
# ----------------------------------------------------------------------
# Customer Details
# ----------------------------------------------------------------------
...
SERVER enter_hostname_here 12345678901
VENDOR cliolmd
USE_SERVER
FEATURE clio_sos_ent_ul cliolmd 6.0 1-mar-2013 25 23456789012 \
DUP_GROUP=U
FEATURE clio_sos_viadfII_ul cliolmd 6.0 1-mar-2013 25 34567890123 \
DUP_GROUP=U
Your license file contains FEATURE lines for some or all of the following ClioSoft
product options:
5 Save the users.lst file to the location that you specified on the VENDOR line in
your license file.
If some users need access to different features, you can create multiple groups. For
example, if only some of the users need access to the Cadence Virtuoso software,
but all of the users run SOS in standalone mode, you might set up these two groups:
GROUP SOS_USERS user1 user2 user3 user4
GROUP SOS_USERS_CDN user1 user2
INCLUDE clio_sos GROUP SOS_USERS
INCLUDE clio_sos_viadfII GROUP SOS_USERS_CDN
4 (Recommended) Update the appropriate Linux startup file so that the ClioSoft
license daemon starts automatically when the server restarts. Specify the full path
to the lmgrd command in the startup file.
If you change your ClioSoft license file or the users.lst file, you must stop and
restart the ClioSoft license daemon to activate the changes. Stop the license
daemon with the command lmdown -c path_to_license_file, and then restart the
daemon with lmgrd.
2 From the Start menu, choose All Programs, choose the release-specific folder for
the SOS software, right-click FlexNet Utilities, and choose Run as administrator
from the menu.
File Description
.cdsinit Virtuoso startup file
cdsLibMgr.il Cadence Library Manager startup file
cdsinfo.tag Cadence information file that contains the Design Manager
(DM) tool configuration
ClioSoft recommends that you include all three files, and the cds.lib file, in the SOS
project. This lets the files be automatically copied or linked into each user’s work area
directory, so that everyone has the correct versions of the files. A typical work area
would have this structure:
• docs (specifications and other documentation)
• scripts
• rtl (Verilog and VHDL files)
.cdsinit
Add these lines at the end of the .cdsinit file:
let( (clioDir)
clioDir = getShellEnvVar("CLIOSOFT_DIR")
load((strcat clioDir "/scripts/cds_sosviadfII.il"))
)
NOTE: To ensure that all users can run SOS, make this change to the site (global)
.cdsinit file, or include the change in the .cdsinit file in the project work area
directory.
cdsLibMgr.il
Add these lines to the cdsLibMgr.il file. These commands load the SOS menus
when the Cadence Library Manager starts.
let( (clioDir)
clioDir = getShellEnvVar("CLIOSOFT_DIR")
load((strcat clioDir "/scripts/cdsLibMgr.il"))
)
cdsinfo.tag
The cdsinfo.tag file tells Virtuoso which Design Management (DM) system to use, if
any. Each library directory should contain a cdsinfo.tag file with the correct settings
for that library:
• Project libraries that you manage with SOS need to specify SOS as the DM
system. Include this line in the file:
DMTYPE sos
• Unmanaged reference or scratch libraries should not specify any DM system.
Include this line in the file:
DMTYPE none
There should be no other DMTYPE settings in the cdsinfo.tag files.
cds.lib
Each user’s personal cds.lib file should be an unmanaged file (outside SOS
revision control) in the cds directory of their work area. All users should include a
common project.lib file in their personal cds.lib file:
INCLUDE ./project.lib
The project.lib file is managed in SOS. This means that all users get the same
definitions for the project working and reference libraries. Definitions for the project
working libraries use relative pathnames, because each user must refer to the library
in their work area. Definitions for reference libraries use full pathnames. Here is an
example:
# Reference libs not managed by SOS
DEFINE ref_lib1 /projects/common/reflibs/ref_lib1
DEFINE ref_lib2 /projects/common/reflibs/ref_lib2
DEFINE ref_lib3 /projects/common/reflibs/ref_lib3
DEFINE pdk_lib /projects/common/pdks/pdk_lib
# Project libraries
DEFINE proj_lib1 ./proj_lib1
DEFINE proj_lib2 ./proj_lib2
If those commands appear, you have updated your startup files correctly.
3 Exit Virtuoso.
For example:
cat $CLIOSOFT_DIR/adaptors/cdesigner/sos.cfg >> \
path_to_repository/setup/sos.cfg
5 Update the $SYNOPSYS_CUSTOM_SITE/.cdesigner.tcl file. This file contains
Custom Compiler customizations for third-party tools. You can have many custom
integrations being loaded from the same file.
Append $CLIOSOFT_DIR/adaptors/cdesigner/.cdesigner.tcl to the
$SYNOPSYS_CUSTOM_SITE/.cdesigner.tcl file. For example:
cat $CLIOSOFT_DIR/adaptors/cdesigner/.cdesigner.tcl >> \
$SYNOPSYS_CUSTOM_SITE/.cdesigner.tcl
For information about optional features of the Synopsys Custom Compiler
integration that you may choose to implement, see the following subsections.
4 Define this trigger in sos.cfg to automatically create the lib.defs file when a
user creates and populates a new work area:
trigger cc_SosLibMgt_trigger {
populate {
-- Checks for the lib.defs file and creates it if one is not present
exec_after "$CLIOSOFT_DIR/scripts/cc_soslibmgt"
}
}
2 Update the trigger definitions for the operations, such as the check in operation,
for which you want to track the issue ID. For example:
trigger dflt_file_trigger {
ci {
attribute issue_id;
exec_after java -jar $CLIOSOFT_DIR/cr_scripts/jira/jira_put.jar
$SOS_issue_id 1>/dev/null 2>&1 &
}
}
trigger dflt_package_trigger {
ci {
attribute issue_id;
exec_after java -jar $CLIOSOFT_DIR/cr_scripts/jira/jira_put.jar
$SOS_issue_id 1>/dev/null 2>&1 &
}
}
}
array set sos::sosDisplayAttributesTabG {LatestRev
{label Latest}
}
array set sos::sosDisplayAttributesTabG {CheckedOutBy
{label Locked}
set sos::sosDisplayAttributesColOrderG
{ "Revision" "LatestRev" "CheckedOutBy" }
To add SOS commands to the list of commands in the Miscellaneous dialog box,
add items to the global array in the $SYNOPSYS_CUSTOM_SITE/.cdesigner.tcl file.
For example:
array set sosMiscCmdTabG
{Listing "ls -l @SELECTION >@POPUP "}
In this example, Listing is the command name that appears in the dialog box, and
ls -l is the command that the user sees in the dialog box. The @SELECTION
keyword specifies the currently selected items. The @POPUP keyword specifies
that the result should be displayed in a text editor window. You can redirect the result
by using the > character, as in this example:
"soscmd status -sm -sor -sunm @SELECTION > myFile.log"
You can also define Tcl functions to execute. By default, SOS has the registered
function sos::scdMiscellenousProc. The single argument is a list of the paths of
the selected items; the return value is the result. You can override this function to
achieve a different result.
PROJECTS
This chapter explains how to set up SOS servers and SOS projects in the following
sections:
• About SOS Servers, Clients, Projects, and Work Areas
• Using the SOSAdmin Application
• Setting Up Primary and Cache Servers
• Creating and Updating Projects
For optimal performance, SOS primary servers should always have a cache server
that handles the clients’ requests to check files into and out of the project. This is
called the local cache server: “local” in the sense that both servers are located at the
same geographic location, and usually run on the same host computer. Figure 2
shows this more realistic simple case.
Figure 2: A More Realistic Simple Case
Most large design teams are spread out across multiple sites, often in more than one
country. Figure 3 illustrates this arrangement. For multi-site installations, there is
usually a primary SOS server at the main development site and an SOS cache
server at every site. This arrangement gives every user access to all of the project’s
files, as though they worked at the same facility. For the design team shown in
Figure 3, when Sally (a designer in San Jose) checks in a new cellview, her new
cellview gets copied to both the primary server in San Jose and the cache server in
Shanghai. The designers in Shanghai can begin using Sally’s new cellview
immediately.
Figure 3: Cache Server for a Remote Design Team
You can configure the cache server to be automatically updated immediately with
changed files from the primary server, updated at a specified frequency, or updated
on demand whenever a local user needs a file. Metadata about changes is always
synchronized between the primary and cache servers.
Maximizing Performance
The SOS software performs very little computation but is “disk bound” because it
reads and writes many files frequently. The key to maximizing performance is to
improve access to files on disk:
• If you use network-attached storage (NAS), which is the most common situation,
choose high-performance hardware. If there is high latency between the NAS and
the SOS primary and database servers, communication with the PostgreSQL
database will not be optimal and users may experience delays.
• For the best possible performance, store the project repository and cache on a
local disk on the server host system, rather than using network-attached storage.
• Have users create their work areas on a local disk, not a network disk. This also
improves the performance of your design tools.
• If users must use a network disk for their work area, and the work area is large,
users should set SOS_STARTUP_USE_TMP to 1 to optimize the startup process. This
optimization lets SOS clients copy the work area database file to the /tmp
directory of the local machine before reading it. This optimization is disabled by
default. Set a value in MB to enable this feature if the work area database file size
is larger than the specified value. Set this variable to 0 to explicitly disable this
feature.
figure shows the directories for an organization with two SOS servers (trinity and
neo).
Figure 4: Data-Type-Specific Directories
This approach lets you isolate the repository on a separate file server or mount point,
protecting both the server and the repository from performance and disk space
issues caused by users’ simulation and verification runs. The cache and work area
directories would typically be stored on a second file server or mount point, although
you may choose to use a separate file server for each.
The .rep directory for each server contains a pg_data subdirectory for the
PostgreSQL database, and separate subdirectories for each project’s configuration
files.
Data Security
To encrypt communication and file transfers between servers, select Use SSL in the
New Server dialog box when you create the servers. You can also enable this option
for existing servers. See
To restrict access to the project data, you can configure the servers to require client
authentication. See “Configuring Client Authentication”.
NOTE: The SOSAdmin application also has a command line interface. The syntax is:
sosadmin command [arguments]
For a list of commands, type sosadmin help. For detailed help about a particular
command, type sosadmin help command. The examples in this manual use the
SOSAdmin application, not the command line.
The Running column shows the status of each server:
Table 4 Server Status Values
Running Column Description
(SOS software version number) The server is running normally.
no The server is not running.
(blank) No cache server is defined for this primary server.
?? The server is defined, but SOSAdmin has not yet
determined the server status.
The other columns show the information that you enter when you define a server.
See “Setting Up Primary and Cache Servers”.
The next table describes the command buttons in the SOSAdmin window:
Table 5 SOSAdmin Window Commands
Command Description
New Create a new SOS primary or cache server. See “Setting Up Primary
and Cache Servers”.
Edit Update the settings for an SOS server.
Delete Permanently delete an SOS server. Deleting a server does not
delete the project repository.
Startup Start an SOS server that is not running.
Shutdown Stop a running SOS server.
Reread Config Read changes in the server configuration file. See “Configuring
Projects”.
Ping Check the status of the selected primary and cache servers.
Ping All Check the status of all of the servers and update the status of the
Running columns.
Projects Create or manage projects. See “Creating and Updating Projects”.
Project Map Define servers for reference projects whose files may be used in
other projects. See “Defining Reference Projects”.
Clients See who is connected, send messages to connected clients before
shutting down a server, close connections to the clients, or exit the
clients.
7 Choose Yes for Client Authentication Required if you want project users to
enter their user name and password each time they start a session with the
design tools and SOS software. Most organizations do not require this level of
security. For information about configuring client authentication, see
“Configuring Client Authentication”.
8 Confirm that Set up a new cache server is selected, and enter the host name.
If you expect the load on the servers to be very heavy, specify a different host
name. Otherwise, set up the cache server on the same host as the primary
server host.
9 For the Cache Command Port, enter a port number between 5000 and 50000.
Do not use the same values that you selected for the primary server port, or
ports used by any other servers running on this host. Click Recommend to
automatically choose valid, available port numbers.
10Click Browse and select or create a directory for the cache files. For optimal
performance this should be a directory on a local disk, but in most cases you will
need to select a Network Attached Storage disk. If you plan to use links to cache
work areas, the path should be a full pathname that all other users can also
access by using the exact same pathname.
11Optionally, specify a location for storing PostgreSQL continuous backups in the
Cache Backup field. For more information about continuous backups, see
“Using PostgreSQL Continuous Backups”.
12Set an appropriate value for Update. ClioSoft recommends these choices:
• If you have only one site, choose On Demand.
• If you have multiple sites in widely-separated time zones, choose Every and
specify an interval of 60 minutes.
• If you have multiple sites in nearby time zones, choose Immediate.
3 Click OK to create the primary and cache servers.
4 In the SOSAdmin window, click Startup, wait a few seconds for this dialog box to
appear, and click Yes.
6 In the SSH terminal window, type yes to connect securely to the server host.
7 Wait a few seconds and click Ping in the SOSAdmin window to check the server
status. Also check for messages in the terminal window where you started
SOSAdmin.
If the Ping command reports that it was unable to connect to the server then wait
for a few more seconds and try again.
If the server fails to start, check the primary server log file (server.log) and cache
server log file (srv_cache.log) for messages. By default, these logs are located
here:
$CLIOSOFT_DIR/SERVERS/LOCAL/server_name
However, if you have set $SOS_SERVERS_DIR, the log files are located here:
$SOS_SERVERS_DIR/LOCAL/server_name
The Ping command will fail if another process is using the port. If you suspect this
problem, click Edit, change the port number, and try to start the server again.
You can use the ps command to check the status of the server daemon
processes. The primary server daemon process is sosd, and the cache daemon
process is soscd.
Next Steps:
• If remote sites need to access this server, set up their remote cache servers now.
• Next, create the SOS project that this server will manage. See “Creating and
Updating Projects”.
• To adjust the advanced server resource settings based on the number of users,
see “Adjusting the Advanced Primary and Cache Server Settings”.
To use this capability, create server definitions that pair the cache server with each
primary server.
1 In the SOSAdmin window, click New.
2 Enter a Symbolic name for the pair of servers.
We recommend using the primary server name as the symbolic name.
3 Select both Use an existing primary server and Use an existing cache server.
You can also create a new primary server and pair it with an existing cache server.
Setting Description
Server Settings
Number of threads The default number of threads allocated when the SOS
server starts up.
Shut down DB server if The minimum free disk space in GB required to prevent
available storage less than SOS from shutting down the databases to prevent
(GB) possible database corruption due to being unable to
write out changes. The default is 10.
Write lock server if The minimum free disk space in GB required for write
available storage less than operations. If the available free space goes below this
(GB) value, the servers switch to read-only mode. The default
is 100.
Warn users is available The minimum free disk space in GB required before
storage less than (GB) SOS begins reporting warnings. The default is 200.
Check disk space every The frequency in minutes at which SOS checks for free
(minutes) disk space. The default is 10.
Tmp Path The location where postgres creates temporary objects
when needed. For maximum performance, we
recommend using a local partition such as /tmp or /
var/tmp. The default is to use /var/tmp.
Database Settings
Max DB connections The number of parallel connections maintained between
the SOS server daemon and the Postgres service.
Processing concurrent requests requires multiple
connections. For primary servers, choose a value that
accommodates all of the users on all of the cache
servers. For cache servers, choose a value that
accommodates the number of users on that cache
server. Use one of these formulas to choose a value
(pick the larger number) or see the next table for
recommendations.
Number of projects +10
Number of users + 10
The default is 60.
Memory size for shared The amount of memory that the Postgre server uses for
buffers shared memory buffers. The default is 128.
Work Memory (MB) The maximum amount of system RAM each operation is
allowed before swapping to the Tmp Path. The default
is 32.
Setting Description
Temp buffers (MB) The maximum size of a temporary file. The default is
128.
Effective cache size (MB) The estimated RAM that the system uses for caching file
data. The default is 4000.
Sequential page cost The database planner’s cost for fetching sequential data
from disk. Do not change this value except as directed
by ClioSoft support. The default is 1.0
Random page cost The database planner’s cost for fetching random data
from disk. Do not change this valu2 except as directed
by ClioSoft support. The default is 4.0
Default statistics target The number of samples that the database takes when
analyzing data for query planning statistics. Do not
change this value except as directed by ClioSoft
support. The default is 1000.
Database Logging
Log query greater than Turn on database query logging for any query that takes
(sec) longer than the specified time. The default is 60.
Enable query analysis Enable logged database query analysis to provide
debugging information. Enabling this analysis can
impact performance. The default is 0 (off).
Log nested statements Enable nested query analysis, which can help debug
database query issues. The default is 1 (on).
Log buffers Include shared buffer usage details in the query
analysis. The default is 1 (on).
Log triggers Include database trigger details in the query analysis.
The default is 1 (on).
Log verbose Enable detailed logging in the query analysis. The
default is 1 (on).
Log timing Include time spent details in the query analysis. The
default is 1 (on).
Based on the number of users and the size of the project data, these parameters can
be adjusted to gain maximum performance.
NOTE: Changes to any of the above mentioned parameters requires a server restart.
The default values for the advanced settings accommodate 50 users for a primary
server with a single remote cache server. For larger or smaller numbers of users,
use the values in this table:
2 Select the primary server in the SOSAdmin window and click Edit.
3 Click Primary Advanced Settings and enter values appropriate for the total
number of users on all cache servers.
4 Click Cache Advanced Settings and enter values appropriate for the local cache
server.
5 Click Ok in the Edit Server Configuration dialog box.
6 Select each remote cache server in turn, click Edit, and adjust the Cache
Advanced Settings based on the number of users on each particular remote
cache server.
7 Restart the servers.
Linux
For Linux hosts, add these lines to /etc/rc.local:
#!/bin/sh
# Start SOS Servers
CLIOSOFT_DIR=path_to_SOS_software
export CLIOSOFT_DIR
echo
echo "Starting SOS Server server_name"
echo
su owner_of_sos_server -c "$CLIOSOFT_DIR/bin/sosadmin startup
server_name" >/dev/null 2>&1
exit 0
Replace path_to_SOS_software, owner_of_sos_server, and server_name
with the correct values for your situation.
Windows
NOTE: It is very uncommon to run the SOS server daemons on Windows.
The daemons run as Windows services. Follow these steps to configure those
services to start automatically.
1 From the Control Panel, click Administrative Tools and then click Services.
2 Find the SOS service in the list. It will be named sosd SOS_SERVER_NAME or
sosd_cache SOS_SERVER_NAME.
3 Set that service to start up automatically.
Configuring SSL
You can configure SOS to use SSL for secure communication between primary and
cache servers.
Prerequisites
You will need:
• A CA certificate
• A private key file
• A pass phrase.
If a user does not have an X display and the SOS process is not already running, the
user must follow these steps to authenticate from the command line:
1 Start SOS without an X display:
sos -nowin
2 When prompted, enter a user name and password on the command line.
3 Background the sos process:
<Control-Z> bg
4 Start the SOS command-line interface and run SOS commands in your work area:
soscmd
NOTE: To migrate an SOS 6.xx project to the current release, continue with these
instructions and use the Import option in the Create a New Project dialog box.Use
the Re-Import button in the Projects window to update the imported project with
changes from the SOS 6.xx project.
2 Click New. The Create a New Project dialog box opens.
3 For the Name of the Project, use the same name as the server to simplify project
administration.
4 (Optional) Enter the account names for the project administrators, separated by
commas.
If you leave this field blank, the default project administrator is the owner of the
server.
5 (Optional) Enter Comments to describe the project.
6 Click Ok to create the project and then click Dismiss to close the Info dialog box
that opens.
Migrating Data from Other Revision Control Systems Into a New Project
If your existing design data is already under Linux revision control, you can use the
ClioSoft utilities to import the data into a new project. The revision control systems
listed in the table are supported:
Table 6 Utilities for Importing Data Under Revision Control
Revision Control Systems ClioSoft Import Utility
RCS rcs_import
CVS cvs_import
SVN svn_import
VersionSync vs_import
DesignSync dssc_import.pl
Type any of the import commands with no arguments to see a usage message.
The incremental import process does not support updating an SOS 7 project that
has changed since the previous import. Users can create new SOS 7 work areas
from the locked project and use the data wherever it is needed.
Next, working in SOS, you add the files to the SOS project. The procedure for adding
files is different for Virtuoso and non-Virtuoso data. See these topics:
• “Creating a Work Area for a New Project”
• “Adding New Virtuoso Cellviews to SOS Version Control”
• “Adding New Files to SOS (Non-Virtuoso Data)”
Follow these steps to add Virtuoso libraries, cellviews, and other files to SOS version
control:
1 If you have not already added the cellviews to a Virtuoso library, add them now.
2 From the Library Manager, right-click a new, unmanaged cellview or library and
choose Check In.
To let SOS choose the appropriate default values for different types of data, do not
choose a value for Revision control method.
4 Click Create All.
ADMINISTRATION
This chapter explains how to administer SOS servers and SOS projects in the
following sections.
• Creating and Restoring Backups and Archives
• Managing Projects and Servers
• Using Shared Work Areas
• SOSAdmin Command Line Quick Reference
Archiving a Project
1 From the Projects dialog box, with the server running, click Archive. The Archive
Project dialog box opens.
2 Enter a location for the exported data and click Archive in the dialog box.
3 Review the messages from SOS and PostgreSQL for any issues and click
Dismiss to dismiss the dialog box.
The Archive command generates three files for the project:
Restoring an Archive
The archive files that you create with the Archive command contain all of the
information needed to restore a project to the same SOS server or a different server.
1 Open the Projects dialog box for the destination SOS server.
2 If you are replacing the active project with an archived version, click Delete and
delete the that project.
3 Click Restore.
4 Enter the project name and the path to the exported files and click Restore.
5 Review the messages from SOS and PostgreSQL for any issues and click
Dismiss to dismiss the dialog box.
NOTE: This functionality is completely separate from the Archive and Restore commands
in the SOS Projects dialog box, which archive and restore individual projects rather
than the entire repository.
For information about best practices for continuous backups (also called continuous
archiving), and instructions for restoring from a backup, see the documentation
available at https://www.postgresql.org, especially https://www.postgresql.org/docs/
9.4/static/continuous-archiving.html.
NOTE: The Clients window is available to the server owner only, on the primary server
only.
Moving Projects
Moving a project can involve either reassigning the project to a different server,
physically moving the repository to a new path, or both.
To reassign a project to another SOS server, use the Archive and Restore
commands in the Projects dialog box to create a project archive and restore the
archive to the new server. See “Creating and Restoring Backups and Archives”.
To move the database and options files for a server and all of its projects to a new
file system, follow these steps:
1 In the SOSAdmin window, highlight the server, click Shutdown, and click Yes to
shut down the server.
2 Using operating system commands, move the .rep directory for the server to the
new file system.
3 Click Edit and update the Repository Path to match the new location. Click OK to
apply the changes.
4 Restart the server with the Startup command.
To use a shared work area with full access, users need to set their umask to 000 or
00? and then connect to the work area.
This chapter explains how to configure SOS projects with the server configuration
file, sosd.cfg, and with the SOS and SOSAdmin applications, in the following
sections.
• Overview of the Server Configuration File
• Working With Configuration Files
• Setting Project Access Controls
• Setting the Default Revision Search Order, Populate, Root Directory, Branch, and
Work Area UMASK Options
• Server-side Tcl Triggers
• Defining Reference Projects
• Defining and Using Project Views
• Using Writable Work Areas and Specifying Work Area Types
• Integrating SOS Projects with Change Request Tracking Systems
Configuring Projects 78
SOS Administration Guide
Configuring Projects 79
SOS Administration Guide
Configuring Projects 80
SOS Administration Guide
Configuring Projects 81
SOS Administration Guide
Configuring Projects 82
SOS Administration Guide
Configuring Projects 83
SOS Administration Guide
The syntax for the rules is similar to the syntax for the xhost command in the X
Windows system. A plus sign (+) grants access and a minus sign (-) denies access.
You can specify host names, IP addresses, or subnet ranges (with wildcards). The
default rule is simply +, and all hosts have access.
In the previous example, all hosts have access except for training and
demo.cliosoft.com. The next example denies access to all hosts by default, and
then specifies the allowed IP addresses:
-
+128.64.139.*
-128.64.139.100
-training.cliosoft.com
The rules above specify:
1 Deny access to all hosts.
2 Grant access to all hosts on the subnet 128.64.139.
3 Deny access to the IP address 128.64.139.100 and the host
training.cliosoft.com.
Configuring Projects 84
SOS Administration Guide
Configuring Projects 85
SOS Administration Guide
USER wallyr {
-- Define the default group for 'wallyr' to 'all_my_groups'
-- All groups that wallyr is a member of will get equal rights
-- over files owned by wallyr and group set to all_my_groups
DEFAULT_GROUP all_my_groups;
}
-- **** Default Group definitions (END) **** --
Configuring Projects 86
SOS Administration Guide
• MODIFY_ACL controls whether users can modify the access controls on files and
directories that they create.
The default access controls are:
OPEN_WORLD yes;
ACL {
READ world; -- can be owner, group or world
WRITE world; -- can be owner, group or world
MODIFY_ACL yes; -- can be yes or no, must be yes for Virtuoso
}
NOTE: The world setting in the configuration file corresponds to the All option in the SOS
graphical user interface.
If a file has READ and WRITE set to world, and OPEN_WORLD is yes, anyone in your
organization can populate their work area with the file, check it out, modify it, and
check it back in. If OPEN_WORLD is set to no, only the user names listed in sosd.cfg
can perform those operations; other users in the company cannot populate their
work areas with even a read-only copy of the file.
Roles
Roles control a user’s access permissions and optionally limit the commands that
the user can run. You assign users to roles by specifying lists of users for each role.
In the project configuration file, you can give a user the same role in all groups for a
project, or you can give a particular user different roles in different groups. The
predefined roles are:
Configuring Projects 87
SOS Administration Guide
For example:
ADMIN edaman_us, edaman_jp;
MEMBER gwong, dfisk, gsingh;
GUEST sjones;
In sosd.cfg, you can override the default command privileges listed in the previous
table for the default roles. You can also define new roles and specify which
commands users in that role may run, as in this example:
ROLE VERIF_ENGR {
COMMAND definetag, tag, snapshot;
}
In this example, users with the role VERIF_ENGR can only run the three commands
specified; they cannot create or modify files.
To assign a user to a user-defined role, use this syntax:
ROLE_NAME user1, user2, ...;
For example:
VERIF_ENGR sally, phuong, ricardo;
Configuring Projects 88
SOS Administration Guide
Groups
You control the permissions on files that users create by assigning the users to
groups. Each group typically contains users who work on related parts of the design.
For example, you might define separate groups for design engineers and layout
engineers. Users may belong to one or more groups, and should be assigned to a
default group.
NOTE: Linux group permissions do not affect SOS access control. SOS user groups are
similar to Linux user permission groups, but you define the groups in the
configuration file.
Configuring Projects 89
SOS Administration Guide
Users can override the default access control values when they add files to revision
control, unless MODIFY_ACL for the group that the user selected (schematic in the
previous figure) is set to no. Likewise, users can modify file and directory access
controls with the Modify Attrs > Source File/Dir command in the SOS application
unless MODIFY_ACL for the selected group is set to no.
Configuring Projects 90
SOS Administration Guide
user belongs. By default, if there is no USER entry for a user, that user’s default group
is the first group in the configuration file in which the user appears.
Users can override their default group assignment in two ways:
• By specifying the group in the Project Preferences dialog box (File > Project
Preferences in the SOS client). This setting takes precedence during the current
SOS session.
• By setting the $SOS_DEFAULT_GROUP environment variable. If there is only one
project, set the value to match the group name. If there are also reference
projects, users can specify default groups for each project by using this format for
the variable value: group@proj1:group@proj2:group@proj3. For example:
setenv SOS_DEFAULT_GROUP
schematic@demo:design@reference_libs:consumer@ip_catalog
READ world;
WRITE group;
}
GROUP design {
MEMBER userl, user2;
}
GROUP layout {
Configuring Projects 91
SOS Administration Guide
Configuring Projects 92
SOS Administration Guide
Directories to Populate
Use the POPULATE keyword to automatically populate specified directories when a
user creates a new work area and selects the Populate paths predefined in server
configuration option:
POPULATE "directory_name", "directory_name2", ...;
For example:
POPULATE "./cds", "./docs", "specs";
Use the NEVER_POPULATE keyword to identify directories that should be flagged as
Never Populate in new work areas.
NOTE: The Populate paths predefined in server configuration option is selected by
default when you run the New Workarea command.
GROUP layout {
MEMBER amy, penny;
WORKAREA_ROOT "./analog";
POPULATE "./sos_project.lib";
}
USER mikef {
DEFAULT_GROUP layout;
WORKAREA_ROOT "./analog";
Configuring Projects 93
SOS Administration Guide
POPULATE "./sos_project.lib";
}
Configuring Projects 94
SOS Administration Guide
Command Description
sos::get_cmd Returns the command that is being executed.
sos::get_user Returns the name of the user running the current
command.
sos::get_num_objects Returns the number of objects in the transaction.
sos::get_group_users Returns a Tcl list of users who have the specified role in
groupname [role] the specified group. Omit role to return a list of all users
in the group.
sos::get_attr_values Returns a Tcl list (array) of size num_objects that has
the value of the attribute for each object, in order. If an
attribute does not exist for an object, the returned value is
blank.
The returned array has this format:
file1 {attr1_name attr1_value attr2_name
attr2_value ...} file2 {attr1_name
attr1_value attr2_name attr2_value ...}
You can process this type of array with the Tcl array
and dict commands. In situations where both
commands could perform the necessary processing, the
array command may be faster.
The trigger procedure must provide a return value. If the trigger procedure returns a
value greater than 0, the procedure failed and SOS interrupts the command. If the
trigger procedure returns a value of less than 0, this indicates a warning, which gets
logged. A successful procedure returns 0.
Configuring Projects 95
SOS Administration Guide
The example shows two reference projects, both hosted on a server named
REFERENCE.
Configuring Projects 96
SOS Administration Guide
Adding References
1 Launch the SOS application and connect to the project work area.
2 In the Hierarchy tree, highlight the directory where you want to create a reference
to a file or folder in the external project.
3 Select Tree > Add Reference.
Configuring Projects 97
SOS Administration Guide
4 Choose the reference project from the Project list and click Browse to choose a
file or directory in the reference project.
5 Optionally, select Use Project RSO and select one or more tags, branches, or
snapshots to identify the desired revision of the referenced file or directory.
Otherwise, leave Use default selected, and SOS will use your current RSO to
select a revision of the reference file or directory. To update the reference-specific
RSO later, use the Tree > Edit Reference command. See the next section for
details.
6 Optionally, specify an Alias to use within the current project for the referenced
directory or file. Click Ok.
Repeat the Add Reference command for each reference directory or file.
Configuring Projects 98
SOS Administration Guide
• Select Use Default Rso to choose the reference object version based on the
default project Revision Search Order, instead of using a custom RSO for this
particular reference.
• Select Use Workarea Rso to specify an RSO that applies to this work area
only.
Configuring Projects 99
SOS Administration Guide
• MODIFY at the top-level of the block controls whether users can check objects in
and out of the project, or whether they can only change attributes like tags and
snapshots. This is useful when a user might be a member of both the design
project and the reference project, to prevent the user from accidentally modifying a
reference object while working on the primary project.
• For BRANCH:
• branch_name is a branch name from the reference project, into which
checked-out items will be placed.
• DIRECTORY controls whether to branch checked-out directories.
• MODIFY controls whether users can change the branch name.
You can omit any of the three sections to accept the default settings.
This example defines a read-only reference project:
REFERENCE_PROJECT reference_IP_libs {
MODIFY no;
RSO {
DEFAULT "Release_A1";
MODIFY no;
}
}
The next example defines an editable reference project:
REFERENCE_PROJECT reference_IP_libs {
MODIFY yes;
RSO {
DEFAULT "low_power", "Release_A1";
MODIFY yes;
}
BRANCH {
DEFAULT "low_power";
DIRECTORY yes;
MODIFY no;
}
}
The next figure shows the work area for the analog designer, who needs the latest
documentation and analog libraries, but not the digital modules or IP libraries. The
designer assigned to module “X” needs the latest revision of that module, and the IP
used in that module. The digital place-and-route engineer needs the version of each
digital module that is ready for place-and-route, shown by the rel2pnr tag, and
specific revisions (not necessarily the newest) of the IP modules. The Repository
area in the lower half of the figure shows the multiple available versions of these
modules and folders.
Figure 9: Work Area and Repository Contents
The next figure shows a project hierarchy that uses multiple project views. The
design_data folder is the root of the actual design hierarchy, and all of the cfg_
folders represent project views for various user roles. Notice that the analog
designer project view (cfg_analog) contains a reference to the analog folder under
cfg_layout project view (which preferentially shows the versions of cellviews that
are tagged as design_done because they are ready for layout).
NOTE: Hover the mouse over file and folder icons to see object details, including the RSO
for references.
The icon (with a red arrow) represents a reference to a folder with an alternate
RSO to the default RSO. The icon (with a black arrow) represents a reference to
a folder that uses the default RSO.
3 Add references to the project view directory for the relevant folders in the current
project and the reference projects. This example shows how to set up a layout
designer project view by choosing the RSO design_done,main for the analog
directory.
When creating a work area, users can specify that the work area be writable from the
SOS graphical user interface or from the command line. From the command line, the
syntax is:
soscmd newworkarea myServer myProject -LWRITABLE
Administrators can set the default work area type to writable (or any of the other
options) for all users, groups of users, or specific users by specifying the
WORKAREA_TYPE directive in the sosd.cfg file. The syntax is:
WORKAREA_TYPE LOCAL | CACHED | WRITABLE | LATEST
This example of sosd.cfg shows setting the work area type globally, for a group,
and for an individual user:
ADMIN edaman_us, edaman_jp;
GROUP digital {
USER wallace {
--user wallace needs local copies workarea by default.
WORKAREA_TYPE LOCAL;
}
Declaring Attributes
You declare attributes in the project configuration file,
project_directory/setup/sos.cfg. The syntax for declaring an attribute is:
attribute attribute_name {
type type_name;
label label_name;
mode attribute_category;
display {yes | no};
export {yes | no};
prompt {yes | no};
value shell_command
required {yes | no};
}
NOTE: By convention, names for predefined attributes begin with an uppercase letter.
User-defined attributes (including attributes that ClioSoft has defined in the global
sos.cfg file) should begin with a lowercase letter.
You can also declare enumerated types for attributes. The syntax is:
enum type_name {
value1,
[value2],
....
}
Each enumerated value must be a string without any embedded spaces or special
characters.
For example, you could define an attribute called fix_for to track which customer
needs a particular fix. Here is how you would define the type and the attribute itself:
-- List of customers
enum customers {
All,
Larry,
Moe,
Curly
}
-- Fix for a specific customer
attribute fix_for {
type customers;
label "Fix for Customer";
mode set;
value echo "All"
display yes;
export yes;
prompt yes;
}
Both enum and list attributes let the user pick a value from a limited set of choices.
An enum is a predefined list of items whose values cannot contain spaces. A list is
dynamically generated when, for example, a program or script opens the Check In
dialog box, and the values may contain spaces. Here is an example for a list
attribute:
list issue_type {
value $CLIOSOFT_DIR/scripts/cr_list_my_issues.tcl
}
attribute issue_id {
type issue_type;
label "IssueID";
mode set;
export yes;
display yes;
prompt yes;
}
The default client configuration file $CLIOSOFT_DIR/data/sos.cfg contains
examples of enumerated attribute types.
Here is an example of an attribute with a required value:
-- Trac Issue ID attribute
attribute issue_id {
type issue_type;
label "Trac Issue ID";
mode set;
export yes;
display yes;
prompt yes;
required yes;
}
Predefined Attributes
The attributes listed in the table are predefined for all objects. Attributes beginning
with upper-case letters and using medial capitals (for example, CheckInTime) are
predefined in the SOS software. By convention, attributes that begin with lower-case
letters are defined in the default client configuration file,
$CLIOSOFT_DIR/data/sos.cfg.
Table 13 Predefined Attributes
Attribute Value and Description
change_summary A one-line summary of the changes made to a revision of the file.
SOS uses the first line of the Log attribute as the value.
CheckedInBy The login id of the user who checked in this revision. Nobody can
change this value.
CheckedOutBy The login ID of the person who has this revision of the file checked
out. If the file is not checked out, this attribute has no value.
CheckInTime The time when the selected revision was last checked in.
CheckInTime The time when this revision of the file was checked in.
CheckOutTime The time when the file was checked out. If the file is not checked out,
this attribute has no value.
Checksum Checksum of the object. For packages, the value is the checksum of
all of the package components.
chkout_path The pathname to the location where a file was checked out. By
default, this attribute is automatically recorded when a user checks
out a file.
Description The description of the file that was entered when the file was first
created. This is a text type attribute, so it cannot be displayed in
the SOS user interface.
Group The SOS group to which the file belongs.
Log The log file comment entered for the current or selected version of
the file. You enter this comment when you check in a file. This is a
text type attribute, so it cannot be displayed in the SOS user
interface.
There are also several predefined attributes that carry information about the parent
directory of the selected object.
Table 14 Predefined Attributes for Parent Directory Information
Attribute Value and Description
PARENT_Group The SOS group defined in the project sosd.cfg file to
which the parent directory belongs.
PARENT_Owner The owner of the parent directory.
PARENT_ReadAccess Whether the parent directory is readable.
PARENT_WriteAccess Whether the parent directory is writable.
PARENT_Trigger The TCL trigger that is assigned to the parent directory.
PARENT_User1 The value of this predefined attribute.
PARENT_User2 The value of this predefined attribute.
Using Triggers
Triggers let you extend the functionality of most SOS operations, such as checking
files in or out. Triggers let you associate pre- and post-command actions with SOS
commands. You can assign triggers to files, directories, and other objects. Triggers
specify one or more of the following instructions:
• The commands or scripts to execute before an action (such as checking out the
file).
• The commands or scripts to execute after the action.
• The attributes to record, for check in and check out actions only. (Setting attributes
on check out actions is not common.)
If you specify an attribute when you check in a file, the attribute value gets
associated with the revision of the file that you check in. If you specify an attribute
when you check out a file, that attribute value is associated with the temporary,
checked-out revision of the file.
On Linux clients, commands for triggers run in a Bourne shell. On Windows, they run
as Windows commands.
For example, triggers can:
• Send email notifications when someone checks in a critical file.
• Set access controls for operations.
• Automatically run lint or other commands before checking in a file.
• Record the number of changes made in each revision.
• Record the number_of_nets attribute when a Verilog file is checked in.
NOTE: You can execute shell commands in triggers. You cannot execute SOS command-
line commands in triggers, unless you run them in the background. For that reason,
SOS command-line commands are typically only used in post-operation actions.
Most but not all commands can be extended through a trigger. See “Commands that
Accept Actions”.
Default Triggers
SOS defines default triggers for each type of object. If you do not explicitly set a
trigger when you create a new object, SOS applies the appropriate default trigger
whenever you perform an operation on the object (check in, check out, and so forth).
For example, all of the default triggers set the chkout_path attribute when you
check out an object. Table 15 lists the default triggers.
Table 15 Default Triggers for Objects
Object Type Default Trigger Description
Files dflt_file_trigger This trigger applies to all managed
files.
Directories dflt_dir_trigger This trigger applies to all managed
directories.
These triggers have basic definitions in the default sos.cfg file. You can override
those definitions in your site or project configuration files.
Defining a Trigger
Trigger definitions are a list of SOS commands together with the shell commands to
run before and afterwards, and the attributes to compute or set when the command
is executed. The syntax for triggers in sos.cfg is:
trigger trigger_name {
sos_command_1 {
exec_before shell_command_1
[exec_before shell_command_2...]
exec_after shell_command_3 [...]
[exec_after shell_command_4...]
attribute attribute_name_1 ;
[attribute attribute_name_2 ; ... ]
}
sos_command_2 { ...
}
...
}
where shell_command is usually a script and attribute_name is an SOS
attribute. Do not quote shell_command, except in the unusual situation that the
command name itself contains spaces.
NOTE: Client systems need to be able to resolve the path to the shell_command. Keep
this requirement in mind when you have project users located at multiple sites.
This example uses the default directory trigger to restrict who can use the delete
command. The trigger specifies that only the project lead can delete a directory.
trigger dflt_dir_trigger {
delete {
-- Allow only the project lead to delete directories
exec_before /projects/my_project/setup/scripts/ac_lead_only }
} -- trigger dflt_dir_trigger
This trigger calls the script ac_lead_only, shown below, to enforce the restriction on
the delete command:
#!/bin/csh -fe
set UID = $SOS_LOGIN_NAME
set LEADID = toolman
if ($UID != $LEADID) then
echo "** Only the project administrator may perform this operation."
exit 1
endif
exit 0
For more examples, see $CLIOSOFT_DIR/data/sos.cfg.
The following sections describe the keywords in trigger definitions.
exec_before
The text between the exec_before action and the end of the line (which you can
extend with a backslash character \), is submitted to a Bourne shell /bin/sh before
the SOS command is executed. You can specify multiple exec_before commands
for each SOS command. If the shell does not exit with normal status, the SOS
command does not run.
The exec_before action is useful for operations like these:
• Process controls, such as running a Lint check before checking in Verilog files
• Access controls, such as preventing check-ins during a scheduled backup window
exec_after
The text between the exec_after action and the end of the line (which you can
extend with a backslash character \), is submitted to a Bourne shell /bin/sh after
the SOS command is executed. You can specify multiple exec_after commands for
each SOS command. SOS ignores the exit status of the exec_after action.
The exec_after action is useful for operations like these:
• Generating email notifications
• Cleaning up temporary files that editors create
attribute
The specified attribute is recorded in the SOS database when this action is
executed. The attribute keyword is allowed only for the co, ci, and create
commands. You can specify multiple attributes for each SOS command.
You must declare attributes before you reference them, earlier in the configuration
file (or in another configuration file that was read earlier).
With the create command, you can only use the attribute keyword to assign a
value to a predefined file attribute, not to a revision attribute.
SET
The SET keyword lets you use the value of an SOS environment variable as the
value for an object attribute, such as the Group or Icon attribute.
This example causes newly-created objects to inherit the Group attribute of their
parent directory (which would not happen by default).
trigger cdsgdm_file_trigger {
create {
attribute Group {
value SET $SOS_PARENT_Group
}
}
}
SOS_PARENT_Group is one of the several environment variables that carry
information about the parent directory of the selected object. See “Predefined
Attributes for Parent Directory Information” for a complete list.
SHELL
The SHELL keyword executes a shell command. This keyword is optional. Executing
a shell command is the default behavior if no keyword is specified for a trigger.
TCL
The TCL keyword executes a function in the sos.tcl file, which must be located in
the same directory as the sos.cfg file. The TCL function’s return value gets
assigned to the specified attribute. This keyword is especially useful for enforcing
access controls by setting the Group attribute, but you can use the TCL keyword to
set any attribute value. The sos.tcl file must be located in the same directory as the
sos.cfg file.
NOTE: The contents of the sos.tcl file must follow Tcl syntax rules.
This example shows how to use the SET and TCL keywords to set up access control
lists based on view names for a Virtuoso design. The access control requirements
for the project are:
• Don’t allow design engineers to edit layout views.
• Don’t allow layout engineers to edit schematic and symbol views.
• Any one on the analog team can edit any other views.
• For other types of objects, inherit the Group attribute from the parent directory.
The sosd.cfg file defines the access control list and the groups:
OPEN_WORLD no;
ADMIN toolman;
GROUP analog {
MEMBER sheldon, amy, penny, leonard;
}
GROUP design {
MEMBER sheldon, amy;
}
GROUP layout {
MEMBER penny, leonard;
}
GROUP digital {
MEMBER howard, raj;
}
The sos.cfg file defines the triggers that let the Group attribute be set or inherited:
trigger dflt_dir_trigger {
co {
attribute chkout_path;
}
create {
attribute Group {
value SET $SOS_PARENT_Group;
}
}
}
trigger dflt_file_trigger {
co {
attribute chkout_path;
}
create {
attribute Group {
value SET $SOS_PARENT_Group;
}
}
}
-- Assign All layouts to group layout
-- Assign All schematics and symbols to group design
-- All other views assign to group analog
trigger cdsgdm_file_trigger {
co {
attribute chkout_path;
}
create {
attribute Group {
value TCL set_view_group
}
}
}
Finally, the code in sos.tcl sets a value for the Group attribute based on the view
name:
proc set_view_group {} {
global env
#If the view is layout* assign group layout
if {[string match "*/layout*" $env(SOS_OBJ_PATH) ]} {
return "layout"
}
#If View is a schematic* or symbol*- assign to group design
if {[string match "*/schematic*" $env(SOS_OBJ_PATH) ]} {
return "design"
}
if {[string match "*/symbol*" $env(SOS_OBJ_PATH) ]} {
return "design"
}
#Any other view or file set group to the parent group
# Example: phyConfig, data.dm will get permissions of the parent group
return $env(SOS_PARENT_Group)
}
/projects/SOS/scripts/script_name
• Use an environment variable, set to point to the appropriate scripts directory at
each site:
$SOS_SCRIPTS/script_name
• Place the scripts in the project_repository/setup/SCRIPTS directory. When
the SOS client starts, it copies all of the scripts in that directory to .SOS/SCRIPTS.
This means that you can run the script with this path:
.SOS/SCRIPTS/script_name
Be aware that a user can edit the script in the .SOS/SCRIPTS directory. if scripts
are meant to enforce a strict process flow or access control that users should not
be able to override, do not use this method.
For more information about the SOS commands in Table 16, type soscmd help at
your Linux prompt.
For the most current information about the commands that do accept actions, see
the system default client configuration file, $CLIOSOFT_DIR/data/sos.cfg.
See Table 13, “Predefined Attributes” on page 114 for a list of predefined attributes.
Table 17 Predefined Environment Variables
Variable Description
SOS_CURRENT_REV The version number of the current version of the file or
directory in your work area. This value is only available if the
script is operating on a file or directory that is under SOS
revision control.
SOS_FLAGS The state of the object in the work area. Each bit
corresponds to a state of the object. You can use the
status command to check the value.
• 0: The file has been checked out by the user in that work
area.
• 1: The file is not the latest revision on the branch.
• 2: The file has unmerged branches
• 3: The current version in work area does not match the
RSO of the work area
• 4: The current version has been checked out in a different
work area.
• 5: The current revision has been terminated.
• 6: The file has been checked out without a lock.
SOS_LOGIN_NAME The login name of the user running the command.
SOS_NUM_SELECTED The number of objects currently selected.
SOS_OBJ_CLASS The type of object selected, one of the following:
• src_file: a file that is under SOS revision control.
• src_dir: a directory that is under SOS revision control.
• src_pack: a package that is under SOS revision control.
• src_symlink: a symbolic link that is under SOS revision
control.
• tmp_file: a file that is not under SOS revision control.
• tmp_dir: a directory that is not under SOS revision
control.
• tmp_pack: a package that is not under SOS revision
control.
• tmp_symlink: a symbolic link that is not under SOS
revision control.
• revision: a revision of a file or directory under SOS
revision control.
• tag: a tag on a revision of a file or directory.
• branch: a branch of development from a revision of a file
or directory.
SOS_OBJ_LIB The internal location under which the object resides in the
repository and cache
SOS_OBJ_PATH The path to the selected object relative to the root of the
work area.
SOS_OBJ_SRC The internal unique name assigned to the object as
maintained in the repository and cache.
SOS_PROJECT The project name.
SOS_PROJECT_PATH The path to the repository from the primary server.
SKILL Triggers
You can set up SKILL triggers to be executed when you use the Virtuoso user
interface to check in, check out, or tag an object. For example, a pre-event trigger
can run a Check and Save operation before a schematic is checked in. These
triggers are specific to SOS, and are different from the Cadence-supplied generic
DM triggers. For instructions on setting up and using SKILL triggers, see this file:
$CLIOSOFT_DIR/scripts/cds_sosviadfII_vars.il
filename=$(basename "$SOS_OBJ_PATH")
extension="${filename##*.}"
if [ $extension = v ];
then
echo "verilog_file_trigger"
else
echo ""
fi
attribute Log {
required yes;
}
attribute line_count {
value .SOS/SCRIPTS/tb_line_count
}
}
}
co {
attribute chkout_path;
}
ci {
-- Pre-event action
exec_before /projects/common/scripts/lintchk
}
}
The drawback to defining the lint check action in this way is that you need to
somehow determine which files should have this trigger associated with them. It
would be easier to run the lint check by modifying the dflt_file_trigger to run a
script that checks whether the file is a Verilog file, and if it is, runs the lintchk script.
However, this approach means that the script gets invoked for all files, even though
the lint check only runs on the Verilog files; this is inefficient.
A second approach would be to change the Trigger attribute during the create
operation by modifying the dflt_file_trigger:
trigger dflt_file_trigger {
create {
attribute Trigger {
value script_to_determine_what_trigger_value_to_set
}
}
}
syntax is the same as for the exclude command, except that patterns may not
contain directory names.
cleanup {
"pattern1",
"pattern2",
...
} -- cleanup
For example, to remove temporary files that end in .cd% or .cd~:
cleanup {
"*.cd%",
"*.cd~"
} -- cleanup
For more examples, see $CLIOSOFT_DIR/data/sos.cfg.
NOTE: You can use UDMA rules to combine any set of related files, not just cellviews.
After you add a set of files that meets the UDMA rules to SOS revision control, SOS
applies the rules automatically and creates packages. Automatic packaging happens
the first time that SOS examines the contents of the changed folder (for example,
when a user expands a directory to view the contents or refreshes the tree view of
the folder in the SOS application).
// A directory must contain sub directories labeled "sch", "sym" and "wir".
libid matchall
“*/sch”,
“*/sym”,
“*/wir”;
// The composite object must contain files below the sub directories matching
// package name. Also extensions on the file can be any nonnegative integer.
include globplus
“sch/$1.[0-9]*”,
“sym/$1.[0-9]*”,
“wir/$1.[0-9]*”;
}
The next figure shows the result of applying this rule to newly-created DxDesigner
cellviews.
Figure 11: UDMA Rules Applied for Mentor DxDesigner
Applying these rules does not move files into new folders on the file system. In this
example, the files for each sheet remain in their original parent folders. Only the
representation within SOS changes. This is why the sch, sym, and wir folders
appear as unmanaged files with lavender-colored icons in Figure 11 (right). Hiding
unmanaged files from view in SOS simplifies the tree view and excludes files (such
as lock files) that the EDA tool manages automatically.
Using X Resources
You can customize the SOS application graphical user interface by setting X
resource values. You can set values globally, for a project, or for an individual user.
Using X resources you can:
• Set colors and fonts. For example, to change the main window background color,
modify this X resource:
Sos.workAreaDisplay.windowBackgroundColor: white
• Define which attributes to display.
• Add user-defined commands as buttons in the user interface.
• Set the default revision search order.
Priority of X Resources
SOS reads the X resources in the following order:
1 The file $CLIOSOFT_DIR/data/Sos.ad (Linux) or Sos.win.ad (Windows)
2 The settings in the X server, which are typically set by xrdb.
3 The site-specific Sos.ad or Sos.win.ad file in $SOSD_CONFIG_DIR. See
“Configuration File Locations”.
4 The file server_name.rep/project_name/setup/Sos.ad or Sos.win.ad.
5 The file specified by the environment variable $XENVIRONMENT.
6 If the file specified by $XENVIRONMENT does not exist, or the environment variable
is not set, the file ~/.Xdefaults.
To change a resource for all users working on a specific project, edit
server_name.rep/project_name/setup/Sos.ad. To make changes to an
individual user’s environment, edit ~/.Xdefaults or the file $XENVIRONMENT (if it
exists).
Restart the SOS clients to load any changes that you make to X resources. If you
change Tk X resources (names beginning with Sos* for fonts and colors used in
dialog boxes, menus, and buttons), you must also run xrdb:
xrdb –merge X_resource_file
NOTE: On Windows, the path to the system default X resources file is:
installation_directory\data\Sos.win.ad
For example:
C:\ClioSoft\sos_6.30p1\data\Sos.win.ad
Also, the software looks for the user .Xdefaults file in $HOME/.Xdefaults if
$HOME is defined, or otherwise in C:/.Xdefaults.
Follow the next steps to perform these tasks with X resource files:
• Retrieve a copy of the current global or project X resources file for editing.
• Create or update a file from a template.
• Install a new or updated file in the correct location.
1 Highlight the primary server in the SOSAdmin window and click Projects. The
Projects window for the server opens.
2 Highlight the project in the Projects window and click Customize.
3 For Select config file, choose Client GUI.
4 Select your operating system, click Get, and do one of the following:
• To edit the existing configuration file, highlight Get existing project cfg and
click Select. By default, new projects do not have an X resources file and this
option is disabled.
• To retrieve a copy of a template X resources file, choose Get a template,
highlight a template, and click Select.
5 Specify a destination folder and file name.
6 Edit the file with a text editor.
7 From the Projects window, click Customize again.
8 Click Put, browse to the file that you edited, and click Open.
9 Restart your SOS client.
Displaying Attributes
The main SOS window shows attribute values to the right of the Hierarchy tree. By
default, four attributes appear: the CheckedOutBy attribute (labeled Locked), the
CheckedInBy attribute, the CheckInTime attribute, and the change_summary
attribute. If the file is checked out, the Locked column shows the login ID of the user
who checked out the file. If the file is not checked out, this column is empty. The
Change Summary column shows your check out comment if you have the file
checked out in this work area; otherwise, this column shows the check in comment
associated with the file revision that you have in your work area (which is not
necessarily the latest revision).
By updating the related X resources, you can change and rearrange which attributes
are displayed. You can display all types of attributes except text attributes (because
they are multi-line attributes). The Sos.attributes.list resource defines which
attributes get displayed and the order of the columns:
Sos.attributes.list: attribute1 [attribute2 ...]
For each attribute, three resources define how the attribute gets displayed:
Sos.attributes.attribute_name.display: {yes | no}
Sos.attributes.attribute_name.label: "label"
Sos.attributes.attribute_name.width: integer
For example, if you have a user-defined attribute issue_id which contains a bug
tracking number, you would modify Sos.attributes.list to include issue_id and
define three new resources:
Sos.attributes.list: CheckedOutBy issue_id change_summary
Sos.attributes.issue_id.display: yes
Sos.attributes.issue_id.label: "Bug #"
Sos.attributes.issue_id.width: 5
You can also change how the default attributes are displayed:
• To make the change_summary column 60 characters wide:
Sos.attributes.change_summary.width: 60
To move the change_summary column to the left of the CheckedOutBy column:
Sos.attributes.list: change_summary CheckedOutBy
Adding Buttons
You can use X resources to define buttons that appear on the right side of the SOS
window. The list of buttons and their order is defined by the resource
Sos.buttons.list. To modify an existing button, copy the relevant resources from
$CLIOSOFT_DIR/data/Sos.ad into the .Xdefaults file in your home directory, and
make the necessary changes.
User-defined buttons can execute Linux commands, Linux shell scripts, SOS Tcl
commands, or Tcl scripts. If no objects are selected, the script or command runs
once. If multiple objects are selected, the script or command runs once for each
selected object.
Follow these steps to add a user-defined button:
1 In your personal ~/.Xdefaults or the project Sos.ad resources file, define the
label for the button:
Sos.buttons.NAME.label: LABEL
The LABEL string may contain spaces and does not need to be quoted.
2 Define the command for the button
Sos.buttons.NAME.command: [shell | source] path_to_script_or_cmd
where path_to_script_or_cmd is a Linux command, Linux Bourne shell
script, SOS Tcl command, or Tcl script. The path must be accessible to all clients,
so use environment variables or common mount paths as needed. See “Making
Scripts Accessible at All Project Sites”.
Anything after the shell command is submitted to the shell. The shell script can
accept arguments. This example runs tclsh and passes in a file name as an
argument:
Sos.buttons.ipcompare.command: shell $CLIOSOFT_DIR/bin/sostclsh
.SOS/SCRIPTS/ip_compare.tcl
Only one argument may follow the source command: the name of the Tcl file to
source into the SOS Tcl interpreter. Use this option carefully, because syntax
errors or other mistakes might cause the SOS process to hang or crash. This file
cannot be a Tcl command, and the file does not take any arguments.
If you omit both source and shell commands, SOS treats the argument as a
built-in SOS Tcl procedure. For example, the Check In button in the GUI is defined
as:
Sos.buttons.ci.command: gui_check_in
The gui_check_in procedure is a built-in SOS Tcl procedure.
3 Copy the Sos.buttons.list resource from the site or project Sos.ad file to a
personal or project X resources file.
4 Add your button to the list in any position:
Sos.buttons.list: create co ci ... NAME ...
where NAME is the same name you used in the label and command resources.
/dev/null. For example, to redirect stdout and stderr for the user-defined Lint
button to the selected file name with a .lnt extension, use this command resource:
Sos.buttons.lint.command: shell verilint 1>$SOS_OBJ_PATH.lnt 2>&1 &
The command or script is invoked in a Bourne shell in the background. If your script
is written for a different shell then make sure that you use the proper notation to run
the script in the correct shell. For example, the report script is written in the C shell,
so the first line of the script is:
#!/bin/csh -f
The next example shows how you could define a Report button to generate reports
about files. These are the X resources:
Sos.buttons.list: create co ci ... report
Sos.buttons.report.label: Report
Sos.buttons.report.command: shell /project/scripts/report
This is the report script:
echo "${SOS_SELECT_INDEX}. $SOS_OBJ_PATH"
echo " Revision: $SOS_CURRENT_REV"
echo " Change summary: $SOS_change_summary"
echo " RSO label: $SOS_MatchedLabel"
echo " Checked in by: $SOS_CheckedInBy"
echo " Check in time: $SOS_CheckInTime"
To change the default work area type from Local Copies to Links to Smart Cache,
change the value of newworkarea.wa_type to 4. To enable concurrent checkout, set
co.concurrent to True.
For more information about customizing the user interface, contact ClioSoft Support.