HDLmaker is offered free of charge by Polybus Systems corporation under a BSD style open source license.  
Polybus offers Intellectual Property and FPGA and ASIC design services. For information on Polybus' InfiniBand cores for ASICs and FPGAs see, 
 
 
If you are interested in licensing our InfiniBand IP or need FPGA or ASIC design consulting please contact Joshua Rosen  bjrosen@polybus.com.  
 
  Download HDLmaker (Includes all libraries, Linux binaries) 
 
 
 
  Installing HDLmaker 
Untar it, then run the install script which will compile HDLmaker for your architecture. 
 
tar -xvf hdlmaker_install.tar  
cd hdlmaker_install  
./install.csh 
 
  Installing the Man Page 
Man pages must be installed as root.  
 
cd $HDLMAKER_LIB/sources/hdlmaker_sources 
su 
make man 
 
  Making and installing HDLmaker 
The source code for HDLmaker is in the sources/hdlmaker_sources directory.  The code can be built witht he make install command (the install script takes care of this step). 
 
cd $HDLMAKER_LIB/sources/hdlmaker_sources 
make install 
 
  Setting up paths 
Two scripts are provided to help set up the env variables and paths, one script is for csh/tcsh and the other is for bash shells. The scripts are hdlmaker.cshrc and hdlmaker.sh. The scripts should be sourced in your .cshrc or .bashrc files after you have set the basic HDLmaker environment variables. 
 
  Setting up .cshrc files 
Add the following to your .cshrc 
 
setenv HDLMAKER_LIB /usr/local/hdlmaker_lib 
 
setenv HDLMAKER_SYNTHESIS xst 
setenv HDLMAKER_LANGUAGE verilog 
setenv FPGA_FAMILY spartan3 
setenv HDLMAKER_COMPANY "Polybus Systems, Westford MA" 
setenv HDLMAKER_ENGINEER "B. Joshua Rosen" 
 
source $HDLMAKER_LIB/csh/hdlmaker.cshrc 
 
  Setting up .bashrc files 
Add the following to your .cshrc 
 
export HDLMAKER_LIB=/usr/local/hdlmaker_lib 
 
export HDLMAKER_SYNTHESIS=xst 
export HDLMAKER_LANGUAGE=verilog 
export FPGA_FAMILY=spartan3 
export HDLMAKER_COMPANY="Polybus Systems, Westford MA" 
export HDLMAKER_ENGINEER="B. Joshua Rosen" 
 
source $HDLMAKER_LIB/csh/hdlmaker.sh 
 
  Required Environment Variables 
  HDLMAKER_LIB 
HDLMAKER_LIB specifies the path to the HDLmaker installation. Example: 
 
setenv HDLMAKER_LIB {/usr/tools/hdlmaker_lib} 
 
 
  Optional Environment Variables 
HDLmaker environment variables may be defined as standard UNIX environment variable,  or in the polybus.lib file or in an HDLmaker .top file. Some variables may also be specified on the command line. 
If the variable is defined in multiple places then the precedence order is as follows 
 
1)Command line 
2).top File 
3)polybus.lib 
4)UNIX environment variable 
 
  HDLMAKER_LANGUAGE 
HDLMAKER_LANGUAGE specifies the default language of the HDLmaker output. The legal options are verilog and vhdl. Examples: 
 
setenv HDLMAKER_LANGUAGE verilog 
 
The default language may be overridden at the command line level with the switches -verilog and -vhdl, example: 
 
hdlmaker -verilog foo.top 
 
or 
 
hdlmaker -vhdl foo.top 
 
  HDLMAKER_COMPANY 
HDLMAKER_COMPANY specifies the copyright holder of the design. HDLmaker inserts a standard copyright notice at the top of the generated Verilog and VHDL files. The HDLMAKER_COMPANY env variable can be overridden by the #company statement in a .top file, by the HDLMAKER_COPYRIGHT env variable or a #copyright statement in the .top file. The following are equivalent: 
 
setenv HDLMAKER_COMPANY "Polybus Systems Corp., Westford, MA" 
 
In the .top file 
#company "Polybus Systems Corp., Westford, MA";  // A .top file statement 
 
In polybus.lib 
#HDLMAKER_LIB "Polybus Systems Corp., Westford, MA"; 
 
On the command line 
hdlmaker -company "Polybus Systems Corp., Westford, MA" foo.top 
 
Both will generate the following copyright statement: 
 
//-- Copyright (c) 2001 Polybus Systems Corp., Westford, MA 
//-- The information contained in this file is confidential and proprietary.    
//-- Any reproduction, use or disclosure, in whole or in part, of this          
//-- program, including any attempt to obtain a human-readable version of this  
//-- program, without the express, prior written consent of Polybus Systems Corp., Westford, MA              
//-- is strictly prohibited.  
 
  HDLMAKER_ENGINEER 
HDLMAKER_ENGINEER specifies the name of the designer. A #engineer statement in the .top file overrides the HDLMAKER_ENGINEER env variable. The following are equivalent: 
 
setenv HDLMAKER_ENGINEER "B. Joshua Rosen" 
 
In the .top file 
#engineer "B. Joshua Rosen"; 
 
In polybus.lib 
#HDLMAKER_ENGINEER "B. Joshua Rosen"; 
 
Both will generate the following copyright statement: 
 
//-- Engineer: B. Joshua Rosen 
 
  HDLMAKER_COPYRIGHT 
HDLMAKER_COPYRIGHT specifies a path name to a master copyright statement file. A #copyright statement in the .top file takes precedence over the HDLMAKER_COPYRIGHT env variable. Both take precedence over the HDLMAKER_COMPANY env variable and #company .top statement. The following are equivalent: 
 
setenv HDLMAKER_COPYRIGHT $HDLMAKER_LIB/copyright_files/polybus.bsd 
 
In the .top file 
#copyright "$HDLMAKER_LIB/copyright_files/polybus.bsd"; 
 
In polybus.lib 
#HDLMAKER_COPYRIGHT "$HDLMAKER_LIB/copyright_files/polybus.bsd"; 
 
In this example the following would be generated: 
 
//-- Copyright (c) 2001 Polybus Systems Corp. All rights reserved. 
//--  
//-- Redistribution and use in source and binary forms, with or without 
//-- modification, are permitted provided that the following conditions 
//-- are met: 
//--  
//-- 1. Redistributions of source code must retain the above copyright 
//-- notice, this list of conditions and the following disclaimer. 
//--  
//-- 2. Redistributions in binary form must reproduce the above copyright 
//-- notice, this list of conditions and the following disclaimer in the 
//-- documentation and/or other materials provided with the distribution. 
//--  
//-- 3. All advertising materials mentioning features or use of this software 
//-- must display the following acknowledgment: 
//-- This product includes software developed by the Polybus Systems Corporation. 
//--  
//-- 4. Neither the name of Polybus System Corporation or the names of its contributors 
//-- may be used to endorse or promote products derived from this software 
//-- without specific prior written permission. 
//--  
//-- THIS SOFTWARE IS PROVIDED BY POLYBUS SYSTEMS CORP. AND IT'S CONTRIBUTORS "AS IS" AND 
//-- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
//-- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
//-- ARE DISCLAIMED. IN NO EVENT SHALL THE POLYBUS SYSTEMS CORP. OR CONTRIBUTORS BE LIABLE 
//-- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
//-- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
//-- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
//-- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
//-- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
//-- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
//-- SUCH DAMAGE. 
 
  HDLMAKER_CASE_SENS 
HDLMAKER_CASE_SENS enables case sensitivity. For Verilog designs this variable should be set to TRUE, for VHDL it should be set to FALSE. The .top file directive #casesensitive takes precedence over the HDLMAKER_CASE_SENS env variable. 
 
setenv HDLMAKER_CASE_SENS TRUE 
 
In the .top file 
#casesensitive; // This enables case sensitivity, the default is not case sensitive 
 
In polybus.lib 
 
#HDLMAKER_CASE_SENS "1"; 
 
  HDLMAKER_SYNTHESIS 
The HDLMAKER_SYNTHESIS env variable specifies the target synthesis tool. Hdlmaker generates tool specific scripts and Make files. It also inserts tool specific directives into the hdl code. The supported tools are: 
 
 synplicity, (Synplify)  
 synopsys, (design compiler and fpga_compiler)  
 xst  
 quartus  
 
Synplicity and Synopsis have the best support, exemplar's support is probably out of date. There is no support for fpga_express. 
 
To specify Synplify as the synthesis target: 
 
setenv HDLMAKER_SYNTHESIS synplicity 
 
In polybus.lib 
 
#HDLMAKER_SYNTHESIS "synplicity"; 
 
  HDLMAKER_SIMULATOR 
The HDLMAKER_SIMULATOR env variable specifies the target simulation tool. HDLmaker creates tool specific scripts for most popular simulation tools. The legal values for the HDLMAKER_SIMULATOR variable are: 
 
 finsim (Fintronics Finsim)  
 verilogxl (Cadence VerilogXL)  
 vcs (Synopsys VCS)  
 leapfrog (Cadence Leapfrog)  
 ncverilog (Cadence ncverilog)  
 nc_sim (Cadence NC-Sim)  
 modeltech  
 
setenv HDLMAKER_SIMULATOR ncverilog 
 
 
  HDLMAKER_VERILOG_CMD 
HDLmaker generate an ordered list of source files called design_name_v.cmd (where design_name.top is the top level .top file and design_name.v is the top level verilog file). The HDLMAKER_VERILOG_CMD specifies a string that is inserted in the head of the _v.cmd file. For example consider a testbench where the top level file is called sys.top. If you specify an empty string 
 
setenv HDLMAKER_VERILOG_CMD "" 
 
then you could invoke verilogxl as follows 
 
verilog -f sys_v.cmd 
 
You could also put the verilog command in the sys_v.cmd file, 
 
setenv HDLMAKER_VERILOG_CMD "verilog" 
 
then you could invoke verilogxl as follows 
 
./sys_v.cmd 
 
  HDLMAKER_FAMILY 
HDLmaker has a set of libraries which contain family specific information about various FPGA families. These libraries contain IO component information, package pinouts, simulation models, synthesis commands and component designs. The libraries are located under the hdlmaker_lib directory. 
 
The supported families are: 
 
 xc4000  
 xc4000e  
 xc4000ex  
 xc4000xl  
 xc9500  
 xc9500-xl  
 Virtex  
 Virtexe  
 Virtex2  
 Virtex2p  
 Virtex2px  
 Virtex4  
 Virtex5  
 Virtex6  
 orca2c  
 orca2ca  
 spartan  
 spartan-xl  
 spartan2  
 spartan2e  
 spartan3  
 spartan3e  
 xc5200  
 Stratix  
 Stratixiigx  
 Stratixivgx (includes gt as well as gx)  
 AcronixSpeedster  
 
setenv HDLMAKER_FAMILY virtexe 
 
In the .top file 
#family "spartan2"; 
 
In polybus.lib 
 
#family "spartan2"; 
 
  HDLMAKER_MAP_EFFORT 
This is a Synopsys design compiler specific variable. If defined this variable will put the specified map_effort directive into the Synopsys design compiler scripts (.job file). 
 
setenv HDLMAKER_SYNOPSYS_MAP_EFFORT "high" 
 
  HDLMAKER_UPCASE_IO 
Hdlmaker uses different IO component models for simulation and synthesis. For simulation a lower case component name is used, for synthesis an upper case name is used (i.e. fd.v versus FD.v). This is a legacy of the Xilinx XC4000 family which had a hidden reset line in the IO flops. The HDLMAKER_UPCASE_IO env variable tells HDLmaker to upcase IO component names when producing synthesis code.  For Xilinx FPGAs you should set this variable to 1. 
 
setenv HDLMAKER_UPCASE_IO 1 
 
  Schematic Layout Environment Variables 
HDLmaker can generate schematics for designs of type "board". The WIDTH and HEIGHT variables specify the page dimensions in tenths of an inch. The ROTATE variable specifies landscape (1) or portrait (0) layout, The PLACE_VERTICALLY variable specifies the direction in which the components are placed on the page. PLACE_VERTICALLY 1 will start at the top left hand corner and place from top to bottom. PLACE_VERTICALLY 0 places the components from left to right. The schematic generator places components in the order that they are found in the .top file. 
 
setenv HDLMAKER_PAGE_WIDTH 100 
setenv HDLMAKER_PAGE_HEIGHT 75 
setenv HDLMAKER_PAGE_ROTATE 1 
setenv HDLMAKER_PLACE_VERTICALLY 1 
 
HDLMAKER_SET_DEFPARAM 
Verilog has two methods of passing parameters, by argument and with the defparam statement. HDLmaker supports both methods. To use defparam set the SET_DEFPARAM variable to 1, to use the argument method set it to 0. Generally the defparam method is better because it doesn't require you to specify all of the parameters, only those parameters which differ from the default. 
 
setenv HDLMAKER_SET_DEFPARAM 1 
 
  HDLMAKER_LOCAL_COPY 
Copy all files to the local directories. When set to TRUE HDLmaker will copy all files to the appropriate local directory (.v to ../v, .vhd to ../vhd, .top to ../top and so forth). In addition all files generated by HDLMaker will be saved in the appropriate local directory. When set to FALSE HDLmaker does not make local copies. HDLmaker generated files will be saved in the subdirectories associated with each .top file in the design. For example if HDLmaker finds a top file called foo.top in the directory ../bar/top/foo.top then it will place the resulting .v file (say foo.v) into the related v directory, ../bar/v/foo.v. The one exception to the rule are script files that are stored in both the related script directory (in this example ../bar/scripts) and into the local script directory (../script). Large projects which consist of multiple sub-projects should set the LOCAL_COPY directory to FALSE, small projects may find it convenient to set LOCAL_COPY to TRUE. Earlier versions of HDLmaker always made local copies so setting this variable to TRUE will mimic the behavior the earlier versions. 
 
setenv HDLMAKER_LOCAL_COPY FALSE 
 
In the polybus.lib 
 
#HDLMAKER_LOCAL_COPY TRUE 
 
  HDLMAKER_USE_SUB_DIR 
Modify relative pathnames inside of scripts to account for the use of a subdirectory. For must applications you will want to set this variable to TRUE or 1. The example below illustrates to effect of this variable. For a the module ../bar/v/foo.v the path used in a script would be 
 
setenv HDLMAKER_USE_SUB_DIRECTORY FALSE 
 
../bar/v/foo.v 
 
setenv HDLMAKER_USE_SUB_DIRECTORY TRUE 
 
../../v/foo.v 
 
a local file, v/foobar.v, would be referenced as  
 
setenv HDLMAKER_USE_SUB_DIRECTORY FALSE 
 
v/foo.v 
 
setenv HDLMAKER_USE_SUB_DIRECTORY TRUE 
 
../v/foo.v 
 
In polybus.lib 
 
#HDLMAKER_USE_SUB_DIRECTORY FALSE 
  HDLMAKER_GEN_DATE 
Include the generation date in the header. Default is FALSE. 
 
  HDLMAKER_ALLOW_SUB 
Allow the substitution of an existing Verilog or VHDL file if a .top file is not found.  The default is FALSE. 
 
#HDLMAKER_UALLOW_SUB TRUE 
 
  HDLMAKER.CSHRC 
 
source $HDLMAKER_LIB/csh/hdlmaker.cshrc 
 
  HDLMAKER.SH 
A bashscript is provided in  $HDLMAKER_LIB/csh/hdlmaker.sh which you may source in your .bashrc file to set the required HDLmaker env variables.  
 
source $HDLMAKER_LIB/csh/hdlmaker.sh 
 
 
 
 |