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
|