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

Subversion Repositories w11

[/] [w11/] [tags/] [w11a_V0.7/] [doc/] [INSTALL.txt] - Blame information for rev 27

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 27 wfjm
# $Id: INSTALL.txt 604 2014-11-16 22:33:09Z mueller $
2 5 wfjm
 
3 11 wfjm
Guide to install and build w11a systems, test benches and support software
4 5 wfjm
 
5
  Table of content:
6
 
7 11 wfjm
  1.  Download
8 17 wfjm
  2.  System requirements
9
  3.  Setup system environment
10
       a. Setup environment variables
11
       b. Setup USB access
12
  4.  Compile UNISIM/SIMPRIM libraries for ghdl
13
  5.  Compile and install the support software
14 11 wfjm
       a. Compile sharable libraries
15
       b. Setup Tcl packages
16 17 wfjm
       c. Rebuild Cypress FX2 firmware
17
  6.  The build system
18 25 wfjm
  6    a. Setting up Xilinx environment with xtwi
19 17 wfjm
  7.  Building test benches
20 11 wfjm
       a. General instructions
21
       b. Available test benches
22 17 wfjm
  8.  Building systems
23 11 wfjm
       a. General instructions
24 25 wfjm
       b. Configuring FPGAs (via make flow)
25
       c. Configuring FPGAs (directly via config_wrapper)
26
       d. Available systems
27
       e. Available bitkits with bit and log files
28 19 wfjm
  9.  Generate Doxygen based source code view
29 5 wfjm
 
30
1. Download ---------------------------------------------------------------
31
 
32
  All instructions below assume that the project files reside in a
33
  working directory with the name represented as 
34
 
35 23 wfjm
  - to download latest snapshot of trunk
36 5 wfjm
 
37 23 wfjm
      cd 
38
      svn co http://opencores.org/ocsvn/w11/w11/trunk
39 5 wfjm
 
40 23 wfjm
  - to download tagged verions (from major releases)
41
    list available svn tags
42
 
43
      svn ls http://opencores.org/ocsvn/w11/w11/tags
44 5 wfjm
 
45 23 wfjm
    and download one of them
46 5 wfjm
 
47 23 wfjm
      cd 
48
      svn co http://opencores.org/ocsvn/w11/w11/tags/
49
 
50
  - to download specific svn revision (from minor releases)
51
    determine desired svn revsion from list given on
52
      http://opencores.org/project,w11,overview
53
 
54
    and download
55
 
56
      cd 
57
      svn co -r  http://opencores.org/ocsvn/w11/w11/trunk
58
 
59
 
60 17 wfjm
2. System requirements ----------------------------------------------------
61
 
62
  This project contains not only VHDL code but also support software. Therefore
63
  quite a few software packages are expected to be installed. The following
64
  list gives the Ubuntu/Debian package names, but mapping this to other
65
  distributions should be straight forward.
66 5 wfjm
 
67 17 wfjm
  - building the bit files for the FPGAs requires a Xilinx WebPACK installation
68
 
69
  - building and using the RLink backend software requires:
70
    - full C/C++ development chain (gcc,g++,cpp,make)
71
      -> package: build-essential
72
    - Boost C++ library (>= 1.40), with date-time, thread, and regex
73
      -> package: libboost-dev libboost-date-time-dev libboost-thread-dev
74
                  libboost-regex-dev
75
    - libusb 1.0 (>= 1.0.6)
76
      -> package: libusb-1.0-0-dev
77
    - Perl (>= 5.10)  (usually included in base installations)
78
    - Tcl  (>= 8.4), with tclreadline support
79
      -> package: tcl tcl-dev tcllib tclreadline
80
 
81
  - the download contains pre-build firmware images for the Cypress FX2
82
    USB Interface. Re-building them requires
83
    - Small Device C Compiler
84
      -> package: sdcc sdcc-ucsim
85
 
86
  - for FX2 firmware download and jtag programming over USB one needs
87
    - fxload
88
      -> package: fxload
89
    - urjtag
90
      -> package: urjtag   for Ubuntu 12.04
91
      -> see INSTALL_urjtag.txt for other distributions !!
92
 
93
  - for VHDL simulations one needs
94
    - ghdl
95
      -> see INSTALL_ghdl.txt for the unfortunately gory details
96
 
97 19 wfjm
  - for doxygen documentation an up-to-date installation of doxygen is
98
    required, version 1.8.3.1 or later
99
 
100 17 wfjm
  - optional but very useful is:
101
    - gtkwave
102
      -> package: gtkwave
103
 
104
3. Setup system environment -----------------------------------------------
105
 
106
3a. Setup environment variables --------------------------------------
107
 
108 11 wfjm
  The make flow for building test benches (ghdl and ISim based) and systems
109
  (Xilinx xst based) as well as the support software (mainly the rlink backend
110
  server) requires
111 5 wfjm
 
112 12 wfjm
    - the definition of the environment variables:
113 27 wfjm
      - RETROBASE:  must refer to the installation root directory
114
      - TCLINC:     pathname for includes of Tcl runtime library
115
      - TCLLIBNAME: name of Tcl runtime library
116 17 wfjm
      - RETRO_FX2_VID and RETRO_FX2_PID: default USB VID/PID, see below
117 11 wfjm
    - that the tools binary directory is in the path
118
    - that the tools library directory is in the library path
119 19 wfjm
    - optional environment variables:
120 27 wfjm
      - TCLLIB:     pathname for libraries of Tcl
121
      - BOOSTINC:   pathname for includes of boost library
122
      - BOOSTLIB:   pathname for libraries of boost library
123 19 wfjm
        {Note: Either both must be undefined, or both must be defined}
124 12 wfjm
 
125 5 wfjm
  For bash and alike use
126
 
127
    export RETROBASE=
128
    export PATH=$PATH:$RETROBASE/tools/bin
129 11 wfjm
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$RETROBASE/tools/lib
130 5 wfjm
 
131 23 wfjm
  To access the man pages update also the MANPATH
132
 
133
    export MANPATH=$MANPATH:$RETROBASE/doc/man
134
 
135 12 wfjm
  In most cases the boost library version coming with the distribution will
136 17 wfjm
  work, similar for Tcl, in those cases simply use
137 12 wfjm
 
138 17 wfjm
    export TCLINC=/usr/include/tcl8.5
139 27 wfjm
    export TCLLIBNAME=tcl8.5
140 12 wfjm
 
141 19 wfjm
  and don't setup BOOSTINC and BOOSTLIB.
142
 
143 5 wfjm
  After that building functional model based test benches will work. If you
144
  want to also build post-xst or post-par test benches read next section.
145
 
146 17 wfjm
  If the Cypress USB controller available on Digilent Nexys2, Nexys3 and
147
  Atlys boards is used the default USB VID and PID is defined by two
148
  environment variables. For internal lab use one can use
149 5 wfjm
 
150 17 wfjm
    export RETRO_FX2_VID=16c0
151
    export RETRO_FX2_PID=03ef
152
 
153
  !! Carefully read the disclaimer about usage of USB VID/PID numbers  !!
154
  !! in the file README_USB-VID-PID.txt. You'll be responsible for any !!
155
  !! misuse of the defaults provided with the project sources.         !!
156
  !! Usage of this VID/PID in any commercial product is forbidden.     !!
157
 
158
3b. Setup USB access -------------------------------------------------
159
 
160
  For using the Cypress FX2 USB interface on Digilent Nexys2, Nexys3 and
161
  Atlys boards 'udev' rules must be setup to allow user level access to
162
  these devices. A set of rules is provided under
163
 
164
    $RETROBASE/tools/fx2/sys
165
 
166
  Follow the 'README.txt' file in this directory.
167
 
168
  Notes:
169
  - the provided udev rules use the VID/PID for 'internal lab use' as
170
    described above. If other VID/PID used the file must be modified.
171
  - your user account must be in group 'plugdev' (should be the default).
172
 
173
4. Compile UNISIM/SIMPRIM libraries for ghdl ------------------------------
174
 
175 5 wfjm
  The build system for test benches also supports test benches run against
176
  the gate level models derived after the xst, map or par step. In this
177
  case ghdl has to link against a compiled UNISIM or SIMPRIM library.
178
 
179
  To make handling of the parallel installion of several WebPack versions
180
  easy the compiled libraries are stored in sub-directories under $XILINX:
181
 
182
     $XILINX/ghdl/unisim
183
     $XILINX/ghdl/simprim
184
 
185
  Two helper scripts will create these libraries:
186
 
187 25 wfjm
    
188 5 wfjm
 
189
    cd $RETROBASE
190 25 wfjm
    xtwi xilinx_ghdl_unisim
191
    xtwi xilinx_ghdl_simprim
192 5 wfjm
 
193
  If you have several WebPack versions installed, repeat for each version.
194
 
195 17 wfjm
5. Compile and install the support software -------------------------------
196 5 wfjm
 
197 17 wfjm
5a. Compile sharable libraries ---------------------------------------
198 5 wfjm
 
199 12 wfjm
  Required tools and libraries:
200
    g++    >= 4.3    (decltype support assumed in usage of boost::bind)
201
    boost  >= 1.35   (boost::thread api changed, new one is used)
202 17 wfjm
    linusb >= 1.0.5  (timerfd support)
203 12 wfjm
 
204
  Build was tested under:
205 17 wfjm
    ubuntu lucid (12.04 LTS):  gcc 4.6.3  boost 1.46.1  libusb 1.0.9
206
    debian squezze (6.0.6):    gcc 4.4.5  boost 1.46.1  libusb 1.0.8
207 12 wfjm
 
208 11 wfjm
  To build all sharable libraries
209
 
210
    cd $RETROBASE/tools/src
211
    make -j 4
212
 
213 25 wfjm
  Default is to compile with -O2 and without -g. These options can be
214
  overwritten with the CXXOPTFLAGS enviromnent variable (or make opion).
215
  To build with -O3 optimize use
216
    make -j 4 CXXOPTFLAGS=-O3
217
  To build a debug version with full symbol table use
218
    make -j 4 CXXOPTFLAGS=-g
219
 
220 11 wfjm
  To cleanup, e.g. before a re-build
221
 
222
    cd $RETROBASE/tools/src
223
    rm_dep
224
    make realclean
225
 
226 17 wfjm
5b. Setup Tcl environment --------------------------------------------
227 11 wfjm
 
228
  The Tcl files are organized in several packages. To create the Tcl
229
  package files (pkgIndex.tcl)
230
 
231
    cd $RETROBASE/tools/tcl
232
    setup_packages
233
 
234
  To use these packages it is convenient to make them available via the
235
  'auto_path' mechanism. To do that add in your .tclshrc or .wishrc
236
 
237
    lappend auto_path [file join $env(RETROBASE) tools tcl]
238
    lappend auto_path [file join $env(RETROBASE) tools lib]
239
 
240
  The w11 distribution contains two ready to use .tclshrc or .wishrc
241
  files which
242
    - include the auto_path statements above
243
    - activate tclreadline (and thus in tclshrc an event loop)
244
 
245
  To use them simply copy them into your home directory (or soft link them)
246
 
247
    cd $HOME
248
    ln -s $RETROBASE/tools/tcl/.tclshrc .
249
    ln -s $RETROBASE/tools/tcl/.wishrc  .
250
 
251 17 wfjm
5c. Rebuild Cypress FX2 firmware -------------------------------------
252 11 wfjm
 
253 17 wfjm
  The download includes pre-build firmware images for the Cypress FX2
254
  USB interface used on the Digilent Nexys2, Nexys3 and Atlys Boards.
255
  These firmware images are under
256 11 wfjm
 
257 17 wfjm
    $RETROBASE/tools/fx2/bin
258
 
259
  To re-build them, e.g. because a different USB VID/PID is to be used
260
 
261
    cd $RETROBASE/tools/fx2/src
262
    make clean
263
    make
264
    make install
265 27 wfjm
 
266
  Note: The default build assumes that sdcc with a version 3.x is installed.
267
        In case sdcc 2.x is installed use
268
           make SDCC29=1
269
        instead. See also tools/fx2/src/README.txt in the
270
 
271 17 wfjm
  Please read README_USB_VID-PID.txt carefully to understand the usage
272
  of USB VID and PID.
273
 
274
6. The build system -------------------------------------------------------
275
 
276 5 wfjm
  Simulation and synthesis tools usually need a list of the VHDL source
277
  files, often in proper compilation order (libraries before components).
278
  The different tools have different formats of these 'project files'.
279
 
280 25 wfjm
  The build system employed in this project is based on manifest files called
281
     'vbom' or "VHDL bill of material" files
282
  which list for each vhdl source file the libraries and sources for the
283
  instantiated components, the later via their vbom, and last but not least
284
  the name of the vhdl source file.
285
  All file name are relative to the current directory. A recursive traversal
286
  through all vbom's gives for each vhld module all sources needed to compile
287
  it. The vbomconv script in tools/bin does this, and generates depending on
288
  options
289
    - make dependency files
290
    - ISE xst project files
291
    - ISE ISim project files
292
    - ghdl commands for analysis, inspection and make step
293 5 wfjm
 
294
  The master make files contain pattern rules like
295
    %.ngc  : %.vbom           -- synthesize with xst
296
    %      : %.vbom           -- build functional model test bench
297
  which encapsulate all the vbomconf magic
298
 
299 25 wfjm
  A full w11a is build from about 100 source files, test benches from
300 5 wfjm
  even more. Using the vbom's a large number of designs can be easily
301
  maintained.
302
 
303 25 wfjm
6a. Setting up Xilinx environment with xtwi --------------------------
304
 
305
  The Xilinx ISE setup script redefines PATH and LD_LIBRARY_PATH. The ISE
306
  tools run fine in this environment, but other installed programs on the
307
  system  can (and actually do) fail.
308
 
309
  The build system uses a small wrapper script called xtwi to encapsulate
310
  the Xilinx environment. It expects that the environment variable XTWI_PATH
311
  is setup to the install path of the  ISE version to be used. Without the
312
  /ISE_DS/ which is added by the ISE installation procedure !
313
 
314
  Note: don't run the ISE setup scripts ..../settings(32|64).sh in your
315
    working shell. Setup only XTWI_PATH !
316
 
317 17 wfjm
7. Building test benches --------------------------------------------------
318 5 wfjm
 
319 17 wfjm
7a. General instructions ---------------------------------------------
320 11 wfjm
 
321 5 wfjm
  To compile a test bench named  all is needed is
322
 
323
    make 
324
 
325
  The make file will use .vbom, create all make dependency files,
326
  and generate the needed ghdl commands.
327
 
328
  In many cases the test benches can also be compiled against the gate
329
  level models derived after the xst, map or par step. To compile them
330
 
331
    make ghdl_tmp_clean
332
    make _ssim                  # for post-xst
333
    make _fsim                  # for post-map
334
    make _tsim                  # for post-par
335
 
336
  The 'make ghdl_tmp_clean' is needed to flush the ghdl work area from
337
  the compilation remains of earlier functional model compiles.
338
 
339 17 wfjm
7b. Available test benches -------------------------------------------
340 5 wfjm
 
341 11 wfjm
  See file w11a_tb_guide.txt
342
 
343 17 wfjm
8. Building systems -------------------------------------------------------
344 11 wfjm
 
345 17 wfjm
8a. General instructions ---------------------------------------------
346 11 wfjm
 
347 25 wfjm
  First ensure that XTWI_PATH is setup, see section 6a.
348
 
349 5 wfjm
  To generate a bit file for a system named  all is needed is
350
 
351
    make .bit
352
 
353
  The make file will use .vbom, create all make dependency files, build
354
  the ucf file with cpp, and run the synthesis flow (xst, ngdbuild, par, trce).
355
  The log files will be named
356
 
357
      _xst.log        # xst log file
358
      _tra.log        # translate (ngdbuild) log file (renamed %.bld)
359
      _map.log        # map log file                  (renamed %_map.mrp)
360
      _par.log        # par log file                  (renamed %.par)
361
      _pad.log        # pad file                      (renamed %_pad.txt)
362
      _twr.log        # trce log file                 (renamed %.twr)
363
 
364
  To load the bitfile with WebPack impact into the target board use
365
 
366 12 wfjm
    make .iconfig
367 5 wfjm
 
368 20 wfjm
  For boards with a Cypress FX2 USB controller load the bitfile directly with
369
 
370
    make .jconfig
371
 
372 25 wfjm
  If a svf file is required for configuring the FPGA a svf can be created
373
  from a bit file with
374
 
375
    make .svf
376
 
377 5 wfjm
  If only the xst or par output is wanted just use
378
 
379
    make .ngc
380
    make .ncd
381 11 wfjm
 
382 17 wfjm
  A simple 'message filter' system is also integrated into the make build flow.
383
  For many (though not all) systems a .mfset file has been provided which
384
  defines the xst,par and bitgen messages which are considered ok. To see
385
  only the remaining message extracted from the vaious .log files simply
386
  use the make target
387 11 wfjm
 
388 17 wfjm
    make .mfsum
389
 
390
  after a re-build.
391
 
392 25 wfjm
8b. Configuring FPGAs (via make flow) --------------------------------
393 17 wfjm
 
394
  The make flow supports also loading the bitstream into FPGAs, either
395
  via Xilinx Impact, or via the Cypress FX2 USB controller is available.
396
 
397
  For Xilinx Impact a Xilinx USB Cable II has to be properly setup, than
398
  simply use
399
 
400
    make .iconfig
401
 
402 20 wfjm
  For using the Cypress FX2 USB controller on Digilent Nexys2, Nexys3 and
403 17 wfjm
  Atlys boards just connect the USB cable and
404
 
405
    make .jconfig
406
 
407
  This will automatically check and optionaly re-load the FX2 firmware
408
  to a version matching the FPGA design, generate a .svf file from the
409
  .bit file, and configure the FPGA. In case the bit file is out-of-date
410
  the whole design will be re-implemented before.
411
 
412 25 wfjm
8c. Configuring FPGAs (directly via config_wrapper) ------------------
413 17 wfjm
 
414 25 wfjm
  The make flow described above uses two scripts
415
    config_wrapper              # must be used with xtwi !
416
    fx2load_wrapper
417
  which can be used directly for loading available bit or svf files into
418
  the FPGA. For detailed documentation see the respective man pages.
419
 
420
  Examples for the supported boards are given in section 8e.
421
 
422
8d. Available systems ------------------------------------------------
423
 
424 23 wfjm
  Currently ready to build versions exist for
425
    - Digilent S3BOARD (-1000 FPGA version)
426
    - Digilent Nexys2 board (-1200 FPGA version)
427
    - Digilent Nexys3 board
428 11 wfjm
 
429 23 wfjm
  To build the designs locally use
430
 
431 11 wfjm
  1. rlink tester
432 23 wfjm
     a. for Digilent S3BOARD
433 11 wfjm
 
434 23 wfjm
        cd $RETROBASE/rtl/sys_gen/tst_rlink/s3board
435
        make sys_tst_rlink_s3.bit
436
 
437
     b. for Digilent Nexys2 board
438
 
439 11 wfjm
        cd $RETROBASE/rtl/sys_gen/tst_rlink/nexys2
440
        make sys_tst_rlink_n2.bit
441
 
442 23 wfjm
     c. for Digilent Nexys3 board
443 15 wfjm
 
444
        cd $RETROBASE/rtl/sys_gen/tst_rlink/nexys3
445
        make sys_tst_rlink_n3.bit
446
 
447 17 wfjm
  2. rlink over USB tester
448
     a. for Digilent Nexys2 board
449
 
450
        cd $RETROBASE/rtl/sys_gen/tst_rlink_cuff/nexys2/ic
451
        make sys_tst_rlink_cuff_ic_n2.bit
452
 
453 21 wfjm
     b. for Digilent Nexys3 board
454
 
455
        cd $RETROBASE/rtl/sys_gen/tst_rlink_cuff/nexys3/ic
456
        make sys_tst_rlink_cuff_ic_n3.bit
457
 
458 17 wfjm
  3. w11a systems
459 11 wfjm
     a. for Digilent S3BOARD
460
 
461
        cd $RETROBASE/rtl/sys_gen/w11a/s3board
462
        make sys_w11a_s3.bit
463
 
464
     b. for Digilent Nexys2 board
465
 
466
        cd $RETROBASE/rtl/sys_gen/w11a/nexys2
467
        make sys_w11a_n2.bit
468 15 wfjm
 
469
     c. for Digilent Nexys3 board
470
 
471
        cd $RETROBASE/rtl/sys_gen/w11a/nexys3
472
        make sys_w11a_n3.bit
473 19 wfjm
 
474 25 wfjm
8e. Available bitkits with bit and log files -------------------------
475
 
476
  Tarballs with ready to use bit files and all logfiles from the tool
477
  chain can be downloaded from
478
    http://www.retro11.de/data/oc_w11/bitkits/
479
  This area is organized in folders for different releases. The tarball
480
  file names contain information about release, Xlinix tool, and design:
481
    __.tgz
482
 
483
  These designs can be loaded with config_wrapper into the FPGA. The
484
  procedures for the supported boards are given below.
485
 
486
  Notes:
487
    1. XTWI_PATH and RETROBASE environment variables must be defined.
488
    2. config_wrapper bit2svf is only needed once to create the svf files.
489
    3. fx2load_wrapper is needed once after each board power on.
490
 
491
  a. for Digilent S3BOARD (using ISE Impact)
492
 
493
       xtwi config_wrapper --board=s3board iconfig .bit
494
 
495
  b. for Digilent Nexys2 board (using Cypress FX2 USB controller)
496
 
497
       xtwi config_wrapper --board=nexys2 bit2svf .bit
498 27 wfjm
       fx2load_wrapper     --board=nexys2
499 25 wfjm
       xtwi config_wrapper --board=nexys2 jconfig .svf
500
 
501
  c. for Digilent Nexys3 board (using Cypress FX2 USB controller)
502
 
503
       xtwi config_wrapper --board=nexys3 bit2svf .bit
504 27 wfjm
       fx2load_wrapper     --board=nexys3
505 25 wfjm
       xtwi config_wrapper --board=nexys3 jconfig .svf
506
 
507 19 wfjm
9. Generate Doxygen based source code view --------------------------------
508
 
509
   Currently there is not much real documentation included in the source
510
   files. The doxygen generated html output is nevertheless very useful
511
   to browse the code. C++, Tcl and Vhdl source are covered by setup files
512
   contained in the project files.
513
 
514
   To generate the html files
515
 
516
     cd $RETROBASE/tools/dox
517
     export RETRODOXY 
518
     ./make_doxy
519
 
520
   If RETRODOXY is not defined '/tmp' is used. To view the docs use
521
 
522
     firefox $RETRODOXY/w11/cpp/html/index.html &
523
     firefox $RETRODOXY/w11/tcl/html/index.html &
524
     firefox $RETRODOXY/w11/vhd/html/index.html &

powered by: WebSVN 2.1.0

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