
		      README for interHDL Verilint 4.x
                      ================================

Verilint is a tool for designers who use Verilog Hardware Description
Language.  It checks designs for syntax errors, semantic errors, and
questionable constructs.  At the same time, it performs a thorough
sifting of the design and posts warnings regarding code that may lead
to problems in simulation and synthesis.

NOTE:
=====
The license libraries in Verilint have been upgraded since the 3.14
release to increase reliability of multiple-server licenses.  The
environment variable INTERHDL_ELMHOST is now interpreted slightly
differently than before.  "setenv INTERHDL_ELMHOST hostname" should
be changed to "setenv INTERHDL_ELMHOST @hostname".  In the new version
of the license library, the @ means "do not try to broadcast to find
a license server first".

A.  What's New in 4.x
=====================

1.  Additional checks

    Verilint 4.x has many more checks than Verilint 2.0.  As an example,
    Verilint 2.0 checked if there was an "if without else" to detect
    potential latches.  Verilint 4.x actually checks all the paths in the
    "always" blocks to make sure that any variable that is assigned in any
    path is also assigned in all the paths.  In other words, the latch
    detection mechanism is more accurate and reflects the way in which
    synthesis tools operate.

2.  Graphical user interface (currently only in UNIX versions)

    Verilint 4.x includes a graphical user interface.  The GUI is very
    intuitive and simple to use.  It contains on-line help and is fully
    configurable.

3.  Disabling warning messages

    Verilint 4.x provides better support of in-line comments for
    selectively disabling warnings.  Specific warnings can be disabled in
    regions of the Verilog code.  For example, to disable warning 225 in a
    region, bound the region with the comments:

    //Verilint 225 off
    ... (code region)
    //Verilint 225 on

4.  Synopsys comments are recognized

    The following special comments are recognized and handled accordingly:

    a.  //Synopsys translate_off
    b.  //Synopsys translate_on
    c.  //Synopsys full_case
    d.  //Synopsys parallel_case

5.  Bug fixes

    Bugs reported since the previous release have been fixed.  
    Future fixes will be made on a priority basis or in the next release.

Please refer to the CHANGES file for a list of bug fixes and
enhancements in the latest version of Verilint.


B.  Verilint Command Line Options (Batch and Graphical)
=======================================================

    -f projectfile       -- Use a file as an extension to the command line. 
			    The file may contain other file names or 
			    command-line options.  -f options can be nested.
    -v libraryfile       -- Scan libraryfile for unresolved modules
    -y librarydirectory  -- Scan librarydirectory for files with names matching
                            unresolved modules
    -c			 -- Is ignored by Verilint, and allows you to use 
	 		    simulator project files that have the "-c" option.
    -w                   -- Suppress all warnings (output only errors)
    -wl			 -- Suppress warnings in libraries
    -ws			 -- Suppress synthesis related warnings
    -wnnn                -- Suppress warning number nnn
    -L                   -- Generate a formatted listing of the source code
    +incdir+directory    -- Add directory to the list of directories in which
                            search for source files
    +libext+extension    -- Add extension to the file name when searching a
                            library directory for a file matching a module name
    +define+definition   -- Add a macro definition


C.  Usage 
=========

Note !!! If you have any license manager problem, please read the
"License Manager Troubleshooting" section in this README file.

Using Verilint is very similar to using Verilog-XL.  Just replace your
current simulator's executable name with "verilint" (for Verilint batch 
mode) or "vg" (for Verilint graphical mode).  The rest of the command 
line can remain the same.  Verilint will handle correctly the -f, -y and 
-v options, and the +define and +libext options.  The -L option generates 
a formatted listing of the source code.  The -L works only if there are 
no errors during the linting process.

For example, to run verilint on a project containing "t1.v" and "t2.v",
type:

  verilint t1.v t2.v

Alternatively, you can have a file (for example "t.prj") that contains 
the line "t1.v t2.v", and run:

  verilint -f t.prj

To run Verilint Graphical on the above two examples, replace "verilint"
with "vg":

  vg t1.v t2.v

  vg -f t.prj

Initially, all Verilint checks are set ON.  If after running Verilint
on your design you wish to disable some of the warning messages, first
take note of the warning number.  Then, assuming the the warning
number is 153, use one of the following methods to disable the
reporting of the warning.

1.  Include the following comment in the code having the form

    //Verilint 153 OFF
    (note that there is no space between // and Verilint).

    This will disable the warning until a matching

    //Verilint 153 ON

    is encountered or the end of the current source file is reached.

    Typically all these comments are combined in a single file which is
    processed first.

2.  Use the command-line option -w153.  Note that -w will disable all the
    warnings and only errors will be printed, -wl will disable all warnings
    in library files, and -ws will disable all synthesis related warnings.


D.  Installing Verilint PC
==========================

Running Verilint PC requires having a hardware key provided by interHDL.
To obtain either a permanent or evaluation key, please contact interHDL at
Phone: (800) 8-VIPER-1 or (650) 428-4200, Fax: (650) 428-4201, or 
Email: support@interhdl.com.

To install Verilint PC:

o  With the computer's power off, plug the hardware key into the parallel 
   printer port (LPT1).  Any devices that were previously plugged into the 
   port can be plugged into the hardware key; the hardware key will not 
   interfere with their operation.

o  Create a directory on your hard disk, for example C:\VLINT3, and
   copy the contents of the diskette to this directory.  For example:

   MD C:\VLINT3
   COPY A:*.* C:\VLINT3

o  Add the directory's name to the PATH environment variable in 
   C:\AUTOEXEC.BAT (the MS-DOS startup file).  This can be accomplished 
   by editing C:\AUTOEXEC.BAT and adding the following line to the end:

   SET PATH=%PATH%;C:\VLINT3

o  Reboot your machine for the new C:\AUTOEXEC.BAT to take effect.

Installation is now complete.  Please refer to the "Usage" section
for information on how to run Verilint.

NOTE:  Verilint PC can be run either directly from DOS or from a DOS Prompt 
in Windows 3.x.  The latter is especially useful in low memory situations 
since you can use the Windows swap file (set in Control Panel/Enhanced/
Virtual Memory) to supplement the amount of memory available to Verilint.


E.  Installing Verilint NT/95
=============================

Running Verilint on Windows NT or 95 requires having a hardware key 
provided by interHDL.  To obtain either a permanent or evaluation key, 
please contact interHDL at Phone: (800) 8-VIPER-1 or (650) 428-4200, 
Fax: (650) 428-4201, or Email: support@interhdl.com.

To install Verilint NT on Windows 95, use the same instructions as the
ones above for installing Verilint PC.

To install Verilint NT on Windows NT:

o  With the computer's power off, plug the hardware key into the parallel 
   printer port (LPT1).  Any devices that were previously plugged into the 
   port can be plugged into the hardware key; the hardware key will not 
   interfere with their operation.

o  Create a directory on your hard disk, for example C:\VLINT3, and
   copy the contents of the diskette to this directory.  For example:

   MD C:\VLINT3
   COPY A:*.* C:\VLINT3

o  Add the directory's name to Windows NT's "Path" environment variable
   so that you can run "verilint" from any Command Prompt.  To do this, 
   go to the Control Panel, double-click on the "System" applet, click 
   on the "Path" line under the heading "System Environment Variables", 
   and add the directory's name to the "Value" field on the bottom of 
   the window.  Example:

   Variable: Path
   Value:    %SystemRoot%\system32;%SystemRoot%;C:\VLINT3

   After adding the Verilint directory name, click on the "Set" button and 
   then on "OK".

o  Run "hinstall /i" from a command prompt to install the software for
   the hardware key.

o  Shutdown and restart your machine for the new settings to take effect.

Installation is now complete.  Please refer to the "Usage" section
for information on how to run Verilint.


F.  Installing Verilint UNIX
============================

Running Verilint UNIX requires having one or more numerical license keys 
provided by interHDL.  To obtain either permanent or evaluation keys, 
please contact interHDL at Phone: (800) 8-VIPER-1 or (650) 428-4200, 
Fax: (650) 428-4201, or Email: support@interhdl.com.

To install Verilint UNIX:

o  First decide under which directory you would like to install the 
   verilint subdirectory.  One possibility is /usr/local.  Make sure 
   that you have proper access permissions for the directory, and 
   enter the directory:

   > cd /usr/local

o  If you received a diskette or diskettes, extract the installation files 
   as follows for each diskette:

   > tar xvf /dev/fd0                          (all machines except Solaris)

   > volcheck; tar xvf /vol/dev/diskette0/*                        (Solaris)

   If there is more than one diskette, files will be extracted as 
   "disk1.enc", "disk2.enc", and so on.  Concatenate them together as 
   follows:

   > cat disk1.enc disk2.enc > verilint.enc

o  Now decode it as follows.  If you received Verilint by e-mail or FTP,
   you already have "verilint.tar.Z" and can skip the first command:

   > uudecode verilint.enc          (extracts "verilint.tar.Z")
   > uncompress verilint.tar.Z      (uncompresses it, becomes "verilint.tar")
   > tar xvf verilint.tar           (extracts Verilint files)
   > rm disk*.enc                   (deletes "disk1.enc", "disk2.enc", etc.)
   > rm verilint.tar verilint.enc   (deletes "verilint.tar" and "verilint.enc")

You will now have the following subdirectories:

   ------------ verilint-4.xx:   directory that has Verilint executable files
              |
              ------ ilm:        interHDL license manager directory
                   |
                   ------ keys:  keys for the license manager

The verilint 4.xx directory will have the files "verilint" and "vg" in it.
These two files must be in the same directory.  Placing two links in 
/usr/local/bin or another directory on users' paths will work.

As mentioned in the beginning of this section, Verilint requires having
one or more numerical license keys obtained from interHDL.

Note to Linux users:  For the license manager to work, you must have
networking installed such that you can telnet to your own machine.  
See the section "Linux License Manager Troubleshooting" below for 
additional information.

Installing license keys:

1.  On the license server, change directory to "ilm" and run the script
    "install_key" once per key:

    > cd verilint-4.xx/ilm
    > install_key

2.  If the interHDL license manager daemon had not been started previously, 
    run the script "start_ilm" (in the "ilm" directory) to start it.  

    > start_ilm

3.  Optional step
    =============
    You may want the license server to run "start_ilm" automatically whenever
    the system is booted.  Setting this up requires having root access.  To 
    set it up, follow the examples below, replacing "/absolutepath/start_ilm" 
    with an actual path, such as "/home/interhdl/verilint-4.xx/ilm/start_ilm".

    On SunOS systems, add the following lines to the end of /etc/rc.local.
    On Linux systems, add the lines to /etc/rc.d/rc.local:

    #
    # Start the interHDL License Manager (ilm)
    #
    if [ -f /absolutepath/start_ilm ]; then
            /absolutepath/start_ilm
    fi

    On other UNIX systems, add the following line to the end of /etc/inittab:

    ilmd:23:wait:/absolutepath/start_ilm < /dev/console > /dev/console 2>&1

4.  To improve the speed at which license keys are checked out, in users'
    .cshrc files set the environment variable INTERHDL_ELMHOST to the 
    hostname of the license server.  For example:

    setenv INTERHDL_ELMHOST @localhost

5.  Installation is complete.  You are ready to use Verilint.  Before 
    running, make sure that:

    a. Verilint is on your path.  This can be confirmed by typing 
       "which verilint", which will indicate which file will run
       when you type "verilint".

    b. If the key directory is not the default (in the ilm/keys directory),
       make sure that the "start_ilm" script looks for keys in the correct
       directory (using ilmd's -e option).
      
Note:
=====
Root access is not required to install a license or run the daemon.  However,
if you are not doing them as root, be sure that you have access permissions 
for the license manager files and key directory.


G.  Multiple servers license (UNIX)
===================================

Most people have a single server configuration and can skip this section.
If you have a multiple server (not necessarily multiple license)
configuration, you need to add the following.

1.  Install the license file only once (from one of the server machines).
    Then either place it in a directory that is visible from all three 
    license servers (such as an NFS-mounted directory) or, better, place 
    identical copies on the other machines.

2.  Create a resource file (a regular text file) also in a network directory
    (or identical copies on all server machines) which has the following line 
    for each server:

    %SERVER <hostname>

    for example:

    %SERVER whitney
    %SERVER foraker
    %SERVER broad

    The hostnames are the same names that you answered when you ran
    ilmadmin to get the server codes.

3.  Start the daemon ilmd (such as in the "start_ilm" script) on each
    server with the additional command line option "-r resource file":

    ilmd -r resourcefile -l logfile ...

4.  Set the variable INTERHDL_ELMHOST to multiple servers by separating
    the names with ':', e.g: @whitney:foraker:broad.


H.  License Manager Troubleshooting (UNIX)
==========================================

Here is a list of steps that you need to take if you encounter license
manager problems:

1.  Make sure that the versions of ilmadmin and ilmd are compatible
    by comparing their configurations.  Type the following commands
    to display information about ilmadmin: 

    prompt> ilmadmin -q
    prompt> ilmadmin -i

    To find information about ilmd, either look at its log file or, 
    if ilmd is not running, type

    prompt> ilmd -f

    and then terminate it (Control-C).  Compare the two sets of data.  The 
    Vendor ID, Hostcode and Port number should be identical.  The Versions 
    of ilmadmin and ilmd should be identical.  Currently, this version is 
    2.3 on HP machines and 2.3.3 on Sun machines.

2.  Make sure that the license server daemon is running.  To find out,
    use the ps command ("ps auxww" or "ps -ef") and look for "ilmd".  
    If the daemon is not running you will get the message "License server 
    down".  In this case, refer to steps #2 and #3 in "Installing License 
    Keys" above for instructions on starting "ilmd" both manually and 
    automatically.

3.  If the daemon runs on a different subnet than the one on which the
    application runs, make sure that you have an environment variable
    INTERHDL_ELMHOST set to the server name.  You can do it with the
    command setenv:

    prompt> setenv INTERHDL_ELMHOST @servermachine

    If the daemon is on a different subnet you will get the message
    "License server down".  Even if the daemon is on the same subnet it is
    a good idea to have this environment variable set, since it will speed
    up the process of getting the license.

4.  If you get "License key authorization failure" message, make sure
    that application runs on the machine on which it was licensed.  Also
    make sure that the right license key directory is being used.  Delete 
    old license key directories.

5.  If you use multiple (3) servers, make sure that you have a resource
    file and that you started the daemon ilmd with the -r option.

6.  If you get "License server down" or "Not enough servers running" messages,
    try replacing the hostnames set in the INTERHDL_ELMHOST and DISPLAY
    environment variables, as well as the redundant server resource file 
    (if applicable) to Internet (IP) addresses.  If this works, there is a 
    problem with converting hostnames to IP addresses.

7.  If you still have a problem, send us the daemon log file as well as
    the output from the "ilmadmin -q" and "ilmadmin -i" commands.  Also
    send us the files in the keys directory.


I.  Linux License Manager Troubleshooting
=========================================

Here is a list of steps you can take if you are unable to use the Linux
license manager.  This often occurs because the license manager requires 
networking, and not all Linux machines have it installed or configured.
The main goal is to configure the machine such that you can telnet to 
yourself.

1.  Make sure that networking is installed on your machine.  A good
    indicator of this is whether the command "/bin/telnet" exists on
    your machine.  If the command is not there, use "/sbin/pkgtool"
    to install the "tcpip" package.

2.  Make sure that /etc/hosts has entries for "localhost" and the
    hostname of your machine (which is listed in /etc/HOSTNAME).  
    Here is a sample /etc/hosts file for a Linux machine named "fiero":

    127.0.0.1    localhost
    192.9.200.4  fiero

    "localhost" must be set to 127.0.0.1 and your hostname can be
    any valid Internet address (such as the one listed above).

3.  Check that the loopback network interface is being attached to
    the address 127.0.0.1 in /etc/rc.d/rc.inet1 with a valid route.  
    This is done with the lines:

    /sbin/ifconfig lo 127.0.0.1
    /sbin/route add -net 127.0.0.0

    (The loopback interface is used by network programs to communicate
     with each other if they are on the same machine.)

4.  Also in /etc/rc.d/rc.inet1, set the IPADDR, NETMASK, NETWORK, 
    BROADCAST, and GATEWAY addresses for your network, even if it
    only consists of one unconnected machine.  Here is an example 
    for a single machine on a small (1-254 machine) network.

    IPADDR=   "192.9.200.4"         # same as the address in /etc/hosts
    NETMASK=  "255.255.255.0"
    NETWORK=  "192.9.200.0"
    BROADCAST="192.9.200.255"
    GATEWAY=  "192.9.200.4"         # Set this to your own Internet address
				    # if there is no gateway router

5.  Enable a network interface and routing for your Internet address.

    If you do not have a network card, do this by adding the following 
    lines to the end of rc.inet1 (or modifying what is there):

    /sbin/ifconfig dummy ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK}
    /sbin/route add -net ${NETWORK} netmask ${NETMASK}
    /sbin/route add default gw ${GATEWAY} metric 1

    NOTE: the "dummy" network interface must be compiled into your kernel,
    or inserted into the kernel using "insmod" for the "ifconfig" to work.
    Typing "cat /proc/net/dev" will show which network interfaces your
    kernel currently supports.

    If you have a network card, use the following lines:

    /sbin/ifconfig eth0 ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK}
    /sbin/route add -net ${NETWORK} netmask ${NETMASK}
    /sbin/route add default gw ${GATEWAY} metric 1

6.  Reboot your machine (necessary!), and see if you can telnet to yourself
    ("telnet fiero").  As a general rule, the license manager will work if
    you are able to telnet to your own machine.  

    You are on the right track if you can telnet to 127.0.0.1 (step 3 was 
    done correctly), "localhost" (steps 2-3 were done correctly), or your 
    Internet address (steps 3-5 were done correctly).


Note:
=====
In case of a problem in installing or using Verilint, please send us an
e-mail to support@interhdl.com.  You can also call us at (650) 428-4200 or
FAX us at (650) 428-4201.  You may also contact us if you have suggestions
for additional features that you would like to see in future releases.

=============================================================================
      The license management portion of this product is based on
                         Elan License Manager
               (C) 1989-1997 Elan Computer Group, Inc.
                         All Rights reserved.

                         Elan License Manager
             is a trademark of Elan Computer Group, Inc.

=============================================================================
Verilog-XL is a registered trademark of Cadence Design Systems, Inc.
Verilint is a trademark of interHDL, Inc.
=============================================================================

interHDL, Inc.
4984 El Camino Real, Suite 210
Los Altos, CA  94022-1433, USA

Phone:  (650) 428-4200
Fax:    (650) 428-4201
E-mail: info@interhdl.com    (Sales information)
	support@interhdl.com (Technical Support)
