OpenCores
URL https://opencores.org/ocsvn/w11/w11/trunk

Subversion Repositories w11

[/] [w11/] [tags/] [w11a_V0.6/] [doc/] [man/] [man1/] [vbomconv.1] - Blame information for rev 24

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 23 wfjm
.\"  -*- nroff -*-
2
.\"  $Id: vbomconv.1 558 2014-06-01 22:20:51Z mueller $
3
.\"
4
.\" Copyright 2010-2013 by Walter F.J. Mueller 
5
.\"
6
.\"
7
.\" ------------------------------------------------------------------
8
.
9
.TH VBOMCONV 1 2013-10-20 "Retro Project" "Retro Project Manual"
10
.\" ------------------------------------------------------------------
11
.SH NAME
12
vbomconv \- generate files and actions from vbom manifest files
13
.\" ------------------------------------------------------------------
14
.SH SYNOPSIS
15
.
16
.SY vbomconv
17
.B \-\-help
18
.
19
.SY vbomconv
20
.OP \-\-trace
21
.B \-\-dep_xst
22
|
23
.B \-\-dep_ghdl
24
|
25
.B \-\-dep_isim
26
.I vbom
27
.
28
.SY vbomconv
29
.OP \-\-trace
30
.B \-\-xst_prj
31
|
32
.B \-\-isim_prj
33
.I vbom
34
.
35
.SY vbomconv
36
.OP \-\-trace
37
.B \-\-ghdl_a_cmd
38
|
39
.B \-\-ghdl_a
40
.I vbom
41
.
42
.SY vbomconv
43
.OP \-\-trace
44
.B \-\-ghdl_i_cmd
45
|
46
.B \-\-ghdl_i
47
.I vbom
48
.
49
.SY vbomconv
50
.OP \-\-trace
51
.B \-\-ghdl_m_cmd
52
|
53
.B \-\-ghdl_m
54
.I vbom
55
.
56
.SY vbomconv
57
.OP \-\-trace
58
.BI \-\-xst_export "\fR=\fPpath"
59
|
60
.BI \-\-ghdl_export "\fR=\fPpath"
61
.I vbom
62
.
63
.SY vbomconv
64
.OP \-\-trace
65
.BI \-\-isim_export "\fR=\fPpath"
66
.I vbom
67
.
68
.SY vbomconv
69
.OP \-\-trace
70
.B \-\-get_top
71
.I vbom
72
.
73
.SY vbomconv
74
.OP \-\-trace
75
.B \-\-flist
76
.I vbom
77
.YS
78
.
79
.\" ------------------------------------------------------------------
80
.SH DESCRIPTION
81
.
82
.\" --------------------------------------------------------
83
.SS Introduction
84
\fBvbomconv\fP is the central tool in a build system for
85
\fIvhdl\fP projects. Each \fIvhdl\fP source file has an associated
86
manifest file in \fBvbom\fP(5) format which contains a list of used
87
libraries and instantiated components, and the name of the
88
associated vhdl source file.
89
The instantiated components are defined via their \fBvbom\fP file.
90
All file names are relative to the current directory.
91
A recursive traversal through all \fBvbom\fP's
92
gives for each vhdl entity all the sources files needed to compile it,
93
with duplicates removed and in proper compilation order, thus libraries first
94
and top level design last.
95
 
96
The \fBvbomconv\fP tool does this traversal of \fBvbom\fP
97
files and generates, depending on command line options, the files and/or
98
commands needed to run a synthesis tool or to build a simulation model.
99
Currently supported is synthesis with ISE \fBxst\fP and simulation with
100
\fBghdl\fP(1) or ISE \fBISim\fP.
101
\fBvbomconv\fP therefore currently generates
102
 
103
.PD 0
104
.IP "\fB- xst\fP" 8
105
project files
106
.IP "\fB- ghdl\fP" 8
107
commands for analysis, inspection and make step
108
.IP "\fB- ISim\fP" 8
109
project files
110
.IP "\fB- make\fP" 8
111
dependency files
112
.PD
113
 
114
.PP
115
Key advantage of this approach is that the individual \fBvbom\fP
116
files are easy to maintain. They reflect the libraries and components used
117
in the vhdl source they describe, a structural change in the vhdl source
118
usually implies an update of the vbom. The project files are automatically
119
generated from this 'local' information, which can be of great help in
120
projects with many top level designs which large number of entities in
121
different constellations.
122
 
123
\fBvbomconv\fP is usually embedded in a GNU \fBmake\fP(1) based build system.
124
The \fIMakefile\fP's in general just contain a few definitions and includes,
125
the whole \fBvbomconv\fP magic is encapsulated in some pattern rules for
126
simulation and synthesis.
127
Some are given in the EXAMPLES section.
128
.
129
.\" --------------------------------------------------------
130
.SS Principle of Operation
131
\fBvbomconv\fP will start with processing the \fIvbom\fP
132
file given as argument.
133
Each file name extracted from a \fBvbom\fP is prepended with the directory
134
path of the \fBvbom\fP.
135
This ensures that all file names are relative to working directory under
136
which \fBvbomconv\fP was started, even though each \fBvbom\fP file holds
137
only file names which are relative to the \fBvbom\fP.
138
 
139
\fBvbomconv\fP expects that the entries in the \fBvbom\fP's
140
are ordered, libraries first, than the components in the order they are
141
instantiated, finally the name of the associated source file.
142
Each \fI.vhd\fP file is added to a table of source files.
143
Each \fI.vbom\fP file is added to a list of \fBvbom\fP's
144
to be processed if it hasn't been processed yet.
145
The sub-\fBvbom\fP's are processed in the order they were found which
146
leads to breadth-first traversal of the \fBvbom\fP tree.
147
 
148
After all \fBvbom\fP's
149
are processed a ranking algorithm will generate an ordered list of source
150
files in proper compilation order. This ensures that libraries are compiled
151
before a source refers to them with a '\fIuse\fP' clause, and that entities
152
are compiled before they are refered to by an explicit instatiation.
153
 
154
The \fBvbom\fP file format supports conditional inclusion of files via a
155
condition prefix.
156
The main purpose of this mechanism is to handle libraries and components
157
which are only refered in
158
.EX
159
    -- synthesis translate_off
160
    -- synthesis translate_on
161
.EE
162
sections and are used only for simulation.
163
 
164
The \fBvbom\fP file format has a logical name mechanism to support the
165
\fIconfiguration\fP mechanism of vhdl. A logical name can be defined with
166
.EX
167
     = 
168
.EE
169
and it can be used with
170
.EX
171
     : 
172
.EE
173
The first definition seen in the \fIvbom\fP
174
traversal is taken, all others are ignored. The filename in the usage clause
175
is the default used in case the logical name wasn't defined.
176
 
177
Last but not least are 3 directives defined in the \fBvbom\fP
178
file format:
179
.
180
.IP "\fB@top\fP:\fIname\fP"
181
allows to specify the top level design name in case it differs from the
182
stem of the \fIvbom\fP file name.
183
.
184
.IP "\fB@lib\fP:\fIname\fP"
185
allows to specify additional system libraries. Currently used to indicate
186
that the \fIunisim\fP or \fIsimprim\fP libraries are needed by \fBghdl\fP.
187
.
188
.IP "\fB@ucf_cpp\fP:\fIfile\fP"
189
indicates that a \fIfile\fP.ucf file is to be generated by \fBcpp\fP(1)
190
from a \fIfile\fP.ucf_cpp source file. This allows to modularize ISE ucf files.
191
.PP
192
The full description of the file format and examples are given in a
193
separate man page \fBvbom\fP(5).
194
.
195
.\" --------------------------------------------------------
196
.SH USAGE
197
The \fBvbomconv\fP command has the form
198
.IP "" 4
199
.B vbomconv
200
.RI [ options ]
201
.RI [ action ]
202
.I vbom
203
.PP
204
and must be called, with the exception of the \fB\-\-help\fP case, with
205
exactly one \fIvbom\fP file.
206
.
207
.\" --------------------------------------------------------
208
.SH OPTIONS
209
.P
210
.IP \fB\-\-trace\fP
211
Gives a detailed trace, written to \fIstderr\fP,
212
of the vbom file traversal and processing, the process of source file ranking
213
to determine the compilation order, and of the final internal file list and
214
property table.
215
.
216
.SH ACTIONS
217
.P
218
.\" ----------------------------------------------
219
.IP \fB\-\-help\fP
220
Prints a usage summary to \fIstdout\fP and quits. This action is the only
221
one not requiring a \fIvbom\fP file.
222
.
223
.\" ----------------------------------------------
224
.TP
225
.B \-\-dep_xst
226
.TQ
227
.B \-\-dep_ghdl
228
.TQ
229
.B \-\-dep_isim
230
These three actions write to \fIstdout\fP dependency rules for inclusion in
231
\fIMakefile\fPs.
232
Together with an appropruate pattern rule they allow to automatitize
233
the dependency handling, see the EXAMPLES section for practical usage.
234
 
235
\fB\-\-dep_xst\fP creates the dependencies for \fBxst\fP
236
synthesis make flows and produces the following types of dependencies
237
.EX
238
   \fI\fP.ngc : \fI\fP.dep_xst
239
   \fI\fP.ngc : \fB*\fP.vhd
240
   \fI\fP.dep_xst : \fB*\fP.vbom
241
.EE
242
with \fB*\fP indicating that one rule will be generated for each file
243
involved.
244
 
245
If a \fB@ucf_cpp\fP directive was found also rules describing the
246
.I ucf
247
file handling are added
248
.EX
249
   .ncd : .ucf
250
   include sys_w11a_n2.dep_ucf_cpp
251
.EE
252
If this mechanism is used the \fIMakefile\fP must contain, usually via
253
another include, a pattern rule to create the \fI.dep_ucf_cpp\fP file,
254
for example
255
.EX
256
    %.dep_ucf_cpp : %.ucf_cpp
257
            cpp -I${RETROBASE}/rtl -MM $*.ucf_cpp |\\
258
                sed 's/\.o:/\.ucf:/' > $*.dep_ucf_cpp
259
.EE
260
 
261
\fB\-\-dep_ghdl\fP creates the dependencies for \fBghdl\fP
262
based simulation models and produces the following types of dependencies
263
.EX
264
   \fI\fP : \fI\fP.dep_ghdl
265
   \fI\fP : \fB*\fP.vhd
266
   \fI\fP.dep_ghdl : \fB*\fP.vbom
267
.EE
268
 
269
\fB\-\-dep_isim\fP creates the dependencies for ISE \fBISim\fP
270
based simulation models and produces the following types of dependencies
271
.EX
272
   \fI\fP_ISim : \fI\fP.dep_isim
273
   \fI\fP_ISim : \fB*\fP.vhd
274
   \fI\fP.dep_isim : \fB*\fP.vbom
275
.EE
276
.
277
.\" ----------------------------------------------
278
.TP
279
.B \-\-xst_prj
280
.TQ
281
.B \-\-isim_prj
282
These two actions write to \fIstdout\fP a project file suitable for ISE
283
\fBxst\fP or \fBISim\fP, respectively.
284
The vhdl source files are in proper compilation order. See
285
the EXAMPLES section for practical usage in a make flow.
286
.
287
.\" ----------------------------------------------
288
.TP
289
.B \-\-ghdl_a_cmd
290
.TQ
291
.B \-\-ghdl_a
292
The \fB\-\-ghdl_a_cmd\fP action writes to \fIstdout\fP a list of
293
\fB"ghdl -a"\fP commands for the \fBghdl\fP analysis step.
294
The commands are in proper compilation order. The \fB\-\-ghdl_a\fP
295
action immediately executes these commands via \fBexec\fP(3).
296
.
297
.\" ----------------------------------------------
298
.TP
299
.B \-\-ghdl_i_cmd
300
.TQ
301
.B \-\-ghdl_i
302
The \fB\-\-ghdl_i_cmd\fP action writes to \fIstdout\fP
303
a \fB"ghdl -i"\fP command for the \fBghdl\fP inspection step with all
304
source file names in proper compilation order. The \fB\-\-ghdl_i\fP
305
action immediately executes this command via \fBexec\fP(3).
306
.
307
.\" ----------------------------------------------
308
.TP
309
.B \-\-ghdl_m_cmd
310
.TQ
311
.B \-\-ghdl_m
312
The \fB\-\-ghdl_m_cmd\fP action writes to \fIstdout\fP
313
a \fB"ghdl -m"\fP command for the \fBghdl\fP inspection make with all
314
required library and external object file qualifiers.
315
The \fB\-\-ghdl_m\fP action immediately executes this command via
316
\fBexec\fP(3).
317
.
318
.\" ----------------------------------------------
319
.TP
320
.BI \-\-xst_export \fR=\fPpath
321
.TQ
322
.BI \-\-ghdl_export \fR=\fPpath
323
.TQ
324
.BI \-\-isim_export \fR=\fPpath
325
These three actions create a flat copy of all source files needed for a
326
\fBxst\fP synthesis or a \fBghdl\fP or \fBISim\fP
327
simulation model in the directory \fIpath\fP.
328
The sub directory structure is lost, all files will be in directory
329
\fIpath\fP. This is for example helpful for setting up an ISE project.
330
.
331
.\" ----------------------------------------------
332
.IP \fB\-\-get_top\fP
333
Returns the top level entity name to \fIstdout\fP.
334
Is by default the stem of the \fIvbom\fP file name, or given by a
335
\fB@top\fP directive picked up during \fBvbom\fP traversal.
336
.
337
.\" ----------------------------------------------
338
.IP \fB\-\-flist\fP
339
Write an alphabetically sorted list of all source and vbom files to
340
\fIstdout\fP.
341
This information is for example helpful to build a project export tool.
342
Note that in contrast to most other actions the files are not in compilation
343
but in alphabetic order, and that also the \fBvbom\fP files are included
344
in this list.
345
.
346
.\" ------------------------------------------------------------------
347
.SH EXIT STATUS
348
Returns a non-zero exit status when the
349
.I vbom
350
file is not found or readable or none or multiple actions are given.
351
.PP
352
The \fB\-\-ghdl_a\fP, \fB\-\-ghdl_i\fP, or \fB\-\-ghdl_m\fP
353
actions use \fBexec\fP(3) to execute the \fBghdl\fP command.
354
In these cases the caller will see the exit status of \fBghdl\fP.
355
.
356
.\" ------------------------------------------------------------------
357
.SH BUGS
358
.IP \(bu 2
359
Duplicate file elimination fails when one source file is refered to by
360
different \fIvbom\fP's
361
with different paths, like for example the file
362
.I aa/bb/cc/foo.vdh
363
seen from
364
.I aa/xx/yy
365
via
366
.EX
367
    ../../bb/cc/foo.vhd
368
    ../../../aa/bb/cc/foo.vdh
369
.EE
370
The synthesis and simulation tools will react with sometimes hard to
371
trace error messages.
372
.br
373
To avoid this problem ensure that building of the relative paths
374
is always done with the minimal number of \fI../\fP to reach the file.
375
.
376
.IP \(bu 2
377
The handling of \fIucf\fP files with the \fB@ucf_cpp\fP directive
378
is a kludge and should be revised.
379
.
380
.\" ------------------------------------------------------------------
381
.SH EXAMPLES
382
.
383
.\" --------------------------------------------------------
384
.SS Auto-Dependency Generation
385
The \fB\-\-dep_xst\fP, \fB\-\-dep_ghdl\fP and \fB\-\-dep_isim\fP
386
actions allow to setup together with the auto-rebuild and restart semantics
387
of the GNU \fBmake\fP(1) \fIinclude\fP directive to fully automatize the
388
proper generation of dependencies.
389
Just add to the \fIMakefile\fP
390
a pattern rule to create the dependency rule files from the \fBvbom\fP
391
files and include them. In case they don't yet exists or are out of date
392
\fBmake\fP(1) will (re-)create them and restart. Example for using
393
\fB\-\-dep_xst\fP in a \fIMakefile\fP :
394
.PP
395
.EX
396
    VBOM_all = $(wildcard *.vbom)
397
    ...
398
    %.dep_xst: %.vbom
399
            vbomconv --dep_xst $< > $@
400
    ...
401
    include $(VBOM_all:.vbom=.dep_xst)
402
.EE
403
.PP
404
After renames and deletions of source files the dependency rule files can have
405
dangling entries which cause 'No rule to make target' errors. In that case
406
just delete all '.dep_*' files. The script \fBrm_dep\fP(1)
407
will do that recursively for a whole directory tree.
408
.
409
.\" --------------------------------------------------------
410
.SS Xst Synthesis
411
A simple \fBmake\fP(1) flow for synthesis with \fBxst\fP using
412
ISE \fBxflow\fP and the \fB\-\-xst_prj\fP action and a pattern
413
rule looks like
414
.PP
415
.EX
416
    %.ngc: %.vbom
417
            if [ ! -d ./ise ]; then mkdir ./ise; fi
418
            (cd ./ise; vbomconv --xst_prj ../$< > $*.prj)
419
            (cd ./ise; touch $*.xcf)
420
            xtwi xflow -wd ise -synth xst_vhdl.opt $*.prj
421
            (cd ./ise; chmod -x *.* )
422
            if [ -r ./ise/$*.ngc ]; then cp -p ./ise/$*.ngc .; fi
423
            if [ -r ./ise/$*_xst.log ]; then cp -p ./ise/$*_xst.log .; fi
424
.EE
425
.PP
426
It creates a working directory \fI./ise\fP, the xst project file, runs
427
\fBxst\fP via ISE \fBxflow\fP, and copies the \fIngc\fP and \fIlog\fP files
428
back into the working directory.
429
The ISE environment is started with \fBxtwi\fR(1) wrapper.
430
.
431
.\" --------------------------------------------------------
432
.SS Ghdl Simulation
433
A simple \fBmake\fP(1) flow for building a \fBghdl\fP simulation model from
434
the sources described by a \fBvbom\fP file is given by the following
435
pattern rule:
436
.PP
437
.EX
438
    % : %.vbom
439
            vbomconv --ghdl_i $<
440
            vbomconv --ghdl_m $<
441
.EP
442
.
443
.\" --------------------------------------------------------
444
.SS Collecting Statistics
445
A simple way to determine the number of sources involved in a
446
synthesis or simulation model is to count with \fBwc\fP(1)
447
the lines of a \fB\-\-xst_prj\fP or \fB\-\-isim_prj\fP
448
output like in
449
.PP
450
.EX
451
    vbomconv --xst_prj     sys_w11a_n2.vbom | wc
452
    vbomconv --ghdl_a_cmd  tb_w11a_n2.vbom  | wc
453
    vbomconv --isim_prj    tb_w11a_n2.vbom  | wc
454
.EP
455
.
456
.\" ------------------------------------------------------------------
457
.SH "SEE ALSO"
458
.BR vbom (5),
459
.BR rm_dep (1),
460
.BR ghdl (1),
461
.BR xtwi (1),
462
.BR cpp (1),
463
.br
464
.BR xilinx_ghdl_simprim (1),
465
.BR xilinx_ghdl_unisim (1)
466
.
467
.\" ------------------------------------------------------------------
468
.SH AUTHOR
469
Walter F.J. Mueller 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.