Skip navigation
All Places > Licensing and Installation > Blog > Author: ken_foster
1 2 Previous Next

Licensing and Installation

22 Posts authored by: ken_foster

Now that Xpedition flow is supported on Windows Server 2012 you may be considering that platform for your Remote Server Configuration Manager and/or xPCB Team Server host. If so, be aware of a new system default setting in Server 2012 that prevents the system from responding to a ‘ping’ from a remote computer. Not being able to ping the server it makes troubleshooting a bit more difficult if you have problems connecting to it.


You should verify your IT policy first, and then if you determine that the default setting is more security than you need and your IT policy allows you to enable a ping response, you could use one of the methods below to enable it.


The first thing you need to know is that this policy is enforced through a firewall rule, and to change the behavior you’ll need to modify the rule. Of course if you plan on completely disabling the Windows firewall anyway, then you’re already done.  Once you turn the firewall off there is no need to do any of the steps below.


Method 1: Windows Power Shell


If you have Windows Power Shell installed you can enable the rule from the shell window with the following commands:


PS C:\> Import-Module NetSecurity

PS C:\> Set-NetFirewallRule -DisplayName “File and Printer Sharing (Echo Request – ICMPv4-In)” -enabled True


Note: To use this method the rule must already exist. If you need IPv6 ping, then you must also enable the rule called ‘Echo Request – ICMPv6-In’.


Method 2: Graphical Interface


To use the graphical interface to change the rules follow these steps:

  1. Open the Control Panel and select System and Security
  2. Select Windows Firewall
  3. Select Advanced Settings
  4. Under Windows Firewall with Advanced Security, select Inbound Rules
  5. Locate the rule called File and Printer Sharing (Echo Request – ICMPv4-In)
  6. Right click on the rule and select Enable Rule
  7. Verify that a green check mark appears next to it when you look at the Inbound Rules


Done! There is no need to reboot the system. It should respond to a ping from a remote system now.  This works for Windows Server 2012 and Windows Server 2012R2.

Note: If you need IPv6 ping, you can use the same procedure to enable that rule.

If you write batch scripts to install, update or remove Mentor Graphics software, then you might find this Tip of the Week useful.


It’s very important, particularly for our PCB flow software that has iCDB architecture, to make sure that programs are not running before you make any change to the system that affects them. Here are a few simple commands you could use in your batch scripts to avoid problems while installing, updating, or removing.


Many programs will gracefully close down a running instance if you run it again with a –close argument. This one will exit iCDB Server Manager. This is nice because you won’t get an error if the program is not currently running.


%SDD_HOME%\iCDB\win32\bin\iCDBServerManager.exe -close



Another way of doing it is to use the taskkill command. Unlike the command above, this will complain if the program isn’t running, and if it is running you’ll get confirmation that the process has been terminated. That’s useful if you really want to be sure one way or the other about the programs current status.


          start "Window name" /w /min cmd /c taskkill /f /im "iCDBServerMonitor.exe"


If the program is a service, then it supports the start, stop, and remove arguments in all likelihood. In this example, I’m stopping the RSCM service and then removing it. The call statements are there to ensure that the operation completes before the next command executes.


           echo Stopping and removing the RSCM service, if it is running...
           call "%SDD_HOME%\iCDB\win32\bin\iCDBNetLauncher.exe" –stop
           call "%SDD_HOME%\iCDB\win32\bin\iCDBNetLauncher.exe" –remove


I hope you find these commands useful!


Ken Foster

Mentor  Graphics Global Support and Services


In most Mentor Graphics PCB releases, the MSVC++ Redistributable software is installed every time you install software. It's useful in the cases where you install new releases, but its not always necessary when re-installing the same release or applying updates.


Setting the environment variable SDD_SKIPCORECOMP=1 before installation prevents the installation of these packages, and can save you a bit of time during installation. It's especially useful when you are installing a source tree for client/server installation on Windows. If the server is not used to run the applications, there is no need for the SDD core components.


Use this with caution! It will prevent the packages from being installed in if set, and you do need those packages to run the applications or if you are re-installing to repair a corrupted software installation.



I'm a huge fan of command line utilities that provide fast, no-nonsense access to information and allow me to perform some basic configuration tasks. Evidently there are some people at Microsoft who are as well, because they created the Windows Management Instrumentation Command-line utility, or WMIC.


I could not begin to describe everything you can do with it, but allow me to throw out a few commands to give you some ideas.


This command gets you the status of all the printers on the machine:


     C:> wmic printer list status


If I want to know the status of the printers on a remote machine, I can provide a node name:


     C:> wmic /node:"some-other-machine" printer list status


This command collects the environment variables from several machines and display it in list format:


     C:> wmic /node:"machine1", "machine2" environment get /format:list


This command gets information about the monitors that are attached to these computers (I can add as many as I want in a comma separated list). It provides some useful data like manufacturer, HxW, resolution, etc. By using the format type htable, I can create a web page that contains this information. It's a pretty cool way of gathering information if, lets say, you were trying to find out who the candidates are for a monitor replacement. BTW, wmic can get information about any hardware components in the system and also can report on installed software, the BIOS, etc.


     C:> wmic /node:"machine1", "machine2", "machine3"  desktopmonitor get /format:htable > monitors.htm


And now, two of my personal favorites!


This one shows me if a certain executable is running on any of the computers in my list. The 'where name=' stuff filters out information about all the other processes. Without that option, it would show me all processes running on the system(s). In this example, I used it to find out if any of these machines were running iCDB Server Monitor. Those that were displayed their hostname (csname) and the executable path. Without those two parameters, it would show me much, much more information about the process (way more than needed).


C:>wmic /node:"orw-foster-w7", "orw-kfost-t5610", "kvmw7x64" process where name="iCDBServerMonitor.exe" get csname, executablepath

CSName         ExecutablePath

ORW-FOSTER-W7  C:\MentorGraphics\7.9.5EE\SDD_HOME\iCDB\win32\bin\iCDBServerMonitor.exe

KVMW7X64       C:\MGC\RSCM\EEVX.1\SDD_HOME\common\win32\bin\iCDBServerMonitor.exe


Here's an idea: Run a scheduled task that uses wmic to look for a particular process, dump that information in htable format, and copy that .htm to a web page. Now you can see who is running what at a glance.


I mentioned that you could also use it to perform some configuration tasks. In this example, I'm using it to change the value of the existing MGLS_LICENSE_FILE environment variable on a remote machine. As before, I could have a number of machines in my list separated by commas. Note that the output below the command line confirms that the operation was successful. I could easily create variables with wmic as well.


C:>wmic /node:kvmw7x64 environment where name="MGLS_LICENSE_FILE" set variablevalue="1717@wv-lic-01"

Updating property(s) of '\\KVMW7X64\ROOT\CIMV2:Win32_Environment.Name="MGLS_LICENSE_FILE",UserName="<SYSTEM>"'

Property(s) update successful.


Give wmic a try! It may take a while to get the hang of the syntax, but it's worth it if you need to do a lot of remote administration.


If you come up with some good ones, please share!



Hello Community! Welcome to the first Tip of the Week for 2015.


I've been doing a lot of work in a DOS command window lately and I've learned a few things that have helped me be more productive. I thought I'd share some of them you. I hope you find them useful.


To reduce the amount of typing you have to do, there are a couple of useful function keys that are pre-defined on your DOS command shell:


  1. F3 -  Paste the last command you executed on the command line. Same as the up arrow, but easier to find on a laptop keyboard.
  2. F7 -  Pops a window up that has a numbered list of recently executed commands. Scroll to find what you want then press enter to execute it.
  3. F9 -  If you remember the number for the command you want (from the list when you pressed F7), you can execute it by pressing F9 and then enter the number.


There are other function keys defined, but these are the ones I use the most.


I find it easy to forget sometimes exactly what file system I'm in when I'm on a mapped drive. One trick I like to use is to modify the prompt so that when I'm on a remote file system I see the UNC path name instead of the drive letter. For example, the Z:\projects\> prompt becomes \\filesvr\mgc\projects Z:\>. Note that when I'm on a local drive, the prompt appears as simply driveletter:\path.


One of the best features in Windows is the Windows Explorer because it lets you see files and directories in a context of what's above them, beside them, and beneath them. In a DOS command shell, the tree command gives you that functionality. It's great for smaller directory structures as-is, but for larger ones you'll want to use it with a pipe  ( | more) or redirect the output to a file ( > filename.txt) as the scrolling capability is limited.


Give those a try! If you have any DOS commands you find useful, reply to this post and share them. I'm always looking for more.



Most of you reading this already know that opening a DOS command shell and entering the command 'ipconfig /all' will return a lot of useful information, including the MAC address. If you use the MAC address as the hostid for mobile compute licenses you have done this many times I suspect. Nothing wrong with doing that, it works. But if you'd like a way of doing it that returns a lot less data you don't need, can be executed remotely, and could be used to obtain this information programmatically for your entire user base- read on.


Such a command exists, and it's been there the whole time: getmac


getmac has some useful options which you can read about by running the command 'getmac /?'. Here are the ones I find most useful:


This one returns the MAC address for each network device without any header information.

C:\> getmac /nh

00-26-B9-xx-xx-xx   \Device\Tcpip_{66A49F71-AB71-42BE-99D0-71027A377490}

00-50-56-C0-00-01   \Device\Tcpip_{9A9C7A14-6867-4877-8DFD-E1DA5378ADDF}

00-50-56-C0-00-08   \Device\Tcpip_{7CABA731-102F-4BB1-A4DA-D054804F6E31}


It is easy to identify my wired device in this case, because I know anything that has 00-50-56-C0 at the beginning is a VMware virtual adapter. But let's pretend I had a wireless adapter in my machine also, and I got 2 addresses that were not virtual adapters. How would I know which of them was the one I wanted?


I'd use the /v (verbose) option:


C:\> getmac /nh /v

Local Area Conn Broadcom NetXtr 00-26-B9-xx-xx-xx   \Device\Tcpip_{66A49F71-AB71-42BE-99D0-71027A377490}

VMware Network  VMware Virtual  00-50-56-C0-00-01   \Device\Tcpip_{9A9C7A14-6867-4877-8DFD-E1DA5378ADDF}

VMware Network  VMware Virtual  00-50-56-C0-00-08   \Device\Tcpip_{7CABA731-102F-4BB1-A4DA-D054804F6E31}


If I'd had another hardware NIC, I could tell by the description which was which.


So far, all the information has come from my local machine. If I want to know the MAC addresses on a different machine, I'll use the /s option:


C:\>getmac /s orw-kfost-t5610


Physical Address    Transport Name

=================== ==========================================================

34-17-EB-xx-xx-xx   \Device\Tcpip_{EC36C646-EB29-4E80-92AC-3D3F91293B22}

00-50-56-C0-00-01   \Device\Tcpip_{9D1AE766-04FB-4E67-BE2E-FD6A64BDF54A}

00-50-56-C0-00-08   \Device\Tcpip_{E3C15C4F-DE49-4E01-8EA1-928704365A9A}


Note that this time I omitted the /nh option so I could see the header.


With a little elbow grease, you could wrap a script around getmac to gather the MAC addresses for your entire site in one go, and then parse that data into a useful report you can use for license ordering or renewal.


Thanks for reading!




If you have automation for removing the local WDIR in your Windows environment, then you know the challenge is that %WDIR% can be made of up several paths, like this one:




In most circumstances all you really want to remove is the first folder in the path, the local WDIR. You could hard code the paths to it in your script, but then you'd have to depend on everyone using a standardized name or passing it as an argument.


Here is some nifty code you can but into your batch script that will parse the %WDIR% variable, get the first path name (the local WDIR path), and assign it to a variable:


:: These commands are required so that variable expansion works in your script environment

setlocal enableextensions enabledelayedexpansion


:: Echo WDIR, then using ; as a delimiter, get the first token and assign its value to MY_WDIR

for /f "usebackq tokens=1,2 delims=; " %%w in (`echo %WDIR%`) do set MY_WDIR=%%w


:: Now that we've isolated the local WDIR folder, we can remove the folder

rmdir /s /q %MY_WDIR%


There you have it. I hope this tip is useful.



A useful but often overlooked feature in the InfoHub documentation system is the custom tab that allows you to provide access to your own documentation from the InfoHub.


Using the custom tab, you can provide links to important documents or create document groups. Here is an example of how I used the custom tab to provide quick access to some Mentor web sites I refer to often. I also created a group of links for some of the Mentor Graphics Communities sites that I visit:




Getting started is easy. Open the InfoHub, and look for the Custom Tab link at the bottom of the page:



That's it for this week! Come back next week for another licensing and infrastructure tip.



Those of you who frequent the Mentor Graphics Community have provided a tremendous benefit to the community at large; providing solutions and sharing your experiences for the benefit of others. By coming here and actively participating you have made the community what it is, and what we hoped it would become.


However, there are times where opening a service request with customer support is necessary. For those so entitled, this Tip of the Week gives you the top 5 things to include in a service request that will make the handling of your issue go as smoothly as possible.  Here is the list, in no particular order of importance.


1.       Product and Version Information


P        Providing this is key for a CAE to know where to start looking for a resolution to your issue. It helps them to quickly zero in on known issues in particular versions of software and find their solutions, provide you with information about patched versions, etc. The Product field is also used by our automated systems to route service requests to the right people who are the subject matter experts. Being as accurate as possible helps avoid any mis routing of service requests to the wrong support team, and the resulting delay as the request is re-routed.


2.       Platform and OS Information


      For much the same reason stated above, having accurate platform, OS and architecture information helps a CAE get to the root cause more efficiently. When they know what you have, a CAE can easily eliminate possible causes that don't apply to your platform, OS, or architecture.


            Error Messages and Log Files


      The error message is the first thing a CAE will analyze in the process of troubleshooting your issue. A complete and accurate error message, if one is presented, is the lead that can crack the case wide open. If no error message appears that is also an important clue, and you should point that out. Recording them word-for word, exactly as they appear, is important because subtle differences may give the error message a different meaning. Adding screen captures to your service requests is a perfectly acceptable way of providing this information. Log files that contain error messages, design path names, etc. are always welcome and should be included, especially if known to contain relevant data.


           Contact Information


      Your SupportNet profile allows you to set a preference for how contact with you is made (phone or e-mail). By default, no preference is set. In that case, CAEs use their own discretion to decide how to make contact with you. If you have a preference, setting it in your SupportNet profile avoids a situation where you are waiting for your phone to ring but the solution has been in your inbox the whole time. Accurate contact information is vital to avoid delays. Best practice is to review this information any time you open a Service Request.


      It's pretty common for the person opening the Service Request to be assisting another user at their desk, or perhaps in the data center working on the problem. In that case you should provide alternate contact information if needed, and specify the date/times when you can be contacted there. The most conspicuous place to put this information is in the symptoms field.


           Provide a Summary of Self-Solve Attempts


      If the CAE knows what you've already tried to solve the problem yourself  (TechNote procedures you followed, for example) it will help them focus their inquiries on the results you had instead of starting at square one.  CAEs read the details in your service request before they make contact as a rule. So for example, if they read in your service request that you reinstalled the software and there were no installation errors, they can assume for the moment that it’s not an installation problem and start troubleshooting elsewhere when they engage you.



This tip is written with Service Requests in mind, but also applies when posting in the community as well. Those who read your post may be more inclined to respond if they have enough information to form an opinion.

Mentor Graphics products built on 32-bit Linux platforms can run on a 64-bit OS, but they still require 32-bit runtime libraries. On RHEL 6 the 32-bit libraries are not included with the media, but they are available using the same methods used to update the OS software.


The default configuration for yum only updates and installs 64-bit packages, unless you specify the 32-bit packages you want. If you configure the multilib policy, you can update and install 32-bit packages automatically whenever the 64-bit packages are updated.


Set the configuration option multilib_policy=all in /etc/yum.conf. This enables the multilib policy as a system-wide policy.


Ken Foster

Mentor Graphics Customer Support

The Remote Server Configuration Manager (used to enable the concurrent design features available in most Mentor Graphics PCB flows) is a service that requires credentials in order to run. In the case where the design data is on a remote file system relative to where the RSCM service is running, the service must be authenticated with a user account because the built-in SYSTEM account cannot be used to access data on a remote file system. You can use a regular user account, but most IT organizations choose to use a service account for this purpose. A service account is just like a regular user account except that it's not associated with any particular persons login. Most customers I've seen give it a name like 'mgcrscm' or 'rscmsvc', something like that.


I had a recent case where a customer reported users getting this error when anyone tried to use the RSCM server for their project:


*** Project Initialization Warnings ***

CDB opening failed: Remote Server Configuration Manager (<server name>): Project path [<path to project database>] inaccessible

*** End Of Project Initialization Warnings ***


As it worked fine in single user mode, we quickly ruled out anything wrong on the file server end or with the users own credentials. A quick look at services revealed that the RSCM service was running. Any projects that were started the day before were up and running, and anyone could join those projects for concurrent design, they just couldn't start up any new projects.


The problem with the service account being a regular account is that it is subject to the same password expiration rules as any other user account. When the password for the account expired, it broke the authentication used to access the design data (project path inaccessible). Updating the password for the service account and re-starting the RSCM service restored functionality.


Here are some other useful bits:


1. You can bounce the RSCM service without the need for users to exit projects that are currently running. This will not affect iCDBNetServer processes that are already running.

2. If your design data is on the RSCM servers local file system, you don't need to use a created account to authenticate. The SYSTEM account is built in and doesn't expire.

3. If you have a Windows 2008 Server or higher as your Active Directory Controller, you can define a password policy just for your service account that prevents it from expiring. See Microsoft's knowledge base article:


That's it for this week!



When you use the set or echo commands in a DOS command Window to learn the value of an environment variable, it's no problem when the value is only one or two components. But when it's a PATH variable or some other one that has many components, it's not as much fun because the output is a single, wrapped line which is more difficult to read. For example:



That's no fun at all. Try this: echo %PATH:;=&echo.%



Now that's more like it.


Of course, I never remember the syntax, so I put mine in a batch script and add it to my search path.


It works for license file variables too, just replace PATH with MGLS_LICENSE_FILE.


That's it for this week! Tune in next week for another useful tip.




Special thanks to my colleague Clinton Wittstruck who provided this information.


I've been doing a lot of work analyzing network performance lately, and I'm always looking for new ways to gather and help me analyze data quickly. In this Tip of the Week, I'll feature a tool I've recently come to appreciate called 'PingPlotter'.


Under the hood, PingPlotter is just tracert pretty much. But the value add for the tool is how it shows you the data. With PingPlotter you can define the number of samples you want, the frequency of the samples, and what you think are good, acceptable, and poor performance ranges. When you run your trace, PingPlotter shows the data in a graphical format and also gives you the minimum, maximum, and average values. Have a look at the graphic below, where I tested my connection to





Good stuff, yes? And that's just the freeware version. There are premium versions with some really nice features like the ability to define multiple targets and trace several at the same time.


Check out the freeware version here:



By the way, I'm always on the lookout for useful tools to help troubleshoot issues or evaluate hardware and network infrastructure. If you have a favorite, by all means post it!


Best regards,


Ken Foster

Mentor Graphics Customer Support

Network latency is of great concern when using Mentor Graphics software, particularly the releases that have an underlying iCDB architecture. The ping utility is often used to get an idea of how the network is performing. However, the ping results are sometimes not granular enough, and the data can be difficult to analyze if you run ping for long periods of time.


In this tip of the week, I'll tell you about one of my favorite tools for getting good network latency data: psping.


To get useful network latency measurements you should use a larger packet size that closely represents the packets created by the application you are verifying, and you need to do it over time. You can do that with the standard ping command, but then you'd have to post process the data to get the information you want. Doable, but not desirable. One thing that you can't do with the standard ping that is sometimes useful is ask it to use a specific port number so you can verify that the port you want to communicate with is open. Psping does all that, and provides a tidy summary report.


Psping works in client/server mode for the network latency test. In this example, I'll start a psping server on a machine called 'kvmw7x64', and ask it to listen for pings on port 9001 using TCP protocol. I've also specifed IPv4:




Now on a client machine, I'll start psping and ask it to transmit 1200 byte packets to kvmw7x64 on port 9001 for 3600 seconds (1 hour):




When the hour is up, I can view the results as a summary. This provides a pretty good indicator of what my actual network latency is over time.



I'd suggest you fire this up during the time of the day when your network is the most heavily utilized and again when it's the least heavily utilized. Save these numbers as a baseline. It might not hurt to run it every so often to see if things are changing. Then, any time you suspect problems you are having are related to a slow network, run it and compare the results to your baseline. That should either incriminate your network exonerate it.



Everyone is probably familiar with using a wild card with the rm command to delete a large number of files in one go. For example, this command would remove all files that start with 'test' or end with '.c':


rm test.* *.c


It's very useful, but if you have a lot of files with dissimilar names, it can still be a bit tedious. In this Tip of the Week, I'll show you how to use an operator to specify which files not to remove.


Using the ! operator, I can make rm remove everything except what matches my command line arguments. The following command removes all files except those that start with 'test' or end with '.c':


rm !(test.*|*.c)


Give it a try!