.TH VMKR 1 .SH NAME vmkr \- creates a make file for vhdl files .SH SYNOPSIS .I vmkr [ options ] file1 [file2 ...] .SH DESCRIPTION .I vmkr generates makefiles for VHDL source code, for use with the VHDL toolsets listed below. After parsing all of the files specified, the interdependencies are identified, and make compatable code is generated to analyse, model generate, and build all top level architectures and configurations. The makefile code is sent to standard out. Thus, you can redirect the output to whatever you call your makefile. NOTE : for vmkr to properly work, every design unit MUST be in a separate file. Design units are : entities, architectures, packages, package bodies, and configurations. Not having one design unit per file defeats some of the advantages that VHDL has. If your code does not conform to this specification, use the associated tool, vsplit, to split your code up appropriately. Vmkr can be modified to work with multiple design units per file, but is not supported in the original version, as this is not the methodology we wish users to conform to. For those configurations and architectures whose corresponding entities have no formal ports, vmkr identifies them as top level. Note that this does not mean that they are necessarily top level, as an entity can exist that is not a top level, yet has no ports. The first top level target is identified as "system", and subsequent ones "system2", "system3", etc. Also, there is a mapping from "system" to the top level name (ie. "ent_arch", or "cnfg_ent") so that the user can just enter the architecture or configuration s/he wishes. Dependencies on packages from the library "work" are automatically included, as are those packages encountered in the list of files (even if they are not from library "work"). To include dependencies on all packages regardless of library, or if they are encountered, use option "-l". One would use the "-l" option when working with multiple libraries in their VHDL code. It is suggested that you have only one design library per directory. Then, run vmkr with "-l", and examine the makefile that is generated. Near the top, there will be a list of the libraries. You can then modify the makefile, specifying the path to those libraries. Finally, you can cut out just the library defintions from the makefile, and put them into a file called ".makefile.include" (see below), and these definitions will be included into the makefile every time you rerun vmkr. Vmkr prints to standard error, any errors that have been encountered during execution. Since these error messages are also printed to standard out, the makefile may have to be edited to remove these messages before use. .SH OPTIONS .IP -a This option is used to supress the code to make all of the "loose" units. A "loose" unit (eg. package, entity, architecture) is one that is not used by a top level architecture or configuration, and thus not entered into the dependency list. .IP -c If the user wishes the makefile to store the "state" files in the current directory, specify this flag. By default (without this flag), vmkr stores the "state" files into the directory ".vmkr", to avoid cluttering up the current directory with these files. Note that the "state" files are all prefixed with ".". This option is not normally used by new users, but is provided for backwards compatability with previous versions of vmkr. .IP -l This option is used to indicate to vmkr to include dependencies on packages, architectures, etc that reside in other libraries, and are not in the list of files passed to vmkr. The name of the libraries will be identified as variables near the top of the output generated, and it is up to the user to assign the path to the libraries to these variables. .IP -t This option is used to generate makefiles for different toolsets. There is no default toolset, but you can modify makegen.c to give you a default toolset, so that you don't have to specify it every time you run vmkr. Intermetrics is specified by i or intermetrics. The Vantage toolset is specified by v or vantage, the Model Technology toolset is specified by m or modeltech, the Synopsys toolset is specified by s or synopsys, the VHDL-XL toolset is specified by x or xl, and the Dasix toolset is specified by d or dasix. Note that Synopsys does not properly follow the compilation rules as specified in the LRM, requiring more recompilation than is really necessary. They have promised to fix this in a later release. When they do, vmkr can be readily modified to accomodate this, by simply undoing the changes made in the file create_make.c, on the date Feb. 4/93 (this date is in the comments next to the change). .SH OTHER FEATURES If there is a file called ".makefile.include" in the current working directory, vmkr will copy the contents of that file directly to the output. Additionally, the library variables will NOT be printed out. Thus, one could run vmkr, assign the library variables, and store these to the file ".makefile.include". Running vmkr again will then include this file. "make loose" makes all of the loose units, and "make all" makes all of the systems. Additionally, executing make without any target name makes the first system. "make sim" executes the simulation command for the target system. "make sim2" does the same for system2, etc. "make analyze" is usefull for the Intermetrics toolset. It will only execute the analysis portion for all out of date files, avoiding the model generation, and build phases. Once the syntax bugs are gone, the "normal" make can then be executed, to then do the mg and build phases. .SH BUGS Vmkr cannot currently be used with the VHDL-XL toolset, as you must be within their own environment to execute their compile commands. However, vmkr can be used to create the makefile, and then you can extract the order of execution required by "make -n". .SH "AUTHOR" .nf Original program written by Himanshu M. Thaker .fi .SH FURTHER INFORMATION For further information on how vmkr works, refer to document "Internal Workings of vmkr", by H.M. Thaker. This document also includes a complete list of dependency rules, for vhdl source code.