Title: 1CADENCE DESIGN SYSTEMS, INC.
1Electronic Licensing Techniques and Technology
- ICU - September 2003
- Scott Baeder, Sr. Architect, Cadence Design
Systems - baeder_at_cadence.com
2Agenda
- Introductions
- Licensing A Brief Overview
- Technology
- The Next Generation
- Techniques
- Understanding your Environment
- Understanding Cadence License Files
- Understanding Cadences Licensing Standards
Policies - Troubleshooting Licensing Issues
- Other Gotchas
- Useful Pointers
3Introductions
- Scott Baeder baeder_at_cadence.com
- Sr. Architect specializing in Licensing and
Installation Technologies - Over 20 years in Electronic CAD
- Involved in Licensing and Installation at Cadence
for over 12 years. - Involved with product definition and licensing
methodologies - Helped define many of the next generation
procedures in place today. - Attended my first ICU in 1995
- Served as Advocate in System Administration for
several years
4LicensingA Brief Overview
Back to Agenda
5Licensing A Brief Overview
- Licensing at Cadence is Complex
- Getting consistency is like herding Cats
- In 1998, we had over 600 products from 5
different Bus (from 20 different companies) - It has only gotten worse over time as we have
grown - Some products (part numbers) have been around a
LONG time - Its more painful to change them than it is to
live with minor anomalies - Licensing Policies are driven by the Business
Model - And, the model has changed several times over the
past 15 years Point tools, mergers, FIRM vs.
STREAM, Floating vs. Locked, etc.
6Licensing A Brief Overview
- Cadence delivers a new, complete license file is
sent to the customer anytime - They purchase additional software
- They re-mix applications between servers
- Cadence releases an updated version of software.
- The license file(s) as generated by Cadence, will
allow all supported releases of a given part
number to operate correctly. - As long as version number in file is greater than
or equal to version requested.
7Licensing Starts To Evolve
- Initial process of creating products,
implementing licensing very loosely managed in
the early 90s... - First set of OMI Policies put in place in
mid-90s to - Manage process of license creation and fulfilment
from RD perspective - Provide uniform functionality and behaviour
across entire product lines - Instituted change control process within RD
- Migrate new acquisitions to cdslmd based scheme
- Use common APIs a wrapper to hide the FLEXlm
API
OMI Orderability, Manageability, Installability
8Licensing Starts To Evolve
- In 2001, introduced Corporate Product Master
database to manage all product lines enforce
all product/features policies - CPM is more Product Centric vs. historical
Release Centric approach - BUT...
- As important as these efforts were, they were
internally focused - Licenses were fulfilled from separate and
antiquated systems - SoCadence recognized the need to
- Dramatically change the way we interact with our
customers - Create an open, flexible infrastructure to
support future and existing business models - These were some of the catalysts for a Next
Generation System
9TechnologyThe Next Generation
Back to Agenda
10Next Generation Fulfilment
Bring Cadence Closer to our Customers
- Our Goal
- Increase customer satisfaction
- Increase customer productivity and environment
sustainability - Provide infrastructure for simplification and
automation - Provide better information to manage product
portfolios
Existing Infrastructure
New Infrastructure
11Next Generation Fulfilment
- Ensure security compliance
- Enforce new policies
- Complete visibility of configuration
- Increase accuracy
- Enable complete contract compliance
- License generation on demand
- Faster turn around time
24x7, Fast Reliable Access
12Next Generation Fulfilment
- Unified and secured infrastructure for Contract
Management and Configuration Fulfilment - 24x7 on demand system availability over internet
- Unified database designed with layered
entitlement - Unified and accessible Reporting
- Streamlined license management by providing
complete license files with access to the latest
versions - One unified license file for each server
- Product Licenses are generated with the latest
entitled version
13Licensing Continues To Evolve
- BUT..
- As important as these efforts were, they were
focused on Fulfilment - The actual licenses being delivered were still
limited by the FLEXlm implementation - Focus on the core licensing technology to
- Enable more flexible licensing (packaging),
- We need to easily create new product packaging
and Platforms - Provide customer requested features (customer
satisfaction) - Subscription vs. Version based keys
- Enhance Security
14Next Generation Technology
- As an early adopter of FLEXlm, Cadence acquired a
source code license from Globetrotter. - Cadence made several modifications to the plain
vanilla FLEXlm code. - These were implemented to provide functionality
that was not available in FLEXlm at that point in
time - Made it difficult to update to a new version of
FLEXlm code - While this was corrected, we are still limited
due to license file format restrictions. - Cadence still uses the v2.4 file format of FLEXlm
- Given the critical nature of licensing, the
cost/risk of making any change must be carefully
analyzed. - This all means that we need to take a slow,
methodical approach before any changes are
implemented.
15Next Generation Technology
- Current file format looks like this...
- FEATURE 34510 cdslmd 5.000 01-jan-2004 10
1234567890ABCDEEDCBA UHD 80654ae1 - While a future license file may look more like
this... - FEATURE 34510 cdslmd 5.000 01-jan-2004 10
VENDOR_STRINGUHD \ DUP_GROUPUHD
HOSTID80654ae1 \ ISSUED03-mar-2003
START01-jan-2002 \ SIGN"002A 0144 4AA5 01FD
BA8C 5AF8 17D5 5272 \ 1FFC 8861 FC63 A1A5 7DC3
2059 D058 1E12 0AF7 9112 233C C350 \ 4FC7 C808
4213 A7C1 9375 4617 C3F4 E32E C379 5882"
- PACKAGE Complex_Feature cdslmd 1.0
COMPONENTS"Verilog-XL2.4 325105.0"
\ OPTIONSSUITE_RESERVED SIGN00504091605D - FEATURE Complex_Feature_2 cdslmd 1.0 permanent 2
\ SUITE_DUP_GROUPU DUP_GROUPU \ SIGN"002A
0144 4AA5 01FD BA8C 5AF8 17D5 5272 \ 1FFC 8861
FC63 A1A5 7DC3 2059 D058 1E12 0AF7 \ 9112 233C
C350 4FC7 C808 4213 A7C1 9375 4617 \ C3F4 E32E
C379 5882"
16Next Generation Technology
- Taking a long-term, phased approach
- Phase 0 Gather Requirements
- Phase I Solution Development
- Comprehensive backward compatibility testing with
Macrovision - Get lots of feedback and input from customers
- Phase II Beta Rollout
- Phase III Full scale rollout
- Deploy changes to servers and license files to
customers - Phase IV Product Compatibility
- Work with RD to implement client side changes
17Next Generation Technology
- Current testing has uncovered several issues...
- We are currently limited in what we can support
by the code already deployed in the field - Working closely with Macrovision to define
strategy for enhanced compatibility (now and
going forward). - Quality (Compatibility) more important than
schedule
Back to Agenda
18TechniquesManaging your Licenses
19Understanding your environment
- Different user groups, each having their own set
of products. Licenses are not shared. - Different user groups, each having their own set
of products, but can share few licenses with
other groups - One set of licenses shared by all groups
- Etc...
- In other words, almost every situation is unique
20Understanding your environmentSingle Server
- Licenses can be checked out only from this server
- Automatic reconnection
- If the license server goes down, there is no
other server to connect to - Queuing behavior
- If all of the licenses are already checked out
and the product supports queuing, you will be
queued to this server - Characteristics of a Single Server
- This setup is encouraged if you have few users
- Maintenance is easy
- Communication and network reliability problems
are minimal
21Understanding your environmentMultiple servers
- Licenses can be checked out from multiple servers
- User configuration is more complex...based on the
type of configuration implemented. - Automatic reconnection
- If one server goes down all products connected to
that server will try checking out from other
servers automatically - Queuing behavior
- If no licenses are currently available and the
product supports queuing, the product will always
queue to its Primary server. - Characteristics of Multiple servers
- This setup is encouraged if you have moderate to
large set of users - Communication and network reliability problems
are minimal
22Understanding your environmentFault-Tolerant
Servers
- What is a Fault Tolerant Server?
- Multiple machines acting as a single logical
server. Note all three servers must be identical
platform/OS release. - Cadence only supports a configuration with three
machines - If the master license server goes down one of
the slave servers will take over. - Automatic reconnection
- All active licenses will reconnect to the new
master. - Queuing behavior
- Acts like a single server (because it is!)
- Characteristics of a Redundant server
- User configuration is fairly straightforward
- Maintenance is high
- Communication and network reliability problems
23Understanding your environmentSet up a proper
search path
- We recommend using port_at_host instead of the ltpath
to the filegt - Allows better fault tolerance when license files
are changed. - The license server is located using a PATH that
is created using the following CDS_LIC_FILE,
Clients file, LM_LICENSE_FILE, Default location
of file - Each of these may contain several servers, and
they are concatenated together to form the
license PATH - Users should be setup such that their primary
server is the first server their product looks
for a license - NOTE The path is an environmental variable, and
has a length limit (Shell/OS dependant)
24Understanding your environmentSet up a proper
search path
- Keep the final PATH as SHORT AS POSSIBLE.
Whenever possible, do not put every possible
servers for every possible products into
LM_LICENSE_FILE - The more servers that are in the path, the worse
the performance can be . there are several
negative checks... - Will help avoid problems related to the loading
of other vendor license files into Cadences
application.
Back to Agenda
25Understanding Cadence License FilesTypes of
Licenses
- Job vs. User (UHD) license types
- Unique job id vs. unique User/Host/Display
triplet - Uncounted licenses
- 0-quantity license will be uncounted,
essentially it is treated as if there were an
infinite number of these licenses. - All 0-quantity licenses from Cadence are
node-locked, and do not require a server. - Site licensing is somewhat related to the
uncounted type, but requires a server
26Understanding Cadence License FilesTypes of
Licenses
- Temporary
- expires 45 days or less from the start date (for
that FEATURE) - Expiring Permanent licenses
- FEATURE that has an expiration date greater than
45 days from the start date for that FEATURE - Non-expiring Permanent licenses
- FEATURE that never expires
- These FEATURES have an expiration year set to 0
e.g. 25-dec-0000
27Understanding Cadence License FilesA Typical
License File...
- THIS LICENSE FILE HAS BEEN GENERATED FOR HOSTID
xxxxxxxxxx -
- Please replace "Cadence_SERVER" with
hostname of your - machine in line "SERVER Cadence_SERVER
lthostidgt 5280" -
-
- DAEMON ambitd ./ambitd
- FEATURE BuildGates ambitd 3.000 15-jan-2003 1
BCCC2F48ED4539D26790 "" - FEATURE Envisia_synthesis_with_PKS ambitd 4.000
15-jan-2003 5 DC4C5FD82448AD7BA89B "" - FEATURE libcompile ambitd 3.000 15-jan-2003 6
2C5CFF38F55BF5A2F8DD "" -
- DAEMON cdslmd ./cdslmd
- FEATURE 100 cdslmd 4.400 15-dec-2002 12
0CBCEF48D95A0315CA56 "UHD - .
- .
- .
28Understanding Cadence License FilesProduct /
Feature Mapping
- Product id to Feature mapping
- -----------------------------------------
-
- Product id 111 Quantity 3
- Feature 111
- Feature plotVersa
-
- Product id 11400 Quantity 7
- Feature 11400
- Feature 300
- Feature 312
- Feature 960
- Feature 963
- Feature 964
- Feature plotVersa
-
- Product id COMFLT Quantity 8
- Feature Cierto_SPW_comm_lib_flt_pt
- Feature SPW_LIB_COMM_LIB
29Understanding Cadence License Files Errors and
Warnings
- The following are typical of the type of message
that may be appended to your license file - These usually indicate a license configuration or
generation issue that needs to be resolved -
- 32110 ( The license generator does not
recognize this product number ) - EF01 ( Feature IC_editfast is not
available. since the - "PCBDA" daemon is not supported )
- FET1101 ( The license generator does not
recognize this product number ) - SYKCVH ( The license generator returned no
feature lines for this product ) -
Back to Agenda
30Understanding Cadences Licensing Standards
Policies
- Licensing covered by approved OMI standards.
- All licensed Cadence products should exhibit the
same behavior patterns with regards to licensing
interactions. - License Naming Conventions
- Create readable license names
- Use full functional or product name
- Avoid acronyms (e.g. pcompxvf), numbers (e.g.
21000) and special characters (, , , etc.)
31Understanding Cadences Licensing Standards
Policies
- Strive for One FEATURE per product.
- Easier to understand usage reports and license
file. - Use model is more likely to be followed.
- May have separate features if product has
independent pieces (or for compatibility and/or
Product Family growth. - Licensing for any given part number should remain
compatible - Sometimes leads to confusion when features that
use older (obsolete) daemons are still shipped to
the customer.
32Understanding Cadences Licensing Standards
Policies
- Daemon Transitions Acquisitions
- Fact
- Cadence acquires companies that already have
FLEXlm licensing - Cadence tries to ensure backward compatibility of
a given part number - Result
- Either we transition to a new part number when
changing the licensing - OR
- ship obsolete daemons/keys for a long time
after the transition. - Both types of transitions have occurred in the
past, and may happen in the future. - Each has its own set of problems (and benefits).
- Current policy is to create new part numbers to
manage the transition
Back to Agenda
33Troubleshooting Licensing Issues
34Troubleshooting -How can I debug licensing
problems?
- What does your network topology look like?
- You should not have an overly congested network
or one with too much delay. Both of these can
cause heartbeat and other failures. - What does your license server do?
- For maximum performance, and in sites with a
large number of users, the license server should
be a DEDICATED machine. - Use the lic_error utility
- Get a greatly expanded explanation of the error
number printed out, and possibly a suggestion on
how to fix the problem.
35Troubleshooting -What about combining files?
- While it is technically possible to combine
FLEXlm-based license files, there are a few
disadvantages to this approach - There is a performance degradation associated
with large license files. - It makes debugging problems a bit more difficult,
and introduces questions as to whose problem it
is in the first place. - It is much better to maintain separate license
files for each daemon and run multiple lmgrd
daemons (one for each vendor daemon).
36Troubleshooting -How can I debug licensing
problems?
- Examine the servers debug log files Why are
some FEATURES in the license file rejected when
the server is started? - The server accepts only valid FEATURE lines
- the start_date for the FEATURE is less than the
date the server is started or reread, - has not expired,
- the 20 character encryption code is valid.
- In general, FLEXlm does not support duplicated
FEATURE lines in a single license file. - But, we need to allow demo keys to coexist in a
license file
37Troubleshooting -So, what is a valid FEATURE?
- Cadence daemons will allow multiple lines, BUT
the server will throw out certain FEATURES which
it deems to be unacceptable - For a given FEATURE having multiple entries and
that have start dates already enabled. - All temporary keys will be allowed.
- For permanent keys,
- All permanent keys with the same start_date will
be allowed - If there are multiple sets of permanent keys
having different start dates, only the set with
the latest start_date that is enabled will be
allowed. - Prevents most cut and paste operations (trying to
combine old licenses into the new license file).
38Troubleshooting -How can I debug licensing
problems?
- Examine the servers debug log filesWhat does
the UNSUPPORTED log file line mean? - It is very important that the FEATURE lines are
consistent in both the application client and
license server versions of the license file
(which may be different for a variety of
reasons). - The UNSUPPORTED line in the log file is most
likely due to a mis-match in these two license
files - the client asks for a certain license file line,
and the server is unable to supply a match. - Usually, a license is granted anyway, if one is
available - it is not uncommon to see an UNSUPPORTED log file
line followed immediately by an OUT line.
39Troubleshooting -How can I debug licensing
problems?
- If its not the server, maybe it is the
application? Access Internal Testability code
built into the application - Debug code has been built into the licensing API.
- This code appends information representing
version, search path, actions, run times,
results, and other diagnostics to a specified
file. - To access this testability code, execute the
following - setenv CDS_LIC_QA_TesT /tmp/client_debug_lo
g.out
40Troubleshooting - Heartbeats and TIMEOUT
- You can use TIMEOUT option in the options file to
reclaim the license when the product has been
idle for sometime - Policy applies to ALL Cadence programs...If any
anomaly observed, file appropriate call with
Customer support - Policy implemented by software that does periodic
re-checks with the server to ensure that server
knows it is alive. - API limits network traffic to one check every 5
minutes (clock time). - If the client does not get an answer back, API
will try to re-connect to a valid license
server. - If it cannot re-connect, the following happens
- 30 minutes Nothing happens (other than trying to
re-connect) - 30-60 minutes Warning message combined with a
short delay - gt 1 Hour Warning message, and 50 reduction in
performance
41Troubleshooting a stand-alone machine (Linux or
Windows)
- FLEXlm is a networked license manager, so If you
can't "ping" yourself, then that is the "FIRST"
thing to correct. - Even in a single machine configuration, the
licenses requires a working TCP/IP
infrastructure...that means working hardware,
software, name mapping, IP addresses, etc. - If you don't fix this, you will see symptoms like
the lmhostid command returns The FLEXlm
host ID of this machine is "" ...or..."FFFFFFFFFFF
F...instead of... The FLEXlm host ID
of this machine is "0010a48977a0" - First, let's make sure the hardware is enabled.
- Note if the Ethernet isn't connected, it tells
the OS about that, and the OS won't load the
drivers. so TCP/IP doesn't load, etc.
42Trick the networking with... a Loopback Cable
- The "hardware" solution is to make a simple "loop
back" plug (one that routes the transmit to the
receive). - This will "fool" the Ethernet into thinking it is
connected. - Works on any OS!
- You can make one of these by hacking the end off
of a cable...
43Trick the networking with... Software
- On windows, there is a registry "hack" (see the
Microsoft knowledge base to find it, but it is
not recommended). - On Linux, it is a bit easier...
- Look at your /etc/modules.conf file to find out
which module (aka driver) is aliased to your eth0
interface. - Edit your /etc/init.d/network script and insert
the equivalent of the following line just after
the "start" line /sbin/insmod
eepro100 - This will load the module for your ethernet
device regardless of whether you're connected to
a working network.
44Troubleshooting a stand-alone machine (Linux or
Windows)
- Now that the hardware is talking to the OS, you
have to take care of the naming - Use IP address
- localhost (127.0.0.1)
- host file that maps the IP addresses to the
Names - Now you should be able to ping yourself (either
by name or IP) - Set up server
- Set path to 5280_at_127.0.0.1 (or localhost)
Back to Agenda
45Other Gotchas
- Make sure to justify the added complexity of a
Fault-tolerant configuration with the actual
benefit. - Dont just use lmreread all the time.
- Since license start date changes the encryption,
each files features are unique. - It is important to restart the server to clear
its internal data structure - Use the right version of the daemon
- Lmgrd gtVendor Daemon gt Client API gt License
File
46Other Gotchas
- Never assume that if it is a Macrovision
feature in FLEXlm that Cadence (or any other
vendor) will support it. Each implementation has
unique characteristics. - Example Borrowing... At this point in time,
Cadence can not support borrowing...Requires
changes to - Business model
- Licensing Technology
- Compatibility
- Seems like it is taking a long time for the
"port" to clear (Solaris)? - It is a Solaris problem where it takes about 1-5
minutes to release a tcp/ip port... Here's info
on how you can lower that value.. - /usr/sbin/ndd -set /dev/tcp tcp_close_wait_inter
val 2400
47Useful Pointers...
- URL for users to ask for notification whenever
new releases are available - http//sourcelink.cadence.com/en/softwareupdate/
SUReleasePreferences.jhtml - URL for licensing and installation information
- https//sourcelink.cadence.com/docs/files/ILS/Inst
all_Lib.html
Back to Agenda
48Q A Session
- Scott Baeder baeder_at_cadence.com