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

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [or1ksim/] [doc/] [or1ksim.info] - Blame information for rev 1751

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

Line No. Rev Author Line
1 1748 jeremybenn
This is ../../doc/or1ksim.info, produced by makeinfo version 4.11 from
2
../../doc/or1ksim.texi.
3
 
4
INFO-DIR-SECTION Embedded development
5
START-INFO-DIR-ENTRY
6
* Or1ksim: (or32-uclinux-or1ksim).      The OpenRISC 1000 Architectural
7
                                        Simulator
8
END-INFO-DIR-ENTRY
9
 
10
This file documents the OpenRISC Architectural Simulator, Or1ksim.
11
 
12
Copyright (C) 2008 Embecosm Limited.
13
 
14
     Permission is granted to copy, distribute and/or modify this
15
     document under the terms of the GNU Free Documentation License,
16
     Version 1.2 or any later version published by the Free Software
17
     Foundation; with no Invariant Sections, with no Front-Cover Texts,
18
     and with no Back-Cover Texts.  A copy of the license is included
19
     in the section entitled "GNU Free Documentation License".
20
 
21

22
File: or1ksim.info,  Node: Top,  Next: Installation,  Up: (dir)
23
 
24
Scope of this Document
25
**********************
26
 
27
This document is the user guide for Or1ksim, the OpenRISC 1000
28
Architectural Simulator.
29
 
30
* Menu:
31
 
32
* Installation::
33
* Usage::
34
* Configuration::
35
* Interactive Command Line::
36
* Verification API::
37
 
38
* Code Internals::
39
 
40
* GNU Free Documentation License::  The license for this documentation
41
* Index::
42
 
43

44
File: or1ksim.info,  Node: Installation,  Next: Usage,  Prev: Top,  Up: Top
45
 
46
1 Installation
47
**************
48
 
49 1751 jeremybenn
Installation follows standard GNU protocols.
50 1748 jeremybenn
 
51 1751 jeremybenn
* Menu:
52
 
53
* Preparation::
54
* Configuring the Build::
55
* Build and Install::
56
 
57

58
File: or1ksim.info,  Node: Preparation,  Next: Configuring the Build,  Up: Installation
59
 
60
1.1 Preparation
61
===============
62
 
63
Unpack the software and create a _separate_ directory in which to build
64
it:
65
 
66
     tar jxf or1ksim-0.3.0rc2.tar.bz2
67 1748 jeremybenn
     mkdir builddir_or1ksim
68
     cd builddir_or1ksim
69
 
70 1751 jeremybenn

71
File: or1ksim.info,  Node: Configuring the Build,  Next: Build and Install,  Prev: Preparation,  Up: Installation
72 1748 jeremybenn
 
73 1751 jeremybenn
1.2 Configuring the Build
74
=========================
75 1748 jeremybenn
 
76 1751 jeremybenn
Configure the software using the `configure' script in the main
77
directory.
78 1748 jeremybenn
 
79 1751 jeremybenn
The most significant argument is `--target', which should specify the
80
OpenRISC 1000 32-bit architecture. If this argument is omitted, it will
81
default to OpenRISC 1000 32-bit with a warning
82
 
83
     ../or1ksim-0.3.0rc2/configure --target=or32-uclinux ...
84
 
85
There are several other options available, many of which are standard
86
to GNU `configure' scripts. Use `configure --help' to see all the
87
options. The most useful is `--prefix' to specify a directory for
88
installation of the tools.
89
 
90
A number of Or1ksim features in the simulator do require enabling at
91 1748 jeremybenn
configuration. These include
92
 
93 1751 jeremybenn
`--enable-profiling'
94
`--disable-profiling'
95
     If enabled, Or1ksim is compiled for profiling with `gprof'. This
96
     is disabled by default. Only really of value for developers of
97
     Or1ksim.
98
 
99
`--enable-execution=simple'
100
`--enable-execution=complex'
101
`--enable-execution=dynamic'
102
     Or1ksim has developed to improve functionality and performance.
103
     This feature allows three versions of Or1ksim to be built
104
 
105
    `--enable-execution=simple'
106
          Build the original simple interpreting simulator
107
 
108
    `--enable-execution=complex'
109
          Build a more complex interpreting simulator. Experiments
110
          suggest this is 50% faster than the simple simulator. This is
111
          the default.
112
 
113
    `--enable-execution=dynamic'
114
          Build a dynamically compiling simulator. This is the way many
115
          modern ISS are built. This represents a work in progress.
116
          Currently Or1ksim will compile, but segfaults if configured
117
          with this option.
118
 
119
 
120
     The default is `--enable-execution=complex'.
121
 
122 1748 jeremybenn
`--enable-ethphy'
123 1751 jeremybenn
`--disable-ethphy'
124
     If enabled, this option allows the Ethernet to be simulated by
125
     connecting via a socket (the alternative reads and writes, from
126
     and to files). This must then be configured using the relevant
127
     fields in the `ethernet' section of the configuration file. *Note
128
     Ethernet Configuration: Ethernet Configuration.
129 1748 jeremybenn
 
130 1751 jeremybenn
     The default is for this to be disabled.
131 1748 jeremybenn
 
132 1751 jeremybenn
`--enable-range-stats'
133
`--disable-range-stats'
134
     If enabled, this option allows statistics to be collected to
135
     analyse register access over time. The default is for this to be
136
     disabled.
137
 
138
`--enable-ov-flag'
139
`--disable-ov-flag'
140
     If enabled, this option causes instructions to set the overflow
141
     flag. The instructions affected by this are `l.add', `l.addc',
142
     `l.addi', `l.and', `l.andi', `l.div', `l.divu', `l.mul', `l.muli',
143
     `l.or', `l.ori', `l.sll', `l.slli', `l.srl', `l.srli', `l.sra',
144
     `l.srai', `l.sub', `l.xor' and `l.xori'.
145
 
146
     The default is for this to be disabled.
147
 
148
          Caution: This appears a very dangerous option, to the extent
149
          of arguably being a bug. Whether or not flags are set is part
150
          of the OpenRISC 1000 architectural specification. Within the
151
          above list, the arithmetic instructions (`l.add', `l.addc',
152
          `l.addi', `l.div', `l.divu', `l.mul', `l.muli' and `l.sub'),
153
          together with `l.addic' which is missed out, set the overflow
154
          flag. All the others (`l.and', `l.andi', `l.or', `l.ori',
155
          `l.sll', `l.slli', `l.srl', `l.srli', `l.sra', `l.srai',
156
          `l.xor' and `l.xori') do not.
157
 
158
          Thus it is impossible to get correct behavior whichever way
159
          this option is set.
160
 
161
`--enable-arith-flag'
162
`--disable-arith-flag'
163
     If enabled, this option causes instructions to set the flag (`F'
164
     bit) in the supervision register. The instructions affected by
165
     this are `l.add', `l.addc', `l.addi', `l.and' and `l.andi'.
166
 
167
     The default is for this to be disabled.
168
 
169
          Caution: As with `--enable-ov-flag', this appears another
170
          very dangerous option, to the extent of arguably being a bug.
171
          It also appears to be only partially implemented--why only
172
          the instructions early in the alphabet?
173
 
174
          Whether or not flags are set is part of the OpenRISC 1000
175
          architectural specification. The only flags which should set
176
          this are the "set flag" instructions: `l.sfeq', `l.sfeqi',
177
          `l.sfges', `l.sfgesi', `l.sfgeu', `l.sfgeui', `l.sfgts',
178
          `l.sfgtsi', `l.sfgtu', `l.sfgtui', `l.sfles', `l.sflesi',
179
          `l.sfleu', `l.sfleui', `l.sflts', `l.sfltsi', `l.sfltu',
180
          `l.sfltui', `l.sfne' and `l.sfnei'.
181
 
182
          The flags are correctly set (irrespective of
183
          `--enable-arith_flag').
184
 
185
          Correct behavior is thus achieved if this flag is not set.
186
          `--enable-arith-flag' should never be used.
187
 
188
 
189
`--enable-debug'
190
`--disable-debug'
191
     This is a feature of the Argtable2 package used to process
192
     arguments. If enabled, some debugging features are turned on in
193
     Argtable2. It is provided for completeness, but there is no reason
194
     why this feature should ever be needed by any Or1ksim user.
195
 
196
 
197

198
File: or1ksim.info,  Node: Build and Install,  Prev: Configuring the Build,  Up: Installation
199
 
200
1.3 Building and Installing
201
===========================
202
 
203 1748 jeremybenn
The tool is then built with:
204
 
205
     make all
206
     make install
207
 
208
This will install the three variations of the Or1ksim tool,
209
`or32-uclinux-sim', `or32-uclinux-psim' and `or32-uclinux-mpsim', the
210
Or1ksim library, `libsim', the header file, `or1ksim.h' and this
211
documentation in `info' format.
212
 
213
     Note: Testing Or1ksim with `make check' is not yet supported.
214
 
215
The documentation may be created and installed in alternative formats
216
(PDF, Postscript, DVI, HTML) with for example:
217
 
218
     make pdf
219
     make install-pdf
220
 
221

222
File: or1ksim.info,  Node: Usage,  Next: Configuration,  Prev: Installation,  Up: Top
223
 
224
2 Usage
225
*******
226
 
227
* Menu:
228
 
229
* Standalone Simulator::
230
* Profiling Utility::
231
* Memory Profiling Utility::
232
* Simulator Library::
233
 
234

235
File: or1ksim.info,  Node: Standalone Simulator,  Next: Profiling Utility,  Up: Usage
236
 
237
2.1 Standalone Simulator
238
========================
239
 
240
The general form the standalone command is:
241
 
242
     or32-uclinux-sim [-vhi] [-f FILE] [--nosrv] [--srv=[N]] [-d STR]
243
                      [--enable-profile] [--enable-mprofile] [FILE]
244
 
245
Many of the options have both a short and a long form. For example `-h'
246
or `--help'.
247
 
248
`-v'
249
`--version'
250
     Print out the version and copyright notice for Or1ksim and exit.
251
 
252
`-h'
253
`--help'
254
     Print out help about the command line options and what they mean.
255
 
256
`-f FILE'
257
`--file FILE'
258
     Read configuration commands from the specified file, looking first
259
     in the current directory, and otherwise in the `$HOME/.or1k'
260
     directory. If this argument is not specified, the file `sim.cfg'
261
     in those two locations is used. Failure to find the file is a fatal
262
     error. *Note Configuration: Configuration, for detailed information
263
     on configuring Or1ksim.
264
 
265
`--nosrv'
266
     Do not start up the debug server. This overrides any setting
267
     specified in the configuration file. This option may not be
268
     specified with `--srv'. If it is, a rude message is printed and the
269
     `--nosrv' option is ignored.
270
 
271
`--srv'
272
 
273
`--srv=N'
274
     Start up the debug server. If the parameter, N, is specified, use
275
     that as the TCP/IP port for the server, otherwise a random value
276
     from the private port range (41920-65535) will be used. This option
277
     may not be specified with `--nosrv'. If it is, a rude message is
278
     printed and the `--nosrv' option is ignored.
279
 
280
`-d=CONFIG_STRING'
281
`--debug-config=CONFIG_STRING'
282
     Enable selected debug messages in Or1ksim. This parameter is for
283
     use by developers only, and is not covered further here. See the
284
     source code for more details.
285
 
286
`-i'
287
`--interactive'
288
     After starting, drop into the Or1ksim interactive command shell.
289
 
290
`--enable-profile'
291
     Enable instruction profiling.
292
 
293
`--enable-mprofile'
294
     Enable memory profiling.
295
 
296
 
297

298
File: or1ksim.info,  Node: Profiling Utility,  Next: Memory Profiling Utility,  Prev: Standalone Simulator,  Up: Usage
299
 
300
2.2 Profiling Utility
301
=====================
302
 
303
This utility analyses instruction profile data generated by Or1ksim. It
304
may be invoked as a standalone command, or from the Or1ksim CLI. The
305
general form the standalone command is:
306
 
307
     or32-uclinux-profile [-vhcq] [-g=FILE]
308
 
309
Many of the options have both a short and a long form. For example `-h'
310
or `--help'.
311
 
312
`-v'
313
`--version'
314
     Print out the version and copyright notice for the Or1ksim
315
     profiling utility and exit.
316
 
317
`-h'
318
`--help'
319
     Print out help about the command line options and what they mean.
320
 
321
`-c'
322
`--cumulative'
323
     Show cumulative sum of cycles in functions
324
 
325
`-q'
326
`--quiet'
327
     Suppress messages
328
 
329
`-g=FILE'
330
`--generate=FILE'
331
     The data file to analyse. If omitted, the default file,
332
     `sim.profile' is used.
333
 
334
 
335

336
File: or1ksim.info,  Node: Memory Profiling Utility,  Next: Simulator Library,  Prev: Profiling Utility,  Up: Usage
337
 
338
2.3 Memory Profiling Utility
339
============================
340
 
341
This utility analyses memory profile data generated by Or1ksim. It may
342
be invoked as a standalone command, or from the Or1ksim CLI. The
343
general form the standalone command is:
344
 
345
     or32-uclinux-mprofile  [-vh] [-m=M] [-g=N] [-f=FILE] FROM TO
346
 
347
Many of the options have both a short and a long form. For example `-h'
348
or `--help'.
349
 
350
`-v'
351
`--version'
352
     Print out the version and copyright notice for the Or1ksim memory
353
     profiling utility and exit.
354
 
355
`-h'
356
`--help'
357
     Print out help about the command line options and what they mean.
358
 
359
`-m=M'
360
`--mode=M'
361
     Specify the mode out output. Permitted options are
362
 
363
    `detailed'
364
    `d'
365
          Detailed output. This is the default if no mode is specified.
366
 
367
    `pretty'
368
    `p'
369
          Pretty printed output.
370
 
371
    `access'
372
    `a'
373
          Memory accesses only.
374
 
375
    `width'
376
    `w'
377
          Access width only.
378
 
379
 
380
`-g=N'
381
`--group=N'
382
     Group 2^n bits of successive addresses together.
383
 
384
`-f=FILE'
385
`--filename=FILE'
386
     The data file to analyse. If not specified, the default,
387
     `sim.profile' is used.
388
 
389
`FROM'
390
`TO'
391
     FROM and TO are respectively the start and end address of the
392
     region of memory to be analysed.
393
 
394
 
395

396
File: or1ksim.info,  Node: Simulator Library,  Prev: Memory Profiling Utility,  Up: Usage
397
 
398
2.4 Simulator Library
399
=====================
400
 
401
Or1ksim may be used as a static of dynamic library, `libsim.a' or
402
`libsim.so'. When compiling with the static library, the flag, `-lsim'
403
should be added to the link command.
404
 
405
The header file `or1ksim.h' contains appropriate declarations of the
406
functions exported by the Or1ksim library. These are:
407
 
408
 -- `or1ksim.h': int or1ksim_init (const char *CONFIG_FILE, const char
409
          *IMAGE_FILE, void *CLASS_PTR, unsigned long int (*UPR)(void
410
          *CLASS_PTR, unsigned long int ADDR, unsigned long int MASK),
411
          void (*UPW)(void *CLASS_PTR, unsigned long int ADDR, unsigned
412
          long int MASK, unsigned long int WDATA))
413
     The initialization function is supplied with the name of a
414
     configuration file, CONFIG_FILE, an executable image, IMAGE_FILE,
415
     a pointer to the calling class, CLASS_PTR (since the library may
416
     be used from C++) and two up-call functions, one for reads, UPR,
417
     and one for writes, UPW.
418
 
419
     *Note Configuration: Configuration, for detailed information on
420
     configuring Or1ksim and the format of the configuration file.
421
 
422
     UPW is called for any write to an address external to the model
423
     (determined by a `generic' section in the configuration file). UPR
424
     is called for any reads to an external address. The CLASS_PTR is
425
     passed back with these upcalls, allowing the function to associate
426
     the call with the class which originally initialized the library.
427
 
428
 
429
 -- `or1ksim.h': int or1ksim_run (double DURATION)
430
     Run the simulator for the simulated duration specified (in
431
     seconds).
432
 
433
 
434
 -- `or1ksim.h': void or1ksim_reset_duration (double DURATION)
435
     Change the duration of a run specified in an earlier call to
436
     `or1ksim_run'. Typically this is called from an upcall, which
437
     realizes it needs to change the duration of the run specified in
438
     the call to `or1ksim_run' that has been interrupted by the upcall.
439
 
440
     The time specified is the amount of time that the run must continue
441
     for (i.e the duration from _now_, not the duration from the
442
     original call to `or1ksim_run').
443
 
444
 
445
 -- `or1ksim.h': void or1ksim_set_time_point ()
446
     Set a timing point. For use with `or1ksim_get_time_period'.
447
 
448
 
449
 -- `or1ksim.h': double or1ksim_get_time_period ()
450
     Return the simulated time (in seconds) that has elapsed since the
451
     last call to `or1ksim_set_time_point'.
452
 
453
 
454
 -- `or1ksim.h': int or1ksim_is_le ()
455
     Return 1 (logical true) if the Or1ksim simulation is
456
     little-endian, 0 otherwise.
457
 
458
 
459
 -- `or1ksim.h': unsigned long int or1ksim_clock_rate ()
460
     Return the Or1ksim clock rate (in Hz). This is the value specified
461
     in the configuration file.
462
 
463
 
464
 -- `or1ksim.h': void or1ksim_interrupt (int I)
465
     Generate an interrupt on interrupt line I.
466
 
467
 
468
The libraries will be installed in the `lib' sub-directory of the main
469
installation directory (as specified with the `--prefix' option to the
470
`configure' script).
471
 
472
For example if the main installation directory is `/opt/or1ksim', the
473
library will be found in the `/opt/or1ksim/lib' directory. It is
474
available as both a static library (`libsim.a') and a shared object
475
(`libsim.so').
476
 
477
To link against the library add the `-lsim' flag when linking and do
478
one of the following:
479
 
480
   * Add the library directory to the `LD_LIBRARY_PATH' environment
481
     variable during execution. For example:
482
 
483
          export LD_LIBRARY_PATH=/opt/or1ksim/lib:$LD_LIBRARY_PATH
484
 
485
   * Add the library directory to the `LD_RUN_PATH' environment
486
     variable during linking. For example:
487
 
488
          export LD_RUN_PATH=/opt/or1ksim/lib:$LD_RUN_PATH
489
 
490
   * Use the linker `--rpath' option and specify the library directory
491
     when linking your program. For example
492
 
493
          gcc ... -Wl,--rpath -Wl,/opt/or1ksim/lib ...
494
 
495
   * Add the library directory to `/etc/ld.so.conf'
496
 
497
 
498

499
File: or1ksim.info,  Node: Configuration,  Next: Interactive Command Line,  Prev: Usage,  Up: Top
500
 
501
3 Configuration
502
***************
503
 
504
Or1ksim is configured through a configuration file. This is specified
505
through the `-f' parameter to the Or1ksim command, or passed as a
506
string when initializing the Or1ksim library. If no file is specified,
507
the default `sim.cfg' is used. The file is looked for first in the
508
current directory, then in the `$HOME/.or1k' directory of the user.
509
 
510
* Menu:
511
 
512
* Configuration File Format::
513
* Simulator Configuration::
514
* Core OpenRISC Configuration::
515
* Peripheral Configuration::
516
 
517

518
File: or1ksim.info,  Node: Configuration File Format,  Next: Simulator Configuration,  Up: Configuration
519
 
520
3.1 Configuration File Format
521
=============================
522
 
523
The configuration file is a plain text file.
524
 
525
* Menu:
526
 
527
* Configuration File Preprocessing::
528
* Configuration File Syntax::
529
 
530

531
File: or1ksim.info,  Node: Configuration File Preprocessing,  Next: Configuration File Syntax,  Up: Configuration File Format
532
 
533
3.1.1 Configuration File Preprocessing
534
--------------------------------------
535
 
536
The configuration file may include C style comments (i.e. delimited by
537
`/*' and `*/').
538
 
539
Configure files may be included, using
540
 
541
     include FILENAME_TO_INCLUDE
542
 
543

544
File: or1ksim.info,  Node: Configuration File Syntax,  Prev: Configuration File Preprocessing,  Up: Configuration File Format
545
 
546
3.1.2 Configuration File Syntax
547
-------------------------------
548
 
549
The configuration file is divided into a series of sections, with the
550
general form:
551
 
552
     section SECTION_NAME
553
 
554
       ...
555
 
556
     end
557
 
558
Sections may also have sub-sections within them (currently only the
559
ATA/ATAPI disc interface uses this).
560
 
561
Within a section, or sub-section are a series of parameter assignments,
562
one per line, withe the general form
563
 
564
       PARAMETER = VALUE
565
 
566
Depending on the parameter, the value may be a named value (an
567
enumeration), an integer (specified in any format acceptable in C) or a
568
string in doubple quotes. For flag parameters, the value 1 is used to
569
mean "true" or "on" and the value "0" to mean "false" or "off". An
570
example from a memory section shows each of these
571
 
572
     section memory
573
       type    = random
574
       pattern = 0x00
575
       name    = "FLASH"
576
       ...
577
     end
578
 
579
Many parameters are optional and take reasonable default values if not
580
specified. However there are some parameters (for example the `ce'
581
parameter in `section memory') _must_ be specified.
582
 
583
Subsections are introduced by a keyword, with a parameter value (no `='
584
sign), and end with the same keyword prefixed by `end'. Thus the
585
ATA/ATAPI inteface (`section ata') has a `device' subsection, thus:
586
 
587
     section ata
588
       ...
589
       device 0
590
         type    = 1
591
         file = "FILENAME"
592
         ...
593
       enddevice
594
       ...
595
     end
596
 
597
Some sections (for example `section sim') should appear only once.
598
Others (for example `section memory' may appear multiple times.
599
 
600
Sections may be omitted, _unless they contain parameters which are
601
non-optional_. If the section describes a part of the simulator which
602
is optional (for example whether it has a UART), then that
603
functionality will not be provided. If the section describes a part of
604
the simulator which is not optional (for example the CPU), then all the
605
parameters of that section will take their default values.
606
 
607
All optional parts of the functionality are always described by
608
sections including a `enabled' parameter, which can be set to 0 to
609
ensure that functionality is explicitly omitted.
610
 
611
Even if a section is disabled, all its parameters will be read and
612
stored. This is helpful if the section is subsequently enabled from the
613
Or1ksim command line (*note Interactive Command Line: Interactive
614
Command Line.).
615
 
616
     Tip: It generally clearer to have sections describing _all_
617
     components, with omitted functionality explicitly indicated by
618
     setting the `enabled' parameter to 0
619
 
620
The following sections describe the various configuration sections and
621
the parameters which may be set in each.
622
 
623

624
File: or1ksim.info,  Node: Simulator Configuration,  Next: Core OpenRISC Configuration,  Prev: Configuration File Format,  Up: Configuration
625
 
626
3.2 Simulator Configuration
627
===========================
628
 
629
* Menu:
630
 
631
* Simulator Behavior::
632
* Verification API Configuration::
633
* CUC Configuration::
634
 
635

636
File: or1ksim.info,  Node: Simulator Behavior,  Next: Verification API Configuration,  Up: Simulator Configuration
637
 
638
3.2.1 Simulator Behavior
639
------------------------
640
 
641
Simulator behavior is described in `section sim'. This section should
642
appear only once. The following parameters may be specified.
643
 
644
`verbose = 0|1'
645
     If 1 (true), print extra messages. Default 0.
646
 
647
`debug = 0-9'
648
 
649
     higher the value the greater the number of messages. Default 0.
650
     Negative values will be treated as 0 (with a warning). Values that
651
     are too large will be treated as 9 (with a warning).
652
 
653
`profile = 0|1'
654
     If 1 (true) generate a profiling file using the file specified in
655
     the `prof_file' parameter or otherwise `sim.profile'. Default 0.
656
 
657
`prof_file = ``FILENAME'''
658
     Specifies the file to be used with the `profile' parameter. Default
659
     `sim.profile'. For backwards compatibility, the alternative name
660
     `prof_fn' is supported for this parameter, but deprecated.
661
 
662
`mprofile = 0|1'
663
     If 1 (true) generate a memory profiling file using the file
664
     specified in the `mprof_file' parameter or otherwise
665
     `sim.mprofile'. Default 0.
666
 
667
`mprof_fn = ``FILENAME'''
668
     Specifies the file to be used with the `mprofile' parameter.
669
     Default `sim.mprofile'. For backwards compatibility, the
670
     alternative name `mprof_fn' is supported for this parameter, but
671
     deprecated.
672
 
673
`history = 0|1'
674
     If 1 (true) track execution flow. Default 0.
675
 
676
          Note: Setting this parameter seriously degrades performance.
677
 
678
          Note: If this execution flow tracking is enabled, then
679
          `dependstats' must be enabled in the CPU configuration
680
          section (*note CPU Configuration: CPU Configuration.).
681
 
682
`exe_log = 0|1'
683
     If 1 (true), generate an execution log. Log is written to the file
684
     specified in parameter `exe_log_file'. Default 0.
685
 
686
          Note: Setting this parameter seriously degrades performance.
687
 
688
`exe_log_type = default|hardware|simple|software'
689
     Type of execution log to produce.
690
 
691
    `default'
692
          Produce default output for the execution log. In the current
693
          implementation this is the equivalent of `hardware'.
694
 
695
    `hardware'
696
          After each instruction execution, log the number of
697
          instructions executed so far, the next instruction to execute
698
          (in hex), the general purpose registers (GPRs), status
699
          register, exception program counter, exception, effective
700
          address register and exception status register.
701
 
702
    `simple'
703
          After each instruction execution, log the number of
704
          instructions executed so far and the next instruction to
705
          execute, symbolically disassembled.
706
 
707
    `software'
708
          After each instruction execution, log the number of
709
          instructions executed so far and the next instruction to
710
          execute, symbolically disassembled. Also show the value of
711
          each operand to the instruction.
712
 
713
 
714
     Default value `hardware'. Any unrecognized keyword (case
715
     insensitive) will be treated as the default with a warning.
716
 
717
          Note: Execution logs can be _very_ big.
718
 
719
`exe_log_start = VALUE'
720
     Address of the first instruction to start logging. Default 0.
721
 
722
`exe_log_end = VALUE'
723
     Address of the last instruction to log. Default no limit (i.e once
724
     started logging will continue until the simulator exits).
725
 
726
`exe_log_marker = VALUE'
727
     Specifies the number of instructions between printing horizontal
728
     markers. Default is to produce no markers.
729
 
730
`exe_log_file = FILENAME'
731
     Filename for the execution log filename if `exe_log' is enabled.
732
     Default `executed.log'. For backwards compatibility, the
733
     alternative name `exe_log_fn' is supported for this parameter, but
734
     deprecated.
735
 
736
`clkcycle = VALUE[ps|ns|us|ms]'
737
     Specify the time taken by one clock cycle. If no units are
738
     specified, `ps' is assumed. Default 4000ps (250MHz).
739
 
740
 
741

742
File: or1ksim.info,  Node: Verification API Configuration,  Next: CUC Configuration,  Prev: Simulator Behavior,  Up: Simulator Configuration
743
 
744
3.2.2 Verification API (VAPI) Configuration
745
-------------------------------------------
746
 
747
The Verification API (VAPI) provides a TCP/IP interface to allow
748
components of the simulation to be controlled externally. *Note
749
Verification API: Verification API, for more details.
750
 
751
Verification API configuration is described in `section vapi'. This
752
section may appear at most once. The following parameters may be
753
specified.
754
 
755
`enabled = 0|1'
756
     If 1 (true), verification API is enabled and its server started.
757
     If 0 (the default), it is disabled.
758
 
759
`server_port = VALUE'
760
     When VAPI is enabled, communication will be via TCP/IP on the port
761
     specified by VALUE. The value must lie in the range 1 to 65535.
762
     The default value is 50000.
763
 
764
          Tip: There is no registered port for Or1ksim VAPI. Good
765
          practice suggests users should adopt port values in the
766
          "Dynamic" or "Private" port range, i.e. 49152-65535.
767
 
768
`log_enabled = 0|1'
769
     If 1 (true), all VAPI requests and sent commands will be logged.
770
     If 0 (the default), logging is diabled. Logs are written to the
771
     file specified by the `vapi_log_file' field (see below).
772
 
773
          Caution: This can generate a substantial amount of file I/O
774
          and seriously degrade simulator performance.
775
 
776
`hide_device_id = 0|1'
777
     If 1 (true) don't log the device ID. If 0 (the default), log the
778
     device ID. This feature (when set to 1) is provided for backwards
779
     compatibility with an old version of VAPI.
780
 
781
`vapi_log_file = "FILENAME"'
782
     Use `filename' as the file for logged data is logging is enabled
783
     (see `log_enabled' above). The default is `"vapi.log"'. For
784
     backwards compatibility, the alternative name `vapi_log_fn' is
785
     supported for this parameter, but deprecated.
786
 
787
 
788

789
File: or1ksim.info,  Node: CUC Configuration,  Prev: Verification API Configuration,  Up: Simulator Configuration
790
 
791
3.2.3 Custom Unit Compiler (CUC) Configuration
792
----------------------------------------------
793
 
794
The Custom Unit Compiler (CUC) was a project by Marko Mlinar to generate
795
Verilog from ANSI C functions. The project seems to not have progressed
796
beyond the initial prototype phase. The configuration parameters are
797
described here for the record.
798
 
799
CUC configuration is described in `section cuc'. This section may
800
appear at most once. The following parameters may be specified.
801
 
802
`memory_order = none|weak|strong|exact'
803
     This parameter specifies the memory ordering required:
804
 
805
    `memory_order=none'
806
          Different memory ordering, even if there are dependencies.
807
          Bursts can be made, width can change.
808
 
809
          Different memory ordering, even if there are dependencies. If
810
          dependencies cannot occur, then bursts can be made, width can
811
          change.
812
 
813
          Same memory ordering. Bursts can be made, width can change.
814
 
815
          Exactly the same memory ordering and widths.
816
 
817
 
818
     The default value is `memory_order=exact'. Invalid memory
819
     orderings are ignored with a warning.
820
 
821
`calling_convention = 0|1'
822
     If 1 (true), programs follow OpenRISC calling conventions. If 0
823
     (the default), they may use other convenitions.
824
 
825
`enable_bursts = 0 | 1'
826
     If 1 (true), bursts are detected. If 0 (the default), bursts are
827
     not detected.
828
 
829
`no_multicycle = 0 | 1'
830
     If 1 (true), no multicycle logic paths will be generated. If 0 (the
831
     default), multicycle logic paths will be generated.
832
 
833
`timings_file = "FILENAME"'
834
     FILENAME specifies a file containing timing information. The
835
     default value is `"virtex.tim"'. For backwards compatibility, the
836
     alternative name `timings_fn' is supported for this parameter, but
837
     deprecated.
838
 
839
 
840

841
File: or1ksim.info,  Node: Core OpenRISC Configuration,  Next: Peripheral Configuration,  Prev: Simulator Configuration,  Up: Configuration
842
 
843
3.3 Configuring the OpenRISC Architectural Components
844
=====================================================
845
 
846
* Menu:
847
 
848
* CPU Configuration::
849
* Memory Configuration::
850
* Memory Management Configuration::
851
* Cache Configuration::
852
* Interrupt Configuration::
853
* Power Management Configuration::
854
* Branch Prediction Configuration::
855
* Debug Interface Configuration::
856
 
857

858
File: or1ksim.info,  Node: CPU Configuration,  Next: Memory Configuration,  Up: Core OpenRISC Configuration
859
 
860
3.3.1 CPU Configuration
861
-----------------------
862
 
863
CPU configuration is described in `section cpu'. This section should
864
appear only once. At present Or1ksim does not model multi-CPU systems.
865
The following parameters may be specified.
866
 
867
`ver = VALUE'
868
 
869
`cfg = VALUE'
870
 
871
`rev = VALUE'
872
     The values are used to form the corresponding fields in the `VR'
873
     Special Purpose Register (SPR 0). Default values 0. A warning is
874
     given and the value truncated if it is too large (8 bits for `ver'
875
     and `cfg', 6 bits for `rev').
876
 
877
`upr = VALUE'
878
     Used as the value of the Unit Present Register (UPR) Special
879
     Purpose Register (SPR 1) to VALUE. Default value is 0x0000075f,
880
     i.e.
881
        * UPR present (0x00000001)
882
 
883
        * Data cache present (0x00000002)
884
 
885
        * Instruction cache present (0x00000004)
886
 
887
        * Data MMY present (0x00000008)
888
 
889
        * Instruction MMU present (0x00000010)
890
 
891
        * Debug unit present (0x00000040)
892
 
893
        * Power management unit present (0x00000100)
894
 
895
        * Programmable interrupt controller present (0x00000200)
896
 
897
        * Tick timer present (0x00000400)
898
 
899
     However, with the exection of the UPR present (0x00000001) and tick
900
     timer present, the various fields will be modified with the values
901
     specified in their corresponding configuration sections.
902
 
903
`cfgr = VALUE'
904
     Sets the CPU configuration register (Special Purpose Register 2) to
905
     VALUE. Default value is 0x00000020, i.e. support for the ORBIS32
906
     instruction set. Attempts to set any other value are accepted, but
907
     issue a warning that there is no support for the instruction set.
908
 
909
`sr = VALUE'
910
     Sets the supervision register Special Purpose Register (SPR 0x11)
911
     to VALUE. Default value is 0x00008001, i.e. start in supervision
912
     mode (0x00000001) and set the "Fixed One" bit (0x00008000).
913
 
914
`superscalar = 0|1'
915
     If 1, the processor operates in superscalar mode. Default value is
916
     0.
917
 
918
     In the current simulator, the only functional effect of superscalar
919
     mode is to affect the calculation of the number of cycles taken to
920
     execute an instruction.
921
 
922
          Caution: The code for this does not appear to be complete or
923
          well tested, so users are advised not to use this option.
924
 
925
`hazards = 0|1'
926
     If 1, data hazards are tracked in a superscalar CPU. Default value
927
     is 0.
928
 
929
     In the current simulator, the only functional effect is to cause
930
     logging of hazard waiting information if the CPU is superscalar.
931
     However nowhere in the simulator is this data actually computed,
932
     so the net result is probably to have no effect.
933
 
934
     if harzards are tracked, current hazards can be displayed using the
935
     simulator's `r' command.
936
 
937
          Caution: The code for this does not appear to be complete or
938
          well tested, so users are advised not to use this option.
939
 
940
`dependstats = 0|1'
941
     If 1, inter-instruction dependencies are calculated. Default value
942
     0.
943
 
944
     If these values are calculated, the depencies can be displayed
945
     using the simulator's `stat' command.
946
 
947
          Note: This field must be enabled, if execution execution flow
948
          tracking (field `history') has been requested in the simulator
949
          configuration section (*note Simulator Behavior: Simulator
950
          Behavior.).
951
 
952
`sbuf_len = VALUE'
953
     The length of the store buffer is set to VALUE, which must be no
954
     greater than 256. Larger values will be truncated to 256 with a
955
     warning. Negative values will be treated as 0 with a warning. Use
956
 
957
 
958
     When the store buffer is active, stores are accumulated and
959
     committed when I/O is idle.
960
 
961
 
962

963
File: or1ksim.info,  Node: Memory Configuration,  Next: Memory Management Configuration,  Prev: CPU Configuration,  Up: Core OpenRISC Configuration
964
 
965
3.3.2 Memory Configuration
966
--------------------------
967
 
968
Memory configuration is described in `section memory'. This section may
969
appear multiple times, specifying multiple blocks of memory. The
970
following parameters may be specified.
971
 
972
`type=random|pattern|unknown|zero'
973
     Specifies the values to which memory should be initialized. The
974
     default value is `unknown'.
975
 
976
    `random'
977
          Set the memory values to be a random value. A seed for the
978
          random generator may be set using the `random_seed' field in
979
          this section (see below), thus ensuring the same "random"
980
          values are used each time.
981
 
982
    `pattern'
983
          Set the memory values to be a pattern value, which is set
984
          using the `pattern' field in this section (see below).
985
 
986
    `unknown'
987
          The memory values are not initialized (i.e. left "unknown").
988
          This option will yield faster initialization of the simulator.
989
 
990
    `zero'
991
          Set the memory values to be 0. This is the equivalent of
992
          `type=pattern' and a `pattern' value of 0, and implemented as
993
          such.
994
 
995
               Note: As a consequence, if the `pattern' field is
996
               _subsequently_ specified in this section, the value in
997
               that field will be used instead of zero to initialize
998
               the memory.
999
 
1000
 
1001
`random_seed = VALUE'
1002
     Set the seed for the random number generator to VALUE. This only
1003
     has any effect for memory type `random'.
1004
 
1005
     The default value is -1, which means the seed will be set from a
1006
     call to the `time' function, thus ensuring different random values
1007
     are used on each run. The simulator prints out the seed used in
1008
     this case, allowing repeat runs to regenerate the same random
1009
     values used in any particular run.
1010
 
1011
`pattern = VALUE'
1012
     Set the pattern to be used when initializing memory to VALUE. The
1013
     default value is 0. This only has any effect for memory type
1014
     `pattern'. The least significant 8 bits of this value is used to
1015
     initialize each byte. More than 8 bits can be specified, but will
1016
     ignored with a warning.
1017
 
1018
          Tip: The default value, is equivalent to setting the memory
1019
          `type' to be `zero'. If that is what is intended, then using
1020
          `type=zero' explicitly is better than using `type=pattern'
1021
          and not specifying a value for `pattern'.
1022
 
1023
`baseaddr = VALUE'
1024
     Set the base address of the memory to VALUE. It should be aligned
1025
     to a multiple of the memory size rounded up to the nearest 2^n.
1026
     The default value is 0.
1027
 
1028
`size = VALUE'
1029
     Set the size of the memory block to be VALUE bytes. This should be
1030
     a multiple of 4 (i.e. word aligned). The default value is 1024.
1031
 
1032
          Note: When allocating memory, the simulator will allocate the
1033
          nearest 2^n bytes greater than or equal to VALUE, and will not
1034
          notice memory misses in any part of the memory between VALUE
1035
          and the amount allocated.
1036
 
1037
          As a consequence users are strongly recommended to specify
1038
          memory sizes that are an exact power of 2. If some other
1039
          amount of memory is required, it should be specified as
1040
          separate, contiguous blocks, each of which is a power of 2 in
1041
          size.
1042
 
1043
`name = "TEXT"'
1044
     Name the block. Typically these describe the type of memory being
1045
     modeled (thus `"SRAM"' or `"Flash"'. The default is
1046
     `"anonymous memory block"'.
1047
 
1048
          Note: It is not clear that this information is currently ever
1049
          used in normal operation of the simulator. Even the `info'
1050
          command of the simulator ignores it.
1051
 
1052
`ce = VALUE'
1053
     Set the chip enable index of the memory instance. Each memory
1054
     instance should have a unique chip enable index, which should be
1055
     greater than or equal to zero. This is used by the memory
1056
     controller when identifying different memory instances.
1057
 
1058
     The default value is -1 (invalid).
1059
 
1060
`mc = VALUE'
1061
     Specifies the memory controller this memory is connected to. It
1062
     should correspond to the `index' field specified in a `section mc'
1063
     for a memory controller (*note Memory Controller Configuration:
1064
     Memory Controller Configuration.).
1065
 
1066
     Default value is 0, which is also the default value of a memory
1067
     controller `index' field. This is suitable therefore for designs
1068
     with just one memory controller.
1069
 
1070
`delayr = VALUE'
1071
     The number of cycles required for a read access. Set to -1 if the
1072
     memory does not support reading. Default value 1. The simulator
1073
     will add this number of cycles to the total instruction cycle
1074
     count when reading from main memory.
1075
 
1076
`delayw = VALUE'
1077
     The number of cycles required for a write access. Set to -1 if the
1078
     memory does not support writing. Default value 1. The simulator
1079
     will add this number of cycles to the total instruction cycle
1080
     count when writing to main memory.
1081
 
1082
`log = "FILE"'
1083
     If specified, `file' names a file for all memory accesses to be
1084
     logged. If not specified, the default value, NULL is used, meaning
1085
     that the memory is not logged.
1086
 
1087
 
1088

1089
File: or1ksim.info,  Node: Memory Management Configuration,  Next: Cache Configuration,  Prev: Memory Configuration,  Up: Core OpenRISC Configuration
1090
 
1091
3.3.3 Memory Management Configuration
1092
-------------------------------------
1093
 
1094
Memory Management Unit (MMU) configuration is described in `section
1095
dmmu' (for the data MMU) and `section immu' (for the instruction MMU).
1096
Each section should appear at most once. The following parameters may
1097
be specified.
1098
 
1099
`enabled = 0|1'
1100
     If 1 (true), the data or instruction (as appropriate) MMU is
1101
     enabled. If 0 (the default), it is disabled.
1102
 
1103
`nsets = VALUE'
1104
     Sets the number of data or instruction (as appropriate) TLB sets to
1105
     VALUE, which must be a power of two, not exceeding 128. Values
1106
     which do not fit these criteria are ignored with a warning. The
1107
     default value is 1.
1108
 
1109
`nways = VALUE'
1110
     Sets the number of data or instruction (as appropriate) TLB ways to
1111
     VALUE. The value must be in the range 1 to 4. Values outside this
1112
     range are ignored with a warning. The default value is 1.
1113
 
1114
`pagesize = VALUE'
1115
     The data or instruction (as appropriate) MMU page size is set to
1116
     VALUE, which must be a power of 2. Values which are not a power of
1117
     2 are ignored with a warning. The default is 8192 (0x2000).
1118
 
1119
`entrysize = VALUE'
1120
     The data or instruction (as appropriate) MMU entry size is set to
1121
     VALUE, which must be a power of 2. Values which are not a power of
1122
     2 are ignored with a warning. The default value is 1.
1123
 
1124
          Note: Or1ksim does not appear to use the `entrysize' parameter
1125
          in its simulation of the MMUs. Thus setting this value does
1126
          not seem to matter.
1127
 
1128
`ustates = VALUE'
1129
     The number of instruction usage states for the data or instruction
1130
     (as appropriate) MMU is set to VALUE, which must be 2, 3 or 4.
1131
     Values outside this range are ignored with a warning. The default
1132
     value is 2.
1133
 
1134
          Note: Or1ksim does not appear to use the `ustates' parameter
1135
          in its simulation of the MMUs. Thus setting this value does
1136
          not seem to matter.
1137
 
1138
`hitdelay = VALUE'
1139
     Set the number of cycles a data or instruction (as appropriate) MMU
1140
     hit costs. Default value 1.
1141
 
1142
`missdelay = VALUE'
1143
     Set the number of cycles a data or instruction (as appropriate) MMU
1144
     miss costs. Default value 1.
1145
 
1146
 
1147

1148
File: or1ksim.info,  Node: Cache Configuration,  Next: Interrupt Configuration,  Prev: Memory Management Configuration,  Up: Core OpenRISC Configuration
1149
 
1150
3.3.4 Cache Configuration
1151
-------------------------
1152
 
1153
Cache configuration is described in `section dc' (for the data cache)
1154
and `seciton ic' (for the instruction cache). Each section should
1155
appear at most once. The following parameters may be specified.
1156
 
1157
`enabled = 0|1'
1158
     If 1 (true), the data or instruction (as appropriate) cache is
1159
     enabled. If 0 (the default), it is disabled.
1160
 
1161
`nsets = VALUE'
1162
     Sets the number of data or instruction (as appropriate) cache sets
1163
     to VALUE, which must be a power of two, not exceeding
1164
     `MAX_DC_SETS' (for the data cache) or `MAX_IC_SETS' (for the
1165
     instruction cache). At the time of writing, these constants are
1166
     both defined in the code to be 1024). The default value is 1.
1167
 
1168
`nways = VALUE'
1169
     Sets the number of data or instruction (as appropriate) cache ways
1170
     to VALUE, which must be a power of two, not exceeding
1171
     `MAX_DC_WAYS' (for the data cache) or `MAX_IC_WAYS' (for the
1172
     instruction cache). At the time of writing, these constants are
1173
     both defined in the code to be 32). The default value is 1.
1174
 
1175
`blocksize = VALUE'
1176
     The data or instruction (as appropriate) cache block size is set to
1177
     VALUE bytes, which must be either 16 or 32. The default is 16.
1178
 
1179
`ustates = VALUE'
1180
     The number of instruction usage states for the data or instruction
1181
     (as appropriate) cache is set to VALUE, which must be 2, 3 or 4.
1182
     The default value is 2.
1183
 
1184
`hitdelay = VALUE'
1185
     _Instruction cache only_. Set the number of cycles an instruction
1186
     cache hit costs. Default value 1.
1187
 
1188
`missdelay = VALUE'
1189
     _Instruction cache only_. Set the number of cycles an instruction
1190
     cache miss costs. Default value 1.
1191
 
1192
`load_hitdelay = VALUE'
1193
     _Data cache only_. Set the number of cycles a data load cache hit
1194
     costs. Default value 2.
1195
 
1196
`load_missdelay = VALUE'
1197
     _Data cache only_. Set the number of cycles a data load cache miss
1198
     costs. Default value 2.
1199
 
1200
`store_hitdelay = VALUE'
1201
     _Data cache only_. Set the number of cycles a data store cache hit
1202
     costs. Default value 0.
1203
 
1204
`store_missdelay = VALUE'
1205
     _Data cache only_. Set the number of cycles a data store cache
1206
     miss costs. Default value 0.
1207
 
1208
 
1209

1210
File: or1ksim.info,  Node: Interrupt Configuration,  Next: Power Management Configuration,  Prev: Cache Configuration,  Up: Core OpenRISC Configuration
1211
 
1212
3.3.5 Interrupt Configuration
1213
-----------------------------
1214
 
1215
Programmable Interrupt Controller (PIC) configuration is described in
1216
`section pic'. This section may appear at most once--Or1ksim has no
1217
mechanism for handling multiple interrupt controllers. The following
1218
parameters may be specified.
1219
 
1220
`enabled = 0|1'
1221
     If 1 (true), the programmable interrupt controller is enabled. If 0
1222
     (the default), it is disabled.
1223
 
1224
`edge_trigger = 0|1'
1225
     If 1 (true, the default), the programmable interrupt controller is
1226
     edge triggered. If 0 (false), it is level triggered.
1227
 
1228
 
1229

1230
File: or1ksim.info,  Node: Power Management Configuration,  Next: Branch Prediction Configuration,  Prev: Interrupt Configuration,  Up: Core OpenRISC Configuration
1231
 
1232
3.3.6 Power Management Configuration
1233
------------------------------------
1234
 
1235
Power management implementation is incomplete. At present the effect
1236
(which only happens when the power management unit is enabled) of
1237
setting the different bits in the power management Special Purpose
1238
Register (PMR, SPR 0x4000) is
1239
 
1240
`SDF (bit mask 0x0000000f)'
1241
     No effect - these bits are ignored
1242
 
1243
`DME (bit mask 0x00000010)'
1244
`SME (bit mask 0x00000020)'
1245
     Both these bits cause the processor to stop executing
1246
     instructions. However all other functions (debug interaction, CLI,
1247
     VAPI etc) carry on as normal.
1248
 
1249
`DCGE (bit mask 0x00000004)'
1250
     No effect - this bit is ignored
1251
 
1252
`SUME (bit mask 0x00000008)'
1253
     Enabling this bit causes a message to be printed, advising that the
1254
     processor is suspending and the simulator exits.
1255
 
1256
 
1257
On reset all bits are cleared.
1258
 
1259
Power management configuration is described in `section pm'. This
1260
section may appear at most once. The following parameter may be
1261
specified.
1262
 
1263
`enabled = 0|1'
1264
     If 1 (true), power management is enabled. If 0 (the default), it is
1265
     disabled.
1266
 
1267
 
1268

1269
File: or1ksim.info,  Node: Branch Prediction Configuration,  Next: Debug Interface Configuration,  Prev: Power Management Configuration,  Up: Core OpenRISC Configuration
1270
 
1271
3.3.7 Branch Prediction Configuration
1272
-------------------------------------
1273
 
1274
From examining the code base, it seems the branch prediction function
1275
is not fully implemented. At present the functionality seems restricted
1276
to collection of statistics.
1277
 
1278
Branch prediction configuration is described in `section bpb'. This
1279
section may appear at most once. The following parameters may be
1280
specified.
1281
 
1282
`enabled = 0|1'
1283
     If 1 (true), branch prediction is enabled. If 0 (the default), it
1284
     is disabled.
1285
 
1286
`btic = 0|1'
1287
     If 1 (true), the branch target instruction cache model is enabled.
1288
     If 0 (the default), it is disabled.
1289
 
1290
`sbp_bf_fwd = 0|1'
1291
     If 1 (true), use forward prediction for the `l.bf' instruction. If
1292
 
1293
     instruction.
1294
 
1295
`sbp_bnf_fwd = 0|1'
1296
     If 1 (true), use forward prediction for the `l.bnf' instruction. If
1297
 
1298
     instruction.
1299
 
1300
`hitdelay = VALUE'
1301
     Set the number of cycles a branch prediction hit costs. Default
1302
     value 0.
1303
 
1304
`missdelay = VALUE'
1305
     Set the number of cycles a branch prediction miss costs. Default
1306
     value 0.
1307
 
1308
 
1309

1310
File: or1ksim.info,  Node: Debug Interface Configuration,  Prev: Branch Prediction Configuration,  Up: Core OpenRISC Configuration
1311
 
1312
3.3.8 Debug Interface Configuration
1313
-----------------------------------
1314
 
1315
The debug unit and debug interface configuration is described in
1316
`section debug'. This section may appear at most once. The following
1317
parameters may be specified.
1318
 
1319
`enabled = 0|1'
1320
     If 1 (true), the debug unit is enabled. If 0 (the default), it is
1321
     disabled.
1322
 
1323
          Note: This enables the functionality of the debug unit (its
1324
          registers etc) within the mode. It does not provide any
1325
          external interface to the debug unit. For that, see
1326 1751 jeremybenn
          `gdb_enabled' and `rsp_enabled' below.
1327 1748 jeremybenn
 
1328 1751 jeremybenn
`rsp_enabled = 0|1'
1329
     If 1 (true), the GDB "Remote Serial Protocol" server is started,
1330
     provding an interface to an external GNU debugger, using the port
1331
     specified in the `rsp_port' field (see below), or the
1332
     `or1ksim-rsp' TCP/IP service. If 0 (the default), the server is
1333
     not started, and no external interface is provided.
1334
 
1335
     For more detailed information on the interface to the GNU Debugger
1336
     see Embecosm Application Note 2, `Howto: Porting the GNU Debugger
1337
     Practical Experience with the OpenRISC 1000 Architecture', by
1338
     Jeremy Bennett, published by Embecosm Limited (`www.embecosm.com').
1339
 
1340
          Note: `rsp_enabled' may not be enabled with `gdb_enabled'
1341
          (see below). If both are enabled, a warning is issued and
1342
          only the "Remote Serial Protocol" interface is enabled.
1343
 
1344
`rsp_port = VALUE'
1345
     VALUE specifies the port to be used for the GDB "Remote Serial
1346
     Protocol" interface to the GNU Debugger (GDB). Default value
1347
     51000. If the value 0 is specified, Or1ksim will instead look for
1348
     a TCP/IP service named `or1ksim-rsp'.
1349
 
1350
          Tip: There is no registered port for Or1ksim "Remote Serial
1351
          Protocol" service `or1ksim-rsp'. Good practice suggests users
1352
          should adopt port values in the "Dynamic" or "Private" port
1353
          range, i.e. 49152-65535.
1354
 
1355 1748 jeremybenn
`gdb_enabled = 0|1'
1356
     If 1 (true), the OpenRISC Remote JTAG protocol server is started,
1357
     provding an interface to an external GNU debugger, using the port
1358
     specified in the `server_port' field (see below), or the `or1ksim'
1359
     TCP/IP service. If 0 (the default), the server is not started, and
1360
     no external interface is provided.
1361
 
1362
     For more detailed information on the interface to the GNU Debugger
1363
     see Embecosm Application Note 2, `Howto: Porting the GNU Debugger
1364
     Practical Experience with the OpenRISC 1000 Architecture', by
1365
     Jeremy Bennett, published by Embecosm Limited (`www.embecosm.com').
1366
 
1367
          Note: The OpenRISC Remote JTAG protocol is unique to
1368 1751 jeremybenn
          OpenRISC, and remains only for backward compatibility. New
1369
          users should adopt the standard GDB "Remote Serial Protocol"
1370
          interface (see `rsp_enabled' above) providing access to a
1371
          wider range of GDB functionality.
1372 1748 jeremybenn
 
1373 1751 jeremybenn
          Note: `gdb_enabled' may not be enabled with `rsp_enabled'. If
1374
          both are enabled, a warning is issued and only the "Remote
1375
          Serial Protocol" interface is enabled.
1376
 
1377 1748 jeremybenn
`server_port = VALUE'
1378 1751 jeremybenn
     VALUE specifies the port to be used for the OpenRISC Rmote JTAG
1379
     protocol interface to the GNU Debugger (GDB). Default value 51000.
1380
     If the value 0 is specified, Or1ksim will instead look for a TCP/IP
1381
     service named `or1ksim'.
1382 1748 jeremybenn
 
1383
          Tip: There is no registered port for Or1ksim Remote JTAG
1384
          Interface or service `or1ksim'. Good practice suggests users
1385
          should adopt port values in the "Dynamic" or "Private" port
1386
          range, i.e. 49152-65535.
1387
 
1388
`vapi_id = VALUE'
1389
     VALUE specifies the value of the Verification API (VAPI) base
1390
     address to be used with the debug unit. *Note Verification API:
1391
     Verification API, for more details.
1392
 
1393
     If this is specified and VALUE is non-zero, all OpenRISC Remote
1394
     JTAG protocol transactions will be logged to the VAPI log file, if
1395
     enabled. This is the only functionality associated with VAPI for
1396
     the debug unit. No VAPI commands are sent, nor requests handled.
1397
 
1398
 
1399

1400
File: or1ksim.info,  Node: Peripheral Configuration,  Prev: Core OpenRISC Configuration,  Up: Configuration
1401
 
1402
3.4 Configuring Memory Mapped Peripherals
1403
=========================================
1404
 
1405
All peripheral components are optional. If they are specified, then
1406
(unlike other components) by default they are enabled.
1407
 
1408
* Menu:
1409
 
1410
* Memory Controller Configuration::
1411
* UART Configuration::
1412
* DMA Configuration::
1413
* Ethernet Configuration::
1414
* GPIO Configuration::
1415
* Display Interface Configuration::
1416
* Frame Buffer Configuration::
1417
* Keyboard Configuration::
1418
* Disc Interface Configuration::
1419
* Generic Peripheral Configuration::
1420
 
1421

1422
File: or1ksim.info,  Node: Memory Controller Configuration,  Next: UART Configuration,  Up: Peripheral Configuration
1423
 
1424
3.4.1 Memory Controller Configuration
1425
-------------------------------------
1426
 
1427
The memory controller used in Or1ksim is the component implemented at
1428
OpenCores, and found in the top level CVS directory, `mem_ctrl'. It is
1429
described in the document `Memory Controller IP Core' by Rudolf
1430
Usselmann, which can be found in the `doc' subdirectory. It is a memory
1431
mapped component, which resides on the main OpenRISC Wishbone data bus.
1432
 
1433
The memory controller configuration is described in `section mc'. This
1434
section may appear multiple times, specifying multiple memory
1435
controllers. The following parameters may be specified.
1436
 
1437
`enabled = 0|1'
1438
     If 1 (true, the default), this memory controller is enabled. If 0,
1439
     it is disabled.
1440
 
1441
          Note: The memory controller can effectively also be disabled
1442
          by setting an appropriate power on control register value
1443
          (see below). However this should only be used if it is
1444
          desired to specifically model this behavior of the memory
1445
          controller, not as a way of disabling the memory controller
1446
          in general.
1447
 
1448
`baseaddr = VALUE'
1449
     Set the base address of the memory controller's memory mapped
1450
     registers to VALUE. The default is 0, which is probably not a
1451
     sensible value.
1452
 
1453
     The memory controller has a 7 bit address bus, with a total of 19
1454
     32-bit registers, at addresses 0x00 through 0x4c (address 0x0c and
1455
     addresses 0x50 through 0x7c are not used).
1456
 
1457
`poc = VALUE'
1458
     Specifies the value of the power on control register, The least
1459
     signficant two bits specify the bus width (use 0 for an 8-bit bus,
1460
     1 for a 16-bit bus and 2 for a 32-bit bus) and the next two bits
1461
     the type of memory connected (use 0 for a disabled interface, 1
1462
     for SSRAM, 2 for asyncrhonous devices and 3 for synchronous
1463
     devices).
1464
 
1465
     If other bits are specified, they are ignored with a warning.
1466
 
1467
          Caution: The default value, 0, corresponds to a disabled
1468
          8-bit bus, and is likely not the most suitable value
1469
 
1470
`index = VALUE'
1471
     Specify the index of this memory controller amongst all the memory
1472
     controllers. This value should be unique for each memory
1473
     controller, and is used to associate specific memories with the
1474
     controller, through the `mc' field in the `section memory'
1475
     configuration (*note Memory Configuration: Memory Configuration.).
1476
 
1477
     The default value, 0, is suitable when there is only one memory
1478
     controller.
1479
 
1480
 
1481

1482
File: or1ksim.info,  Node: UART Configuration,  Next: DMA Configuration,  Prev: Memory Controller Configuration,  Up: Peripheral Configuration
1483
 
1484
3.4.2 UART Configuration
1485
------------------------
1486
 
1487
The UART implemented in Or1ksim follows the specification of the
1488
National Semiconductor 16450 and 16550 parts. It is a memory mapped
1489
component, which resides on the main OpenRISC Wishbone data bus.
1490
 
1491
The component provides a number of interfaces to emulate the behavior
1492
of an external terminal connected to the UART.
1493
 
1494
UART configuration is described in `section uart'. This section may
1495
appear multiple times, specifying multiple UARTs. The following
1496
parameters may be specified.
1497
 
1498
`enabled = 0|1'
1499
     If 1 (true, the default), this UART is enabled. If 0, it is
1500
     disabled.
1501
 
1502
`baseaddr = VALUE'
1503
     Set the base address of the UART's memory mapped registers to
1504
     VALUE. The default is 0, which is probably not a sensible value.
1505
 
1506
     The UART has a 3 bit address bus, with a total of 8 8-bit
1507
     registers, at addresses 0x0 through 0x7.
1508
 
1509
`channel = "TYPE:ARGS"'
1510
     Specify the channel representing the terminal connected to the UART
1511
     Rx & Tx pins.
1512
 
1513
    `channel="file:`rxfile',`txfile'"'
1514
          Read input characters from the file `rxfile' and write output
1515
          characters to the file `txfile' (which will be created if
1516
          required).
1517
 
1518
    `channel="xterm:ARGS"'
1519
          Create an xterm on startup, write UART Tx traffic to the
1520
          xterm and take Rx traffic from the keyboard when the xterm
1521
          window is selected. Additional arguments to the xterm command
1522
          (for example specifying window size may be specified in ARGS,
1523
          or this may be left blank.
1524
 
1525
    `channel="tcp:VALUE"'
1526
          Open the TCP/IP port specified by VALUE and read and write
1527
          UART traffic from and to it.
1528
 
1529
          Typically a telnet session is connected to the other end of
1530
          this port.
1531
 
1532
               Tip: There is no registered port for Or1ksim telnet UART
1533
               connection. Priviledged access is required to read
1534
               traffic on the registered "well-known" telnet port (23).
1535
               Instead users should use port values in the "Dynamic" or
1536
               "Private" port range, i.e. 49152-65535.
1537
 
1538
    `channel="fd:`rxfd',`txfd'"'
1539
          Read and write characters from and to the existing open
1540
          numerical file descriptors, file `rxfd' and `txfd'.
1541
 
1542
    `channel="tty:device=/dev/ttyS0,baud=9600"'
1543
          Read and write characters from and to a physical serial port.
1544
          The precise device (shown here as `/dev/ttyS0') may vary from
1545
          machine to machine.
1546
 
1547
 
1548
     The default value for this field is `"xterm:"'.
1549
 
1550
`irq = VALUE'
1551
     Use VALUE as the IRQ number of this UART. Default value 0.
1552
 
1553
`16550 = 0|1'
1554
     If 1 (true), the UART has the functionality of a 16550. If 0 (the
1555
     default), it has the functionality of a 16450. The principal
1556
     difference is that the 16550 can buffer multiple characters.
1557
 
1558
`jitter = VALUE'
1559
     Set the jitter, modeled as a time to block, to VALUE milliseconds.
1560
     Set to -1 to disable jitter modeling. Default value 0.
1561
 
1562
          Note: This functionality has yet to be implemented, so this
1563
          parameter has no effect.
1564
 
1565
`vapi_id = VALUE'
1566
     VALUE specifies the value of the Verification API (VAPI) base
1567
     address to be used with the UART. *Note Verification API:
1568
     Verification API, for more details, which details the use of the
1569
     VAPI with the UART.
1570
 
1571
 
1572

1573
File: or1ksim.info,  Node: DMA Configuration,  Next: Ethernet Configuration,  Prev: UART Configuration,  Up: Peripheral Configuration
1574
 
1575
3.4.3 DMA Configuration
1576
-----------------------
1577
 
1578
The DMA controller used in Or1ksim is the component implemented at
1579
OpenCores, and found in the top level CVS directory, `wb_dma'. It is
1580
described in the document `Wishbone DMA/Bridge IP Core' by Rudolf
1581
Usselmann, which can be found in the `doc' subdirectory. It is a memory
1582
mapped component, which resides on the main OpenRISC Wishbone data bus.
1583
The present implementation is incomplete, intended only to support the
1584
Ethernet interface (*note Ethernet Configuration::), although the
1585
Ethernet interface is not yet completed.
1586
 
1587
DMA configuration is described in `section dma'. This section may
1588
appear multiple times, specifying multiple DMA controllers. The
1589
following parameters may be specified.
1590
 
1591
`enabled = 0|1'
1592
     If 1 (true, the default), this DMA controller is enabled. If 0, it
1593
     is disabled.
1594
 
1595
`baseaddr = VALUE'
1596
     Set the base address of the DMA's memory mapped registers to
1597
     VALUE. The default is 0, which is probably not a sensible value.
1598
 
1599
     The DMA controller has a 10 bit address bus, with a total of 253
1600
     32-bit registers. The first 5 registers at addresses 0x000 through
1601
     0x010 control the overall behavior of the DMA controller. There are
1602
     then 31 blocks of 8 registers, controlling each of the 31 DMA
1603
     channels available. Addresses 0x014 through 0x01c are not used.
1604
 
1605
`irq = VALUE'
1606
     Use VALUE as the IRQ number of this DMA controller. Default value
1607
     0.
1608
 
1609
`vapi_id = VALUE'
1610
     VALUE specifies the value of the Verification API (VAPI) base
1611
     address to be used with the DMA controller. *Note Verification
1612
     API: Verification API, for more details, which details the use of
1613
     the VAPI with the DMA controller.
1614
 
1615
 
1616

1617
File: or1ksim.info,  Node: Ethernet Configuration,  Next: GPIO Configuration,  Prev: DMA Configuration,  Up: Peripheral Configuration
1618
 
1619
3.4.4 Ethernet Configuration
1620
----------------------------
1621
 
1622
The Ethernet MAC used in Or1ksim is the component implemented at
1623
OpenCores, and found in the top level CVS directory, `ethernet'. It
1624
also forms part of the OpenRISC SoC, ORPSoC. It is described in the
1625
document `Ethernet IP Core Specification' by Igor Mohor, which can be
1626
found in the `doc' subdirectory. It is a memory mapped component, which
1627
resides on the main OpenRISC Wishbone data bus.
1628
 
1629
Ethernet configuration is described in `section ethernet'. This section
1630
may appear multiple times, specifying multiple Ethernet interfaces. The
1631
following parameters may be specified.
1632
 
1633
`enabled = 0|1'
1634
     If 1 (true, the default), this Ethernet MAC is enabled. If 0, it is
1635
     disabled.
1636
 
1637
`baseaddr = VALUE'
1638
     Set the base address of the MAC's memory mapped registers to
1639
     VALUE. The default is 0, which is probably not a sensible value.
1640
 
1641
     The Ethernet MAC has a 7-bit address bus, with a total of 21
1642
     32-bit registers. Addresses 0x54 through 0x7c are not used.
1643
 
1644
          Note: The Ethernet specification describes a Tx control
1645
          register, `TXCTRL', at address 0x50. However this register is
1646
          not implemented in the Or1ksim model.
1647
 
1648
`dma = VALUE'
1649
     VALUE specifies the DMA controller with which this Ethernet is
1650
     associated. The default value is 0.
1651
 
1652
          Note: Support for external DMA is not provided in the current
1653
          implementation, and this value is ignored. In any case there
1654
          is no equivalent field to which this can be matched in the
1655
          current DMA component implementation (*note DMA
1656
          Configuration: DMA Configuration.).
1657
 
1658
`irq = VALUE'
1659
     Use VALUE as the IRQ number of this Ethernet MAC. Default value 0.
1660
 
1661
`rtx_type = 0|1'
1662
     If 1 (true) use a socket interface to the Ethernet (see parameter
1663
     `sockif' below). If 0 (the default), use a file interface, reading
1664
     and writing from and to the files specified in the `rxfile' and
1665
     `txfile' parameters (see below).
1666
 
1667
          Note: By default the socket interface is not provided in
1668
          Or1ksim. If it is required, this must be requested when
1669
          configuring, by use of the `--enable-ethphy' option to
1670
          `configure'.
1671
 
1672
               configure --target=or32-uclinux --enable-ethphy ...
1673
 
1674
`rx_channel = RXVALUE'
1675
`tx_channel = TXVALUE'
1676
     RXVALUE specifies the DMA channel to use for receive and TXVALUE
1677
     the DMA channel to use for transmit. Both default to 0.
1678
 
1679
          Note: As noted above, support for external DMA is not
1680
          provided in the current implementation, and so these values
1681
          are ignored.
1682
 
1683
`rxfile = "RXFILE"'
1684
`txfile = "TXFILE"'
1685
     When `rtx_type' is 0 (see above), RXFILE specifies the file to use
1686
     as input and TXFILE specifies the fie to use as output.
1687
 
1688
     The file contains a sequence of packets. Each packet consists of a
1689
     packet length (32 bits), followed by that many bytes of data. Once
1690
     the input file is empty, the Ethernet MAC behaves as though there
1691
     were no data on the Ethernet. The default values of these
1692
     parameters are `"eth_rx"' and `"eth_tx"' respectively.
1693
 
1694
     The input file must exist and be readable. The output file must be
1695
     writable and will be created if necessary. If either of these
1696
     conditions is not met, a warning will be given.
1697
 
1698
`sockif = "SERVICE"'
1699
     When `rtx_type' is 1 (see above), SERVICE specifies the service to
1700
     use for communication. This may be TCP/IP or UDP/IP. The default
1701
     value of this parameter is `"or1ksim_eth"'.
1702
 
1703
`vapi_id = VALUE'
1704
     VALUE specifies the value of the Verification API (VAPI) base
1705
     address to be used with the Ethernet PHY. *Note Verification API:
1706
     Verification API, for more details, which details the use of the
1707
     VAPI with the DMA controller.
1708
 
1709
 
1710

1711
File: or1ksim.info,  Node: GPIO Configuration,  Next: Display Interface Configuration,  Prev: Ethernet Configuration,  Up: Peripheral Configuration
1712
 
1713
3.4.5 GPIO Configuration
1714
------------------------
1715
 
1716
The GPIO used in Or1ksim is the component implemented at OpenCores, and
1717
found in the top level CVS directory, `gpio'. It is described in the
1718
document `GPIO IP Core Specification' by Damjan Lampret and Goran
1719
Djakovic, which can be found in the `doc' subdirectory. It is a memory
1720
mapped component, which resides on the main OpenRISC Wishbone data bus.
1721
 
1722
GPIO configuration is described in `section gpio'. This section may
1723
appear multiple times, specifying multiple GPIO devices. The following
1724
parameters may be specified.
1725
 
1726
`enabled = 0|1'
1727
     If 1 (true, the default), this GPIO is enabled. If 0, it is
1728
     disabled.
1729
 
1730
`baseaddr = VALUE'
1731
     Set the base address of the GPIO's memory mapped registers to
1732
     VALUE. The default is 0, which is probably not a sensible value.
1733
 
1734
     The GPIO has a 6 bit address bus, with a total of 10 32-bit
1735
     registers, although the number of bits that are actively used
1736
     varies. Addresses 0x28 through 0x3c are not used.
1737
 
1738
`irq = VALUE'
1739
     Use VALUE as the IRQ number of this GPIO. Default value 0.
1740
 
1741
`vapi_id = VALUE'
1742
     VALUE specifies the value of the Verification API (VAPI) base
1743
     address to be used with the GPIO. *Note Verification API:
1744
     Verification API, for more details, which details the use of the
1745
     VAPI with the GPIO controller. For backwards compatibility, the
1746
     alternative name `base_vapi_id' is supported for this parameter,
1747
     but deprecated.
1748
 
1749
 
1750

1751
File: or1ksim.info,  Node: Display Interface Configuration,  Next: Frame Buffer Configuration,  Prev: GPIO Configuration,  Up: Peripheral Configuration
1752
 
1753
3.4.6 Display Interface Configuration
1754
-------------------------------------
1755
 
1756
Or1ksim models a VGA interface to an external monitor.  The VGA
1757
controller used in Or1ksim is the component implemented at OpenCores,
1758
and found in the top level CVS directory, `vga_lcd', with no support
1759
for the optional hardware cursors. It is described in the document
1760
`VGA/LCD Core v2.0 Specifications' by Richard Herveille, which can be
1761
found in the `doc' subdirectory. It is a memory mapped component, which
1762
resides on the main OpenRISC Wishbone data bus.
1763
 
1764
The current implementation provides only functionality to dump the
1765
screen to a file at intervals.
1766
 
1767
VGA controller configuration is described in `section vga'. This
1768
section may appear multiple times, specifying multiple VGA controllers.
1769
The following parameters may be specified.
1770
 
1771
`enabled = 0|1'
1772
     If 1 (true, the default), this VGA is enabled. If 0, it is
1773
     disabled.
1774
 
1775
`baseaddr = VALUE'
1776
     Set the base address of the VGA controller's memory mapped
1777
     registers to VALUE. The default is 0, which is probably not a
1778
     sensible value.
1779
 
1780
     The VGA controller has a 12-bit address bus, with 7 32-bit
1781
     registers, at addresses 0x000 through 0x018, and two color lookup
1782
     tables at addresses 0x800 through 0xfff. The hardware cursor
1783
     registers are not implemented, so addresses 0x01c through 0x7fc
1784
     are not used.
1785
 
1786
`irq = VALUE'
1787
     Use VALUE as the IRQ number of this VGA controller. Default value
1788
     0.
1789
 
1790
`refresh_rate = VALUE'
1791
     VALUE specifies number of cycles between screen dumps. Default
1792
     value is derived from the simulation clock cycle time (*note
1793
     Simulator Behavior: Simulator Behavior.), to correspond to dumping
1794
     50 times per simulated second.
1795
 
1796
`txfile = "FILE"'
1797
     FILE specifies the base of the filename for screen dumps.
1798
     Successive screen dumps will be in BMP format, in files with the
1799
     name `FILENNNN.bmp', where NNNN is a sequential count of the
1800
     screen dumps starting at zero. The default value is `"vga_out"'.
1801
     For backwards compatibility, the alternative name `filename' is
1802
     supported for this parameter, but deprecated.
1803
 
1804
 
1805

1806
File: or1ksim.info,  Node: Frame Buffer Configuration,  Next: Keyboard Configuration,  Prev: Display Interface Configuration,  Up: Peripheral Configuration
1807
 
1808
3.4.7 Frame Buffer Configuration
1809
--------------------------------
1810
 
1811
     Caution: The frame buffer is only partially implemented. Its
1812
     configuration fields are described here, but the component should
1813
     not be used at this time. Like the VGA controller, it is designed
1814
     to make screen dumps to file.
1815
 
1816
Frame buffer configuration is described in `section fb'. This section
1817
may appear multiple times, specifying multiple frame buffers. The
1818
following parameters may be specified.
1819
 
1820
`enabled = 0|1'
1821
     If 1 (true, the default), this frame buffer is enabled. If 0, it
1822
     is disabled.
1823
 
1824
`baseaddr = VALUE'
1825
     Set the base address of the frame buffer's memory mapped registers
1826
     to VALUE. The default is 0, which is probably not a sensible value.
1827
 
1828
     The frame buffer has an 121-bit address bus, with 4 32-bit
1829
     registers, at addresses 0x000 through 0x00c, and a PAL lookup
1830
     table at addresses 0x400 through 0x4ff. Addresses 0x010 through
1831
     0x3fc and addresses 0x500 through 0x7ff are not used.
1832
 
1833
`refresh_rate = VALUE'
1834
     VALUE specifies number of cycles between screen dumps. Default
1835
     value is derived from the simulation clock cycle time (*note
1836
     Simulator Behavior: Simulator Behavior.), to correspond to dumping
1837
     50 times per simulated second.
1838
 
1839
`txfile = "FILE"'
1840
     FILE specifies the base of the filename for screen dumps.
1841
     Successive screen dumps will be in BMP format, in files with the
1842
     name `FILENNNN.bmp', where NNNN is a sequential count of the
1843
     screen dumps starting at zero. The default value is `"fb_out"'.
1844
     For backwards compatibility, the alternative name `filename' is
1845
     supported for this parameter, but deprecated.
1846
 
1847
 
1848

1849
File: or1ksim.info,  Node: Keyboard Configuration,  Next: Disc Interface Configuration,  Prev: Frame Buffer Configuration,  Up: Peripheral Configuration
1850
 
1851
3.4.8 Keyboard Configuration (PS2)
1852
----------------------------------
1853
 
1854
The PS2 interface provided by Or1ksim is not documented. It may be
1855
based on the PS2 project at OpenCores, and found in the top level CVS
1856
directory, `ps2'. However this project lacks any documentation beyond
1857
its project webpage. Since most PS2 interfaces follow the Intel i8042
1858
standard, this is presumably what is expected with this device.
1859
 
1860
The implementation only provides for keyboard support, which is
1861
modelled as a file of keystrokes. There is no mouse support.
1862
 
1863
     Caution: A standard i8042 device has two registers at addresses
1864
     0x60 (command) and 0x64 (status). Inspection of the code, suggests
1865
     that the Or1ksim component places these registers at addresses
1866
     0x00 and 0x04.
1867
 
1868
     The port of Linux for the OpenRISC 1000, which runs on Or1ksim
1869
     implements the i8042 device driver, anticipating these registers
1870
     reside at their conventional address. It seems unlikel that this
1871
     code will work.
1872
 
1873
     This component should be used with caution.
1874
 
1875
Keyboard configuration is described in `section kbd'. This section may
1876
appear multiple times, specifying multiple keyboard interfaces. The
1877
following parameters may be specified.
1878
 
1879
`enabled = 0|1'
1880
     If 1 (true, the default), this keyboard is enabled. If 0, it is
1881
     disabled.
1882
 
1883
`baseaddr = VALUE'
1884
     Set the base address of the keyboard's memory mapped registers to
1885
     VALUE. The default is 0, which is probably not a sensible value.
1886
 
1887
     The keyboard PS/2 interface has an 3-bit address bus, with 2 8-bit
1888
     registers, at addresses 0x000 and 0x004.
1889
 
1890
          Caution: As noted above, a standard Intel 8042 interface
1891
          would expect to find these registers at locations 0x60 and
1892
          0x64, thus requiring at least a 7-bit bus.
1893
 
1894
`irq = VALUE'
1895
     Use VALUE as the IRQ number of this Keyboard interface. Default
1896
     value 0.
1897
 
1898
`rxfile = "FILE"'
1899
     `file' specifies a file containing raw key stroke data, which
1900
     models the input from a physical keyboard. The default value is
1901
     `"kbd_in"'.
1902
 
1903
 
1904

1905
File: or1ksim.info,  Node: Disc Interface Configuration,  Next: Generic Peripheral Configuration,  Prev: Keyboard Configuration,  Up: Peripheral Configuration
1906
 
1907
3.4.9 Disc Interface Configuration
1908
----------------------------------
1909
 
1910
The ATA/ATAPI disc controller used in Or1ksim is the OCIDEC (OpenCores
1911
IDE Controller) component implemented at OpenCores, and found in the
1912
top level CVS directory, `ata'. It is described in the document
1913
`ATA/ATAPI-5 Core Specification' by Richard Herveille, which can be
1914
found in the `doc' subdirectory. It is a memory mapped component, which
1915
resides on the main OpenRISC Wishbone data bus.
1916
 
1917
ATA/ATAPI configuration is described in `section ata'. This section may
1918
appear multiple times, specifying multiple disc controllers. The
1919
following parameters may be specified.
1920
 
1921
`enabled = 0|1'
1922
     If 1 (true, the default), this ATA/ATAPI interface is enabled. If
1923
     0, it is disabled.
1924
 
1925
`baseaddr = VALUE'
1926
     Set the base address of the ATA/ATAPI interface's memory mapped
1927
     registers to VALUE. The default is 0, which is probably not a
1928
     sensible value.
1929
 
1930
     The ATA/ATAPI PS/2 interface has an 5-bit address bus, with 8
1931
     32-bit registers. Depending on the version of the OCIDEC ATA/ATAPI
1932
     interface selected (see `dev_id' below), not all registers will be
1933
     available.
1934
 
1935
`irq = VALUE'
1936
     Use VALUE as the IRQ number of this ATA/ATAPI interface. Default
1937
     value 0.
1938
 
1939
`dev_id = 1|2|3'
1940
     This parameter specifies which version of the OCIDEC ATA/ATAPI
1941
     interface to model. The default value is 1.
1942
 
1943
     Version 1 supports only the `CTRL', `STAT' and `PCTR' registers.
1944
     Versions 2 & 3 add the `FCTR' registers, Version 3 adds the `DTR'
1945
     registers and the `RXD'/`TXD' registers.
1946
 
1947
`rev = VALUE'
1948
     Set the VALUE as the revision of the OCIDEC ATA/ATAPI interface.
1949
     The default value is 1. The default value is 0. Its value should
1950
     be in the range 0-15. Larger values are truncated with a warning.
1951
     This only affects the reset value of the `STAT' register, where it
1952
     forms bits 24-27.
1953
 
1954
`pio_mode0_t1 = VALUE'
1955
`pio_mode0_t2 = VALUE'
1956
`pio_mode0_t4 = VALUE'
1957
`pio_mode0_teoc = VALUE'
1958
     These parameters specify the timings for use with Programmed
1959
     Input/Output (PIO) transfers. They are specified as the number of
1960
     clock cycles - 2, rounded up to the next highest integer, or zero
1961
     if that would be negative. The values should not exceed 255. If
1962
     they do, they will be ignored with a warning.
1963
 
1964
     See the ATA/ATAPI-5 specification for explanations of each of these
1965
     timing parameters. The default values are:
1966
 
1967
          pio_mode0_t1   =  6
1968
          pio_mode0_t2   = 28
1969
          pio_mode0_t4   =  2
1970
          pio_mode0_teoc = 23
1971
 
1972
`dma_mode0_tm = VALUE'
1973
`dma_mode0_td = VALUE'
1974
`dma_mode0_teoc = VALUE'
1975
     These parameters specify the timings for use with DMA transfers.
1976
     They are specified as the number of clock cycles - 2, rounded up
1977
     to the next highest integer, or zero if that would be negative.
1978
     The values should not exceed 255. If they do, they will be ignored
1979
     with a warning.
1980
 
1981
     See the ATA/ATAPI-5 specification for explanations of each of these
1982
     timing parameters. The default values are:
1983
 
1984
          dma_mode0_tm   =  4
1985
          dma_mode0_td   = 21
1986
          dma_mode0_teoc = 21
1987
 
1988
 
1989
3.4.9.1 ATA/ATAPI Device Configuration
1990
......................................
1991
 
1992
Within the `section ata', each device is specified separately. The
1993
device subsection is introduced by
1994
 
1995
     device VALUE
1996
 
1997
VALUE is the device number, which should be 0 or 1. The subsection ends
1998
with `enddevice'. Note that if the same device number is specified more
1999
than once, the previous values will be overwritten. Within the `device'
2000
subsection, the following parameters may appear:
2001
 
2002
`type = VALUE'
2003
     VALUEspecifies the type of device: 0 (the default) for "not
2004
     connected", 1 for hard disk simulated in a file and 2 for local
2005
     system hard disk.
2006
 
2007
`file = "FILENAME"'
2008
     `filename' specifies the file to be used for a simulated ATA
2009
     device if the file type (see `type' above) is 1. Default value
2010
     `"ata-FileN"', where N is the device number.
2011
 
2012
`size = VALUE'
2013
     VALUE specifies the size of a simulated ATA device if the file
2014
     type (see `type' above) is 1. The default value is zero.
2015
 
2016
`packet = 0|1'
2017
     If 1 (true), implement the PACKET command feature set. If 0 (the
2018
     default), do not implement the PACKET command feature set.
2019
 
2020
`firmware = "STR"'
2021
     Firmware to report in response to the "Identify Device" command.
2022
     Default `"02207031"'.
2023
 
2024
`heads = VALUE'
2025
     Number of heads in the device. Default 7, use -1 to disable all
2026
     heads.
2027
 
2028
`sectors = VALUE'
2029
     Number of sectors per track in the device. Default 32.
2030
 
2031
`mwdma = 0|1|2|-1'
2032
     Highest multi-word DMA mode supported. Default 2, use -1 to
2033
     disable.
2034
 
2035
`pio = 0|1|2|3|4'
2036
     Highest PIO mode supported. Default 4.
2037
 
2038
 
2039

2040
File: or1ksim.info,  Node: Generic Peripheral Configuration,  Prev: Disc Interface Configuration,  Up: Peripheral Configuration
2041
 
2042
3.4.10 Generic Peripheral Configuration
2043
---------------------------------------
2044
 
2045
When used as a library (*note Simulator Library: Simulator Library.),
2046
Or1ksim makes provision for any additional peripheral to be implemented
2047
externally. Any read or write access to this peripheral's memory map
2048
generates "upcall"s to an external handler. This interface can support
2049
either C or C++, and was particularly designed to facilitate support
2050
for OSCI SystemC (see `http://www.systemc.org').
2051
 
2052
Generic peripheral configuration is described in `section generic'.
2053
This section may appear multiple times, specifying multiple external
2054
peripherals. The following parameters may be specified.
2055
 
2056
`enabled = 0|1'
2057
     If 1 (true, the default), this ATA/ATAPI interface is enabled. If
2058
     0, it is disabled.
2059
 
2060
`baseaddr = VALUE'
2061
     Set the base address of the generic peripheral's memory mapped
2062
     registers to VALUE. The default is 0, which is probably not a
2063
     sensible value.
2064
 
2065
     The size of the memory mapped register space is controlled by the
2066
     `size' paramter, described below.
2067
 
2068
`size = VALUE'
2069
     Set the size of the generic peripheral's memory mapped register
2070
     space to VALUE bytes. Any read or write accesses to addresses with
2071
     offsets of 0 to VALUE-1 bytes from the base address specified in
2072
     parameter `baseaddr' (see above) will be directed to the external
2073
     interface.
2074
 
2075
     VALUE will be rounded up the nearest power of 2. It's default
2076
     value is zero. If VALUE is not an exact power of two, accesses to
2077
     address offsets of VALUE or above up to the next power of 2 will
2078
     generate a warning, and have no effect (reads will return zero).
2079
 
2080
`name = "STR"'
2081
     This gives the peripheral the name `"STR"'. This is used to
2082
     identify the peripheral in error messages and warnings, and when
2083
     reporting its status. The default value is
2084
     `"anonymous external peripheral"'.
2085
 
2086
`byte_enabled = 0|1'
2087
`hw_enabled = 0|1'
2088
`word_enabled = 0|1'
2089
     If 1 (true, the default), these parameters respectively enable the
2090
     device for byte wide, half-word wide and word wide accesses. If 0,
2091
     accesses of that width will fail.
2092
 
2093
 
2094

2095
File: or1ksim.info,  Node: Interactive Command Line,  Next: Verification API,  Prev: Configuration,  Up: Top
2096
 
2097
4 Interactive Command Line
2098
**************************
2099
 
2100
If started with the `-f' flag, or if interrupted with `ctrl-C', Or1ksim
2101
provides the user with an interactive command line. The commands
2102
available, which may not be abbreviated, are:
2103
 
2104
`q'
2105
     Exit the simulator
2106
 
2107
`r'
2108
     Display all the General Purpose Registers (GPRs). Also shows the
2109
     just executed and next to be executed instructions symbolically
2110
     and the state of the flag in the Supervision Register.
2111
 
2112
`t'
2113
     Execute the next instruction and then display register/instruction
2114
     information as with the `r' command (see above).
2115
 
2116
`run NUM [ hush ]'
2117
     Execute NUM instructions. The register/instruction information is
2118
     displayed after each instruction, as with the `r' command (see
2119
     above) _unless_ `hush' is specified.
2120
 
2121
`pr REG VALUE'
2122
     Patch register REG with VALUE.
2123
 
2124
`dm FROMADDR [ TOADDR ]'
2125
     Display memory bytes between FROMADDR and TOADDR. If TOADDR is not
2126
     given, 64 bytes are displayed, starting at FROMADDR.
2127
 
2128
          Caution: The output from this command is broken (a bug).
2129
          Or1ksim attempts to print out 16 bytes per row. However,
2130
          instead of printing out the address at the start of each row,
2131
          it prints the address (of the first of the 16 bytes) before
2132
          _each_ byte.
2133
 
2134
`de FROMADDR [ TOADDR ]'
2135
     Disassemble code between FROMADDR and TOADDR. If TOADDR is not
2136
     given, 16 instructions are disassembled.
2137
 
2138
     The disassembly is entirely numerical, and gives no symbolic
2139
     information.
2140
 
2141
`pm ADDR VALUE'
2142
     Patch the 4 bytes in memory starting at ADDR with the 32-bit VALUE.
2143
 
2144
`pc VALUE'
2145
     Patch the program counter with VALUE.
2146
 
2147
`cm FROMADDR TOADDR SIZE'
2148
     Copy SIZE bytes in memory from FROMADDR to TOADDR.
2149
 
2150
`break ADDR'
2151
     Toggle the breakpoint set at ADDR.
2152
 
2153
`breaks'
2154
     List all set breakpoints
2155
 
2156
`reset'
2157
     Reset the simulator. Includes modeling a reset of the processor, so
2158
     execution will restart from the reset vector location, 0x100.
2159
 
2160
`hist'
2161
     If saving the execution history has been configured (*note
2162
     Simulator Behavior: Simulator Behavior.), display the execution
2163
     history.
2164
 
2165
`stall'
2166
     Stall the processor, so that control is passed to the debug unit.
2167
     When stalled, the processor can execute no instructions. This
2168
     command is useful when debugging the JTAG interface, used by
2169
     debuggers such as GDB.
2170
 
2171 1751 jeremybenn
`unstall'
2172
     Unstall the processor, so that normal execution can continue. This
2173
     command is useful when debugging the JTAG interface, used by
2174
     debuggers such as GDB.
2175 1748 jeremybenn
 
2176
`stats CATEGORY | clear'
2177
     Print the statistics for the given CATEGORY, if available, or
2178
     clear if `clear' is specified. The categories are:
2179
 
2180
    1
2181
          Miscellaneous statistics: branch predictions (if branch
2182
          predictions are enabled), branch target cache model (if
2183
          enabled), cache (if enbaled), MMU (if enabled) and number of
2184
          addtional load & store cycles.
2185
 
2186
          *Note Configuring the OpenRisc Achitectural Components: Core
2187
          OpenRISC Configuration, for details of how to enable these
2188
          various features.
2189
 
2190
    2
2191
          Instruction usage statistics. Requires hazard analysis to be
2192
          enabled (*note CPU Configuration: CPU Configuration.).
2193
 
2194
    3
2195
          Instruction dependency statistics. Requires hazard analysis
2196
          to be enabled (*note CPU Configuration: CPU Configuration.).
2197
 
2198
    4
2199
          Functional unit dependency statistics. Requires hazard
2200
          analysis to be enabled (*note CPU Configuration: CPU
2201
          Configuration.).
2202
 
2203
    5
2204
          Raw register usage over time. Requires hazard analysis to be
2205
          enabled (*note CPU Configuration: CPU Configuration.).
2206
 
2207
    6
2208
          Store buffer statistics. Requires the store buffer to be
2209
          enabled (*note CPU Configuration: CPU Configuration.).
2210
 
2211
 
2212
`info'
2213
     Display detailed information about the simulator configuration.
2214
     This is quite a lengthy about, because all MMU TLB information is
2215
     displayed.
2216
 
2217
`dv FROMADDR [ TOADDR ] [ MODULE ]'
2218
     Dump the area of memory between FROMADDR and TOADDR as Verilog
2219
     code for a synchronous, 23-bit wide SRAM module, named MODULE. If
2220
     TOADDR is not specified, then 64 bytes are dumped (as 16 32-bit
2221
     words). If MODULE is not specified, `or1k_mem' is used.
2222
 
2223
     To save to a file, use the redirection function (described after
2224
     this table, below).
2225
 
2226
`dh FROMADDR [ TOADDR ]'
2227
     Dump the area of memory between FROMADDR and TOADDR as 32-bit hex
2228
     numbers (no `0x', or `32'h' prefix). If TOADDR is not specified,
2229
     then 64 bytes are dumped (as 16 32-bit words).
2230
 
2231
     To save to a file, use the redirection function (described after
2232
     this table, below).
2233
 
2234
`setdbch'
2235
     Toggle debug channels on/off. *Note Standalone Simulator:
2236
     Standalone Simulator, for a description of specifying debug
2237
     channels on the command line.
2238
 
2239
`set SECTION PARAM = VALUE'
2240
     Set the configuration parameter PARA in section SECTION to VALUE.
2241
     *Note Configuration: Configuration, for details of configuration
2242
     parameters and their settings.
2243
 
2244
`debug'
2245
     Toggle the simulator debug mode. *Note Debug Interface
2246
     Configuration: Debug Interface Configuration, for information on
2247
     this parameter.
2248
 
2249
          Caution: This is effectively enabling or disabling the debug
2250
          unit. It does not effect the remote GDB debug interface.
2251
          However using the remote debug interface while the debug unit
2252
          is disabled will lead to undefined behavior and likely crash
2253
          Or1ksim
2254
 
2255
`cuc'
2256
     Enter the the Custom Unit Compiler command prompt (*note CUC
2257
     Configuration: CUC Configuration.).
2258
 
2259
          Caution: The CUC must be properly configured, for this to
2260
          succeed. In particular a timing file must be available and
2261
          readable. Otherwise Or1ksim will crash.
2262
 
2263
`help'
2264
     Print out brief information about each command available.
2265
 
2266
`mprofile [-vh] [-m M] [-g N] [-f FILE] FROM TO'
2267
     Run the memory profiling utility. This follows the same usage as
2268
     the standalone command (*note Memory Profiling Utility: Memory
2269
     Profiling Utility.).
2270
 
2271
`profile [-vhcq] [-g FILE]'
2272
     Run the instruction profiling utility. This follows the same usage
2273
     as the standalone command (*note Profiling Utility: Profiling
2274
     Utility.).
2275
 
2276
 
2277
For all commands, it is possible to redirect the output to a file, by
2278
using the redirection operator, `>'.
2279
 
2280
     COMMAND > FILENAME
2281
 
2282
This is particularly useful for commands dumping a large amount of
2283
output, such as `dv'.
2284
 
2285
     Caution: Unfortunately there is a serious bug with the redirection
2286
     operator. It does not return output to standard output after the
2287
     command completes. Until this bug is fixed, file redirection
2288
     should not be used.
2289
 
2290

2291
File: or1ksim.info,  Node: Verification API,  Next: Code Internals,  Prev: Interactive Command Line,  Up: Top
2292
 
2293
5 Verification API (VAPI)
2294
*************************
2295
 
2296
The Verification API (VAPI) provides a TCP/IP interface to allow
2297
components of the simulation to be controlled externally. The interface
2298
is polled for new requests on each simulated clock cycle. Components
2299
within the simulator may send responses to such requests.
2300
 
2301
The inteface is an asynchronous duplex protocol. On the request side it
2302
provides for simple commands, known as VAPI IDs (a 32 bit integer),
2303
with a single piece of data (also a 32 bit integer). On the send side,
2304
it provides for sending a single VAPI ID and data. However there is no
2305
explicit command-response structure. Some components just accept
2306
requests (e.g. to set values), some just generate sends (to report
2307
values), and some do both.
2308
 
2309
Each component has a base ID (32 bit) and its commands will start from
2310
that base ID. This provides a simple partitioning of the command space
2311
amongst components. Request commands will be directed to the component
2312
with the closest base ID lower than the VAPI ID of the command.
2313
 
2314
Thus if there are two components with base IDs of 0x200 and 0x300, and
2315
a request with VAPI ID of 0x203 is received, it will be directed to the
2316
first component as its command #3.
2317
 
2318
The results of VAPI interactions are logged (by default in `vapi.log'
2319
unless an alternative is specified in `section vapi').
2320
 
2321
Currently the following components support VAPI:
2322
 
2323
Debug Unit
2324
     Although the Debug Unit can specify a base VAPI ID, it is not used
2325
     to send commands or receive requests.
2326
 
2327
     Instead, if the base VAPI ID is set, all remote JTAG protocol
2328
     exchanges are logged in the VAPI log file.
2329
 
2330
UART
2331
     If a base VAPI ID is specified, the UART sends details of any
2332
     chars or break characters sent, with dteails of the line control
2333
     register etc encoded in the data packet sent.
2334
 
2335
     This supports a single VAPI command request, but encodes a
2336
     sub-command in the top 8 bits of the associated data.
2337
 
2338
    `0x00'
2339
          This stuffs the least significant 8 bits of the data into the
2340
          serial register of the UART and the next 8 bits into the line
2341
          control register, effectively providing control of the next
2342
          character to be sent or received.
2343
 
2344
    `0x01'
2345
          The divisor latch bytes are set from the least significant 16
2346
          bits of the data.
2347
 
2348
    `0x02'
2349
          The line control register is set from bits 15-8 of the data.
2350
 
2351
    `0x03'
2352
          The UART skew is set from the least significant 16 bits of
2353
          the data
2354
 
2355
    `0x04'
2356
          If the 16th most significant bit of the data is 1, start
2357
          sending breaks, otherwise stop sending breaks. The breaks are
2358
          sent or cleared after the number of UART clock divider ticks
2359
          specified by the data (immediately if the data is zero).
2360
 
2361
 
2362
DMA
2363
     Although the DMA unit supports a base VAPI ID in its configuration
2364
     (`section dma'), no VAPI data is sent, nor VAPI requests currently
2365
     implemented.
2366
 
2367
Ethernet
2368
     The following requests are handled by the Ethernet. Specified
2369
     symbolically, these are the increments from the base VAPI ID of the
2370
     Ethernet. At present no implementation is provided behind these
2371
     VAPI requests.
2372
 
2373
    `ETH_VAPI_DATA (0)'
2374
 
2375
    `ETH_VAPI_CTRL (0)'
2376
 
2377
GPIO
2378
     If a base VAPI ID is specified, the GPIO sends out on its base
2379
     VAPI ID (symbolically, GPIO_VAPI_DATA (0) offset from the base
2380
     VAPI ID) any changes in outputs.
2381
 
2382
     The following requests are handled by the GPIO. Specified
2383
     symbolically, these are the increments from the VAPI base ID of the
2384
     GPIO.
2385
 
2386
    `GPIO_VAPI_DATA (0)'
2387
          Set the next input to the commands data field
2388
 
2389
    `GPIO_VAPI_AUX (1)'
2390
          Set the GPIO auxiliary inputs to the data field
2391
 
2392
    `GPIO_VAPI_CLOCK (2)'
2393
          Add an external GPIO clock trigger of period specified in the
2394
          data field.
2395
 
2396
    `GPIO_VAPI_RGPIO_OE (3)'
2397
          Set the GPIO output enable to the data field
2398
 
2399
    `GPIO_VAPI_RGPIO_INTE (4)'
2400
          Set the next interrupt to the data field
2401
 
2402
    `GPIO_VAPI_RGPIO_PTRIG (5)'
2403
          Set the next trigger to the data field
2404
 
2405
    `GPIO_VAPI_RGPIO_AUX (6)'
2406
          Set the next auxiliary input to the data field
2407
 
2408
    `GPIO_VAPI_RGPIO_CTRL (7)'
2409
          Set th next control input to the data field
2410
 
2411
 
2412
 
2413

2414
File: or1ksim.info,  Node: Code Internals,  Next: GNU Free Documentation License,  Prev: Verification API,  Up: Top
2415
 
2416
6 A Guide to Or1ksim Internals
2417
******************************
2418
 
2419
These are notes to help those wanting to extend Or1ksim. This section
2420
assumes the use of a tag file, so file locations of entities'
2421
definitions are not in general provided. For more on tags, see the
2422
Linux manual page for `etags'. A tag file can be created with:
2423
 
2424
     make tags
2425
 
2426
* Menu:
2427
 
2428
* Coding Conventions::
2429
* Global Data Structures::
2430
* Concepts::
2431
* Internal Debugging::
2432
 
2433

2434
File: or1ksim.info,  Node: Coding Conventions,  Next: Global Data Structures,  Up: Code Internals
2435
 
2436
6.1 Coding Conventions for Or1ksim
2437
==================================
2438
 
2439
This chapter provides some guidelines for coding, to facilitate
2440
extensions to Or1ksim
2441
 
2442
_GNU Coding Standard_
2443
     Code should follow the GNU coding standard for C
2444
     (`http://www.gnu.org/prep/standards/'. If in doubt, put your code
2445
     through the `indent' program.
2446
 
2447
_`#include' headers_
2448
     All C source code files should include `config.h' before any other
2449
     file.
2450
 
2451
     This should be followed by inclusion of any system headers (but see
2452
     the comments about portability and `port.h' below) and then by any
2453
     Or1ksim package headers.
2454
 
2455
     If `port.h' is required, it should be the first package header to
2456
     be included after the system headers.
2457
 
2458
     All C source code and header files should directly include any
2459
     system or package header they depend on, i.e. not rely on any
2460
     other header having already included it. The two exceptions are
2461
 
2462
       1. All header files may assume that `config.h' has already been
2463
          included.
2464
 
2465
       2. System headers which impose portability problems should be
2466
          included by using the package header `port.h', rather than
2467
          the system headers themselves. This is the case for code
2468
          requiring
2469
 
2470
             * `strndup' (from `string.h')
2471
 
2472
             * Integer types (`intN_t', `uintN_t') (from `inttypes.h').
2473
 
2474
             * `isblank' (from `ctype.h')
2475
 
2476
 
2477
 
2478
_`#include' files once only_
2479
     All include files should be protected by `#ifndef' to ensure their
2480
     definitions are only included once. For instance a header file
2481
     `X-Y.H' should surround its contents with:
2482
 
2483
          #ifndef X_Y__H
2484
          #define X_Y__H
2485
 
2486
          
2487
 
2488
          #endif  /* X_Y__H */
2489
 
2490
_Avoid `typedef'_
2491
     The GNU coding style for C does not have a clear way to distinguish
2492
     between user type name and user variables. For this reason
2493
     `typedef' should be avoided except for the most ubiquitous user
2494
     defined types. This makes the code much easier to read.
2495
 
2496
     There are some `typedef' declarations in the `argtable2' library
2497
     and the ELF and COFF headers, because this code is taken from
2498
     other places.
2499
 
2500
     Within Or1ksim legacy uses of `typedef' have largely been purged,
2501
     except in the Custom Unit Compiler (*note Custom Unit Compiler
2502
     (CUC) Configuration: CUC Configuration.).
2503
 
2504
     The remaining uses of `typedef' occur in two places:
2505
 
2506
        * `port/port.h' defines types to replace those in header files
2507
          that are not available (character functions, string
2508
          duplication, integer types).
2509
 
2510
          `cpu/or1k/arch.h' defines types for the key Or1ksim entities:
2511
          addresses (`oraddr_t'), unsigned register values (`uorreg_t')
2512
          and signed register (`orreg_t') values.
2513
 
2514
 
2515
     Where new types are defined, they should appear in one of these two
2516
     files as appropriate. Or1ksim specific types appearing in `arch.h'
2517
     should always have the suffix `_h'.
2518
 
2519
_Don't begin names with underscore_
2520
     Names beginning with `_' are intended to be part of the C
2521
     infrastructure. They should not be used in the simulator code.
2522
 
2523
_Keep Non-global top level entities static_
2524
     All top level entities (functions, variables), which are not
2525
     explicitly part of a global interface should be declared static.
2526
     This ensures that unwanted connections are not inadvertently built
2527
     across the program.
2528
 
2529
_Use of `inline'_
2530
     Code should not be declared `inline'. Modern compilers can work
2531
     out for themselves what is best in this respect.
2532
 
2533
_Initialization_
2534
     All data structures should be explicitly initialized. In particular
2535
     code should not rely on static data structures being initialized to
2536
     zero.
2537
 
2538
     The rationale is that in future static data structures may become
2539
     dynamic. This has been a particular source of bugs in Or1ksim
2540
     historically.
2541
 
2542
     A specific case is with new peripherals, which should always
2543
     include a `start' function to pre-initialize all configuration
2544
     parameters to sensible defaults
2545
 
2546
_Configuration Validation_
2547
     All configuration values should be validated, preferably when
2548
     encountered, if not when the `section' is closed, or otherwise at
2549
     run time when the parameter is first used.
2550
 
2551
 
2552

2553
File: or1ksim.info,  Node: Global Data Structures,  Next: Concepts,  Prev: Coding Conventions,  Up: Code Internals
2554
 
2555
6.2 Global Data Structures
2556
==========================
2557
 
2558
`config'
2559
     The global variable `config' of type `struct config' holds the
2560
     configuration data for some of the Or1ksim components which are
2561
     always present. At present the components are:
2562
 
2563
        * The simulator defined in `section sim' (*note Simulator
2564
          Configuration: Simulator Configuration.).
2565
 
2566
        * The Verification API (VAPI) defined  in `section vapi' (*note
2567
          Verification API (VAPI) Configuration: Verification API
2568
          Configuration.).
2569
 
2570
        * The Custom Unit Compiler (CUC), defined in `section cuc'
2571
          (*note Custom Unit Compiler (CUC) Configuration: CUC
2572
          Configuration.).
2573
 
2574
        * The CPU, defined in `section cpu' (*note CPU Configuration:
2575
          CPU Configuration.).
2576
 
2577
        * The data cache (but not the instruction cache), defined in
2578
          `section dc' (*note Cache Configuration: Cache
2579
          Configuration.).
2580
 
2581
        * The power management unit, defined in `section pm' (*note
2582
          Power Management Configuration: Power Management
2583
          Configuration.).
2584
 
2585
        * The programmable interrupt controller, defined in
2586
          `section pic' (*note Interrupt Configuration: Interrupt
2587
          Configuration.).
2588
 
2589
        * Branch prediciton, defined in `section bpb' (*note Branch
2590
          Prediction Configuration: Branch Prediction Configuration.).
2591
 
2592
        * The debug unit, defined in `section debug' (*note Debug
2593
          Interface Configuration: Debug Interface Configuration.).
2594
 
2595
 
2596
     This struct is made of a collection of structs, one for each
2597
     component. For example the simulator configuration is held in
2598
     `config.sim'.
2599
 
2600
`config'
2601
     This is a linked list of data structures holding configuration data
2602
     for all sections which are not held in the main `config' data
2603
     structure. In general these are components (such as peripherals and
2604
     memory) which may occur multiple times. However it also handles
2605
     some architectural components which may occur only once, such as
2606
     the memory management units, the instruction cache, the interrupt
2607
     controller and branch prediction.
2608
 
2609
`runtime'
2610
     The global variable `runtime' of type `struct runtime' holds all
2611
     the runtime information about the simulation. To access this
2612
     variable, `sim-config.h' must be included.
2613
 
2614
     This struct is itself made of 3 other structs, `cpu' (for CPU run
2615
     time state), `vapi' (for Verification API state) and `cuc' (for
2616
     Custom Unit Compiler state).
2617
 
2618
 
2619

2620
File: or1ksim.info,  Node: Concepts,  Next: Internal Debugging,  Prev: Global Data Structures,  Up: Code Internals
2621
 
2622
6.3 Concepts
2623
============
2624
 
2625
_Output Redirection_
2626
     The current output stream is held in `runtime.cpu.fout'. Output
2627
     should be explicitly written to this stream, or may use the
2628
     `PRINTF' macro, which will write its arguments to this output
2629
     stream.
2630
 
2631
_Reset Hooks_
2632
     Any peripheral may register a routine to be called when the the
2633
     processor is reset by calling `reg_sim_reset', providing a
2634
     function and pointer to a data structure as arguments. On reset
2635
     that function will be called with the data stucture pointer as
2636
     argument.
2637
 
2638
 
2639

2640
File: or1ksim.info,  Node: Internal Debugging,  Prev: Concepts,  Up: Code Internals
2641
 
2642
6.4 Internal Debugging
2643
======================
2644
 
2645
The function `debug' is like `printf', but with an extra first
2646
argument, which is the debug level. If the debug level specified in the
2647
simulator configuration (*note Simulator Behavior: Simulator Behavior.)
2648
is greater than or equal to this value, the remaining arguments are
2649
printed to the current output stream (*note Output Redirection: Output
2650
Redirection.).
2651
 
2652

2653
File: or1ksim.info,  Node: GNU Free Documentation License,  Next: Index,  Prev: Code Internals,  Up: Top
2654
 
2655
7 GNU Free Documentation License
2656
********************************
2657
 
2658
                      Version 1.2, November 2002
2659
 
2660
     Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
2661
     51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
2662
 
2663
     Everyone is permitted to copy and distribute verbatim copies
2664
     of this license document, but changing it is not allowed.
2665
 
2666
  0. PREAMBLE
2667
 
2668
     The purpose of this License is to make a manual, textbook, or other
2669
     functional and useful document "free" in the sense of freedom: to
2670
     assure everyone the effective freedom to copy and redistribute it,
2671
     with or without modifying it, either commercially or
2672
     noncommercially.  Secondarily, this License preserves for the
2673
     author and publisher a way to get credit for their work, while not
2674
     being considered responsible for modifications made by others.
2675
 
2676
     This License is a kind of "copyleft", which means that derivative
2677
     works of the document must themselves be free in the same sense.
2678
     It complements the GNU General Public License, which is a copyleft
2679
     license designed for free software.
2680
 
2681
     We have designed this License in order to use it for manuals for
2682
     free software, because free software needs free documentation: a
2683
     free program should come with manuals providing the same freedoms
2684
     that the software does.  But this License is not limited to
2685
     software manuals; it can be used for any textual work, regardless
2686
     of subject matter or whether it is published as a printed book.
2687
     We recommend this License principally for works whose purpose is
2688
     instruction or reference.
2689
 
2690
  1. APPLICABILITY AND DEFINITIONS
2691
 
2692
     This License applies to any manual or other work, in any medium,
2693
     that contains a notice placed by the copyright holder saying it
2694
     can be distributed under the terms of this License.  Such a notice
2695
     grants a world-wide, royalty-free license, unlimited in duration,
2696
     to use that work under the conditions stated herein.  The
2697
     "Document", below, refers to any such manual or work.  Any member
2698
     of the public is a licensee, and is addressed as "you".  You
2699
     accept the license if you copy, modify or distribute the work in a
2700
     way requiring permission under copyright law.
2701
 
2702
     A "Modified Version" of the Document means any work containing the
2703
     Document or a portion of it, either copied verbatim, or with
2704
     modifications and/or translated into another language.
2705
 
2706
     A "Secondary Section" is a named appendix or a front-matter section
2707
     of the Document that deals exclusively with the relationship of the
2708
     publishers or authors of the Document to the Document's overall
2709
     subject (or to related matters) and contains nothing that could
2710
     fall directly within that overall subject.  (Thus, if the Document
2711
     is in part a textbook of mathematics, a Secondary Section may not
2712
     explain any mathematics.)  The relationship could be a matter of
2713
     historical connection with the subject or with related matters, or
2714
     of legal, commercial, philosophical, ethical or political position
2715
     regarding them.
2716
 
2717
     The "Invariant Sections" are certain Secondary Sections whose
2718
     titles are designated, as being those of Invariant Sections, in
2719
     the notice that says that the Document is released under this
2720
     License.  If a section does not fit the above definition of
2721
     Secondary then it is not allowed to be designated as Invariant.
2722
     The Document may contain zero Invariant Sections.  If the Document
2723
     does not identify any Invariant Sections then there are none.
2724
 
2725
     The "Cover Texts" are certain short passages of text that are
2726
     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
2727
     that says that the Document is released under this License.  A
2728
     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
2729
     be at most 25 words.
2730
 
2731
     A "Transparent" copy of the Document means a machine-readable copy,
2732
     represented in a format whose specification is available to the
2733
     general public, that is suitable for revising the document
2734
     straightforwardly with generic text editors or (for images
2735
     composed of pixels) generic paint programs or (for drawings) some
2736
     widely available drawing editor, and that is suitable for input to
2737
     text formatters or for automatic translation to a variety of
2738
     formats suitable for input to text formatters.  A copy made in an
2739
     otherwise Transparent file format whose markup, or absence of
2740
     markup, has been arranged to thwart or discourage subsequent
2741
     modification by readers is not Transparent.  An image format is
2742
     not Transparent if used for any substantial amount of text.  A
2743
     copy that is not "Transparent" is called "Opaque".
2744
 
2745
     Examples of suitable formats for Transparent copies include plain
2746
     ASCII without markup, Texinfo input format, LaTeX input format,
2747
     SGML or XML using a publicly available DTD, and
2748
     standard-conforming simple HTML, PostScript or PDF designed for
2749
     human modification.  Examples of transparent image formats include
2750
     PNG, XCF and JPG.  Opaque formats include proprietary formats that
2751
     can be read and edited only by proprietary word processors, SGML or
2752
     XML for which the DTD and/or processing tools are not generally
2753
     available, and the machine-generated HTML, PostScript or PDF
2754
     produced by some word processors for output purposes only.
2755
 
2756
     The "Title Page" means, for a printed book, the title page itself,
2757
     plus such following pages as are needed to hold, legibly, the
2758
     material this License requires to appear in the title page.  For
2759
     works in formats which do not have any title page as such, "Title
2760
     Page" means the text near the most prominent appearance of the
2761
     work's title, preceding the beginning of the body of the text.
2762
 
2763
     A section "Entitled XYZ" means a named subunit of the Document
2764
     whose title either is precisely XYZ or contains XYZ in parentheses
2765
     following text that translates XYZ in another language.  (Here XYZ
2766
     stands for a specific section name mentioned below, such as
2767
     "Acknowledgements", "Dedications", "Endorsements", or "History".)
2768
     To "Preserve the Title" of such a section when you modify the
2769
     Document means that it remains a section "Entitled XYZ" according
2770
     to this definition.
2771
 
2772
     The Document may include Warranty Disclaimers next to the notice
2773
     which states that this License applies to the Document.  These
2774
     Warranty Disclaimers are considered to be included by reference in
2775
     this License, but only as regards disclaiming warranties: any other
2776
     implication that these Warranty Disclaimers may have is void and
2777
     has no effect on the meaning of this License.
2778
 
2779
  2. VERBATIM COPYING
2780
 
2781
     You may copy and distribute the Document in any medium, either
2782
     commercially or noncommercially, provided that this License, the
2783
     copyright notices, and the license notice saying this License
2784
     applies to the Document are reproduced in all copies, and that you
2785
     add no other conditions whatsoever to those of this License.  You
2786
     may not use technical measures to obstruct or control the reading
2787
     or further copying of the copies you make or distribute.  However,
2788
     you may accept compensation in exchange for copies.  If you
2789
     distribute a large enough number of copies you must also follow
2790
     the conditions in section 3.
2791
 
2792
     You may also lend copies, under the same conditions stated above,
2793
     and you may publicly display copies.
2794
 
2795
  3. COPYING IN QUANTITY
2796
 
2797
     If you publish printed copies (or copies in media that commonly
2798
     have printed covers) of the Document, numbering more than 100, and
2799
     the Document's license notice requires Cover Texts, you must
2800
     enclose the copies in covers that carry, clearly and legibly, all
2801
     these Cover Texts: Front-Cover Texts on the front cover, and
2802
     Back-Cover Texts on the back cover.  Both covers must also clearly
2803
     and legibly identify you as the publisher of these copies.  The
2804
     front cover must present the full title with all words of the
2805
     title equally prominent and visible.  You may add other material
2806
     on the covers in addition.  Copying with changes limited to the
2807
     covers, as long as they preserve the title of the Document and
2808
     satisfy these conditions, can be treated as verbatim copying in
2809
     other respects.
2810
 
2811
     If the required texts for either cover are too voluminous to fit
2812
     legibly, you should put the first ones listed (as many as fit
2813
     reasonably) on the actual cover, and continue the rest onto
2814
     adjacent pages.
2815
 
2816
     If you publish or distribute Opaque copies of the Document
2817
     numbering more than 100, you must either include a
2818
     machine-readable Transparent copy along with each Opaque copy, or
2819
     state in or with each Opaque copy a computer-network location from
2820
     which the general network-using public has access to download
2821
     using public-standard network protocols a complete Transparent
2822
     copy of the Document, free of added material.  If you use the
2823
     latter option, you must take reasonably prudent steps, when you
2824
     begin distribution of Opaque copies in quantity, to ensure that
2825
     this Transparent copy will remain thus accessible at the stated
2826
     location until at least one year after the last time you
2827
     distribute an Opaque copy (directly or through your agents or
2828
     retailers) of that edition to the public.
2829
 
2830
     It is requested, but not required, that you contact the authors of
2831
     the Document well before redistributing any large number of
2832
     copies, to give them a chance to provide you with an updated
2833
     version of the Document.
2834
 
2835
  4. MODIFICATIONS
2836
 
2837
     You may copy and distribute a Modified Version of the Document
2838
     under the conditions of sections 2 and 3 above, provided that you
2839
     release the Modified Version under precisely this License, with
2840
     the Modified Version filling the role of the Document, thus
2841
     licensing distribution and modification of the Modified Version to
2842
     whoever possesses a copy of it.  In addition, you must do these
2843
     things in the Modified Version:
2844
 
2845
       A. Use in the Title Page (and on the covers, if any) a title
2846
          distinct from that of the Document, and from those of
2847
          previous versions (which should, if there were any, be listed
2848
          in the History section of the Document).  You may use the
2849
          same title as a previous version if the original publisher of
2850
          that version gives permission.
2851
 
2852
       B. List on the Title Page, as authors, one or more persons or
2853
          entities responsible for authorship of the modifications in
2854
          the Modified Version, together with at least five of the
2855
          principal authors of the Document (all of its principal
2856
          authors, if it has fewer than five), unless they release you
2857
          from this requirement.
2858
 
2859
       C. State on the Title page the name of the publisher of the
2860
          Modified Version, as the publisher.
2861
 
2862
       D. Preserve all the copyright notices of the Document.
2863
 
2864
       E. Add an appropriate copyright notice for your modifications
2865
          adjacent to the other copyright notices.
2866
 
2867
       F. Include, immediately after the copyright notices, a license
2868
          notice giving the public permission to use the Modified
2869
          Version under the terms of this License, in the form shown in
2870
          the Addendum below.
2871
 
2872
       G. Preserve in that license notice the full lists of Invariant
2873
          Sections and required Cover Texts given in the Document's
2874
          license notice.
2875
 
2876
       H. Include an unaltered copy of this License.
2877
 
2878
       I. Preserve the section Entitled "History", Preserve its Title,
2879
          and add to it an item stating at least the title, year, new
2880
          authors, and publisher of the Modified Version as given on
2881
          the Title Page.  If there is no section Entitled "History" in
2882
          the Document, create one stating the title, year, authors,
2883
          and publisher of the Document as given on its Title Page,
2884
          then add an item describing the Modified Version as stated in
2885
          the previous sentence.
2886
 
2887
       J. Preserve the network location, if any, given in the Document
2888
          for public access to a Transparent copy of the Document, and
2889
          likewise the network locations given in the Document for
2890
          previous versions it was based on.  These may be placed in
2891
          the "History" section.  You may omit a network location for a
2892
          work that was published at least four years before the
2893
          Document itself, or if the original publisher of the version
2894
          it refers to gives permission.
2895
 
2896
       K. For any section Entitled "Acknowledgements" or "Dedications",
2897
          Preserve the Title of the section, and preserve in the
2898
          section all the substance and tone of each of the contributor
2899
          acknowledgements and/or dedications given therein.
2900
 
2901
       L. Preserve all the Invariant Sections of the Document,
2902
          unaltered in their text and in their titles.  Section numbers
2903
          or the equivalent are not considered part of the section
2904
          titles.
2905
 
2906
       M. Delete any section Entitled "Endorsements".  Such a section
2907
          may not be included in the Modified Version.
2908
 
2909
       N. Do not retitle any existing section to be Entitled
2910
          "Endorsements" or to conflict in title with any Invariant
2911
          Section.
2912
 
2913
       O. Preserve any Warranty Disclaimers.
2914
 
2915
     If the Modified Version includes new front-matter sections or
2916
     appendices that qualify as Secondary Sections and contain no
2917
     material copied from the Document, you may at your option
2918
     designate some or all of these sections as invariant.  To do this,
2919
     add their titles to the list of Invariant Sections in the Modified
2920
     Version's license notice.  These titles must be distinct from any
2921
     other section titles.
2922
 
2923
     You may add a section Entitled "Endorsements", provided it contains
2924
     nothing but endorsements of your Modified Version by various
2925
     parties--for example, statements of peer review or that the text
2926
     has been approved by an organization as the authoritative
2927
     definition of a standard.
2928
 
2929
     You may add a passage of up to five words as a Front-Cover Text,
2930
     and a passage of up to 25 words as a Back-Cover Text, to the end
2931
     of the list of Cover Texts in the Modified Version.  Only one
2932
     passage of Front-Cover Text and one of Back-Cover Text may be
2933
     added by (or through arrangements made by) any one entity.  If the
2934
     Document already includes a cover text for the same cover,
2935
     previously added by you or by arrangement made by the same entity
2936
     you are acting on behalf of, you may not add another; but you may
2937
     replace the old one, on explicit permission from the previous
2938
     publisher that added the old one.
2939
 
2940
     The author(s) and publisher(s) of the Document do not by this
2941
     License give permission to use their names for publicity for or to
2942
     assert or imply endorsement of any Modified Version.
2943
 
2944
  5. COMBINING DOCUMENTS
2945
 
2946
     You may combine the Document with other documents released under
2947
     this License, under the terms defined in section 4 above for
2948
     modified versions, provided that you include in the combination
2949
     all of the Invariant Sections of all of the original documents,
2950
     unmodified, and list them all as Invariant Sections of your
2951
     combined work in its license notice, and that you preserve all
2952
     their Warranty Disclaimers.
2953
 
2954
     The combined work need only contain one copy of this License, and
2955
     multiple identical Invariant Sections may be replaced with a single
2956
     copy.  If there are multiple Invariant Sections with the same name
2957
     but different contents, make the title of each such section unique
2958
     by adding at the end of it, in parentheses, the name of the
2959
     original author or publisher of that section if known, or else a
2960
     unique number.  Make the same adjustment to the section titles in
2961
     the list of Invariant Sections in the license notice of the
2962
     combined work.
2963
 
2964
     In the combination, you must combine any sections Entitled
2965
     "History" in the various original documents, forming one section
2966
     Entitled "History"; likewise combine any sections Entitled
2967
     "Acknowledgements", and any sections Entitled "Dedications".  You
2968
     must delete all sections Entitled "Endorsements."
2969
 
2970
  6. COLLECTIONS OF DOCUMENTS
2971
 
2972
     You may make a collection consisting of the Document and other
2973
     documents released under this License, and replace the individual
2974
     copies of this License in the various documents with a single copy
2975
     that is included in the collection, provided that you follow the
2976
     rules of this License for verbatim copying of each of the
2977
     documents in all other respects.
2978
 
2979
     You may extract a single document from such a collection, and
2980
     distribute it individually under this License, provided you insert
2981
     a copy of this License into the extracted document, and follow
2982
     this License in all other respects regarding verbatim copying of
2983
     that document.
2984
 
2985
  7. AGGREGATION WITH INDEPENDENT WORKS
2986
 
2987
     A compilation of the Document or its derivatives with other
2988
     separate and independent documents or works, in or on a volume of
2989
     a storage or distribution medium, is called an "aggregate" if the
2990
     copyright resulting from the compilation is not used to limit the
2991
     legal rights of the compilation's users beyond what the individual
2992
     works permit.  When the Document is included in an aggregate, this
2993
     License does not apply to the other works in the aggregate which
2994
     are not themselves derivative works of the Document.
2995
 
2996
     If the Cover Text requirement of section 3 is applicable to these
2997
     copies of the Document, then if the Document is less than one half
2998
     of the entire aggregate, the Document's Cover Texts may be placed
2999
     on covers that bracket the Document within the aggregate, or the
3000
     electronic equivalent of covers if the Document is in electronic
3001
     form.  Otherwise they must appear on printed covers that bracket
3002
     the whole aggregate.
3003
 
3004
  8. TRANSLATION
3005
 
3006
     Translation is considered a kind of modification, so you may
3007
     distribute translations of the Document under the terms of section
3008
     4.  Replacing Invariant Sections with translations requires special
3009
     permission from their copyright holders, but you may include
3010
     translations of some or all Invariant Sections in addition to the
3011
     original versions of these Invariant Sections.  You may include a
3012
     translation of this License, and all the license notices in the
3013
     Document, and any Warranty Disclaimers, provided that you also
3014
     include the original English version of this License and the
3015
     original versions of those notices and disclaimers.  In case of a
3016
     disagreement between the translation and the original version of
3017
     this License or a notice or disclaimer, the original version will
3018
     prevail.
3019
 
3020
     If a section in the Document is Entitled "Acknowledgements",
3021
     "Dedications", or "History", the requirement (section 4) to
3022
     Preserve its Title (section 1) will typically require changing the
3023
     actual title.
3024
 
3025
  9. TERMINATION
3026
 
3027
     You may not copy, modify, sublicense, or distribute the Document
3028
     except as expressly provided for under this License.  Any other
3029
     attempt to copy, modify, sublicense or distribute the Document is
3030
     void, and will automatically terminate your rights under this
3031
     License.  However, parties who have received copies, or rights,
3032
     from you under this License will not have their licenses
3033
     terminated so long as such parties remain in full compliance.
3034
 
3035
 10. FUTURE REVISIONS OF THIS LICENSE
3036
 
3037
     The Free Software Foundation may publish new, revised versions of
3038
     the GNU Free Documentation License from time to time.  Such new
3039
     versions will be similar in spirit to the present version, but may
3040
     differ in detail to address new problems or concerns.  See
3041
     `http://www.gnu.org/copyleft/'.
3042
 
3043
     Each version of the License is given a distinguishing version
3044
     number.  If the Document specifies that a particular numbered
3045
     version of this License "or any later version" applies to it, you
3046
     have the option of following the terms and conditions either of
3047
     that specified version or of any later version that has been
3048
     published (not as a draft) by the Free Software Foundation.  If
3049
     the Document does not specify a version number of this License,
3050
     you may choose any version ever published (not as a draft) by the
3051
     Free Software Foundation.
3052
 
3053
ADDENDUM: How to use this License for your documents
3054
====================================================
3055
 
3056
To use this License in a document you have written, include a copy of
3057
the License in the document and put the following copyright and license
3058
notices just after the title page:
3059
 
3060
       Copyright (C)  YEAR  YOUR NAME.
3061
       Permission is granted to copy, distribute and/or modify this document
3062
       under the terms of the GNU Free Documentation License, Version 1.2
3063
       or any later version published by the Free Software Foundation;
3064
       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
3065
       Texts.  A copy of the license is included in the section entitled ``GNU
3066
       Free Documentation License''.
3067
 
3068
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
3069
replace the "with...Texts." line with this:
3070
 
3071
         with the Invariant Sections being LIST THEIR TITLES, with
3072
         the Front-Cover Texts being LIST, and with the Back-Cover Texts
3073
         being LIST.
3074
 
3075
If you have Invariant Sections without Cover Texts, or some other
3076
combination of the three, merge those two alternatives to suit the
3077
situation.
3078
 
3079
If your document contains nontrivial examples of program code, we
3080
recommend releasing these examples in parallel under your choice of
3081
free software license, such as the GNU General Public License, to
3082
permit their use in free software.
3083
 
3084

3085
File: or1ksim.info,  Node: Index,  Prev: GNU Free Documentation License,  Up: Top
3086
 
3087
Index
3088
*****
3089
 
3090
 
3091
* Menu:
3092
3093
* --cumulative:                          Profiling Utility.   (line  26)
3094
* --debug-config:                        Standalone Simulator.
3095
                                                              (line  48)
3096 1751 jeremybenn
* --disable-arith-flag:                  Configuring the Build.
3097
                                                              (line  93)
3098
* --disable-debug:                       Configuring the Build.
3099
                                                              (line 121)
3100
* --disable-ethphy:                      Configuring the Build.
3101
                                                              (line  54)
3102
* --disable-ov-flag:                     Configuring the Build.
3103
                                                              (line  70)
3104
* --disable-profiling:                   Configuring the Build.
3105
                                                              (line  25)
3106
* --disable-range-stats:                 Configuring the Build.
3107
                                                              (line  64)
3108
* --enable-arith-flag:                   Configuring the Build.
3109
                                                              (line  92)
3110
* --enable-debug:                        Configuring the Build.
3111
                                                              (line 120)
3112
* --enable-ethphy:                       Configuring the Build.
3113
                                                              (line  53)
3114
* --enable-execution:                    Configuring the Build.
3115
                                                              (line  32)
3116 1748 jeremybenn
* --enable-mprofile:                     Standalone Simulator.
3117
                                                              (line  60)
3118 1751 jeremybenn
* --enable-ov-flag:                      Configuring the Build.
3119
                                                              (line  69)
3120 1748 jeremybenn
* --enable-profile:                      Standalone Simulator.
3121
                                                              (line  57)
3122 1751 jeremybenn
* --enable-profiling:                    Configuring the Build.
3123
                                                              (line  24)
3124
* --enable-range-stats:                  Configuring the Build.
3125
                                                              (line  63)
3126 1748 jeremybenn
* --file:                                Standalone Simulator.
3127
                                                              (line  24)
3128
* --filename:                            Memory Profiling Utility.
3129
                                                              (line  51)
3130
* --generate:                            Profiling Utility.   (line  34)
3131
* --group:                               Memory Profiling Utility.
3132
                                                              (line  47)
3133
* --help:                                Standalone Simulator.
3134
                                                              (line  20)
3135
* --help (memory profiling utility):     Memory Profiling Utility.
3136
                                                              (line  22)
3137
* --help (profiling utility):            Profiling Utility.   (line  22)
3138
* --interactive:                         Standalone Simulator.
3139
                                                              (line  54)
3140
* --mode:                                Memory Profiling Utility.
3141
                                                              (line  26)
3142
* --nosrv:                               Standalone Simulator.
3143
                                                              (line  32)
3144
* --quiet:                               Profiling Utility.   (line  30)
3145
* --srv:                                 Standalone Simulator.
3146
                                                              (line  40)
3147
* --version:                             Standalone Simulator.
3148
                                                              (line  16)
3149
* --version (memory profiling utility):  Memory Profiling Utility.
3150
                                                              (line  17)
3151
* --version (profiling utility):         Profiling Utility.   (line  17)
3152
* -c:                                    Profiling Utility.   (line  26)
3153
* -d:                                    Standalone Simulator.
3154
                                                              (line  48)
3155
* -f <1>:                                Memory Profiling Utility.
3156
                                                              (line  51)
3157
* -f:                                    Standalone Simulator.
3158
                                                              (line  24)
3159
* -g <1>:                                Memory Profiling Utility.
3160
                                                              (line  47)
3161
* -g:                                    Profiling Utility.   (line  34)
3162
* -h:                                    Standalone Simulator.
3163
                                                              (line  20)
3164
* -h (memory profiling utility):         Memory Profiling Utility.
3165
                                                              (line  22)
3166
* -h (profiling utility):                Profiling Utility.   (line  22)
3167
* -i:                                    Standalone Simulator.
3168
                                                              (line  54)
3169
* -m:                                    Memory Profiling Utility.
3170
                                                              (line  26)
3171
* -q:                                    Profiling Utility.   (line  30)
3172
* -v:                                    Standalone Simulator.
3173
                                                              (line  16)
3174
* -v (memory profiling utility):         Memory Profiling Utility.
3175
                                                              (line  17)
3176
* -v (profiling utility):                Profiling Utility.   (line  17)
3177
* 0x00 UART VAPI sub-command (UART verification): Verification API.
3178
                                                              (line  49)
3179
* 0x01 UART VAPI sub-command (UART verification): Verification API.
3180
                                                              (line  55)
3181
* 0x02 UART VAPI sub-command (UART verification): Verification API.
3182
                                                              (line  59)
3183
* 0x03 UART VAPI sub-command (UART verification): Verification API.
3184
                                                              (line  62)
3185
* 0x04 UART VAPI sub-command (UART verification): Verification API.
3186
                                                              (line  66)
3187
* 16550 (UART configuration):            UART Configuration.  (line  73)
3188 1751 jeremybenn
* Argtable2 debugging:                   Configuring the Build.
3189
                                                              (line 121)
3190 1748 jeremybenn
* ATA/ATAPI configuration:               Disc Interface Configuration.
3191
                                                              (line   6)
3192
* ATA/ATAPI device configuration:        Disc Interface Configuration.
3193
                                                              (line  88)
3194
* base_vapi_id (GPIO configuration - deprecated): GPIO Configuration.
3195
                                                              (line  32)
3196
* baseaddr (ATA/ATAPI configuration):    Disc Interface Configuration.
3197
                                                              (line  22)
3198
* baseaddr (DMA configuration):          DMA Configuration.   (line  24)
3199
* baseaddr (Ethernet configuration):     Ethernet Configuration.
3200
                                                              (line  22)
3201
* baseaddr (frame buffer configuration): Frame Buffer Configuration.
3202
                                                              (line  20)
3203
* baseaddr (generic peripheral configuration): Generic Peripheral Configuration.
3204
                                                              (line  22)
3205
* baseaddr (GPIO configuration):         GPIO Configuration.  (line  21)
3206
* baseaddr (keyboard configuration):     Keyboard Configuration.
3207
                                                              (line  36)
3208
* baseaddr (memory configuration):       Memory Configuration.
3209
                                                              (line  62)
3210
* baseaddr (memory controller configuration): Memory Controller Configuration.
3211
                                                              (line  28)
3212
* baseaddr (UART configuration):         UART Configuration.  (line  22)
3213
* baseaddr (VGA configuration):          Display Interface Configuration.
3214
                                                              (line  26)
3215
* blocksize (cache configuration):       Cache Configuration. (line  29)
3216
* BPB configuration:                     Branch Prediction Configuration.
3217
                                                              (line   6)
3218
* branch prediction configuration:       Branch Prediction Configuration.
3219
                                                              (line   6)
3220
* break (Interactive CLI):               Interactive Command Line.
3221
                                                              (line  57)
3222
* breakpoint list (Interactive CLI):     Interactive Command Line.
3223
                                                              (line  60)
3224
* breakpoint set/clear (Interactive CLI): Interactive Command Line.
3225
                                                              (line  57)
3226
* breaks (Interactive CLI):              Interactive Command Line.
3227
                                                              (line  60)
3228
* btic (branch prediction configuration): Branch Prediction Configuration.
3229
                                                              (line  19)
3230
* byte_enabled (generic peripheral configuration): Generic Peripheral Configuration.
3231
                                                              (line  48)
3232
* cache configuration:                   Cache Configuration. (line   6)
3233
* calling_convention (CUC configuration): CUC Configuration.  (line  34)
3234
* ce (memory configuration):             Memory Configuration.
3235
                                                              (line  91)
3236
* cfgr (CPU configuration):              CPU Configuration.   (line  47)
3237
* channel (UART configuration):          UART Configuration.  (line  29)
3238
* clear breakpoint (Interactive CLI):    Interactive Command Line.
3239
                                                              (line  57)
3240
* clkcycle (simulator configuration):    Simulator Behavior.  (line 102)
3241
* cm (Interactive CLI):                  Interactive Command Line.
3242
                                                              (line  54)
3243
* command line for Or1ksim standalone use: Standalone Simulator.
3244
                                                              (line   6)
3245 1751 jeremybenn
* complex model:                         Configuring the Build.
3246
                                                              (line  32)
3247 1748 jeremybenn
* config:                                Global Data Structures.
3248
                                                              (line   7)
3249
* config.bpb:                            Global Data Structures.
3250
                                                              (line  37)
3251
* config.cpu:                            Global Data Structures.
3252
                                                              (line  22)
3253
* config.cuc:                            Global Data Structures.
3254
                                                              (line  18)
3255
* config.dc:                             Global Data Structures.
3256
                                                              (line  25)
3257
* config.debug:                          Global Data Structures.
3258
                                                              (line  40)
3259
* config.pic:                            Global Data Structures.
3260
                                                              (line  33)
3261
* config.pm:                             Global Data Structures.
3262
                                                              (line  29)
3263
* config.sim:                            Global Data Structures.
3264
                                                              (line  11)
3265
* config.vapi:                           Global Data Structures.
3266
                                                              (line  14)
3267
* configuration dynamic structure:       Global Data Structures.
3268
                                                              (line  49)
3269
* configuration file structure:          Configuration File Format.
3270
                                                              (line   6)
3271
* configuration global structure:        Global Data Structures.
3272
                                                              (line   7)
3273
* configuration info (Interactive CLI):  Interactive Command Line.
3274 1751 jeremybenn
                                                              (line 119)
3275 1748 jeremybenn
* configuration of generic peripherals:  Generic Peripheral Configuration.
3276
                                                              (line   6)
3277
* configuration parameter setting (Interactive CLI): Interactive Command Line.
3278 1751 jeremybenn
                                                              (line 146)
3279 1748 jeremybenn
* configuring branch prediction:         Branch Prediction Configuration.
3280
                                                              (line   6)
3281
* configuring data & instruction caches: Cache Configuration. (line   6)
3282
* configuring data & instruction MMUs:   Memory Management Configuration.
3283
                                                              (line   6)
3284
* configuring DMA:                       DMA Configuration.   (line   6)
3285
* configuring memory:                    Memory Configuration.
3286
                                                              (line   6)
3287
* configuring Or1ksim:                   Configuration.       (line   6)
3288
* configuring power management:          Power Management Configuration.
3289
                                                              (line   6)
3290
* configuring the ATA/ATAPI interfaces:  Disc Interface Configuration.
3291
                                                              (line   6)
3292
* configuring the behavior of Or1ksim:   Simulator Behavior.  (line   6)
3293
* configuring the CPU:                   CPU Configuration.   (line   6)
3294
* configuring the Custom Unit Compiler (CUC): CUC Configuration.
3295
                                                              (line   6)
3296
* configuring the debug unit and interface to external debuggers: Debug Interface Configuration.
3297
                                                              (line   6)
3298
* configuring the Ethernet interface:    Ethernet Configuration.
3299
                                                              (line   6)
3300
* configuring the frame buffer:          Frame Buffer Configuration.
3301
                                                              (line   6)
3302
* configuring the GPIO:                  GPIO Configuration.  (line   6)
3303
* configuring the interrupt controller:  Interrupt Configuration.
3304
                                                              (line   6)
3305
* configuring the keyboard interface:    Keyboard Configuration.
3306
                                                              (line   6)
3307
* configuring the memory controller:     Memory Controller Configuration.
3308
                                                              (line   6)
3309
* configuring the processor:             CPU Configuration.   (line   6)
3310
* configuring the PS2 interface:         Keyboard Configuration.
3311
                                                              (line   6)
3312
* configuring the UART:                  UART Configuration.  (line   6)
3313
* configuring the Verification API (VAPI): Verification API Configuration.
3314
                                                              (line   6)
3315
* configuring the VGA interface:         Display Interface Configuration.
3316
                                                              (line   6)
3317
* copying memory (Interactive CLI):      Interactive Command Line.
3318
                                                              (line  54)
3319
* CPU configuration:                     CPU Configuration.   (line   6)
3320
* CUC configuration:                     CUC Configuration.   (line   6)
3321
* Custom Unit Compiler (Interactive CLI): Interactive Command Line.
3322 1751 jeremybenn
                                                              (line 162)
3323 1748 jeremybenn
* Custom Unit Compiler Configuration:    CUC Configuration.   (line   6)
3324
* data cache configuration:              Cache Configuration. (line   6)
3325
* data MMU configuration:                Memory Management Configuration.
3326
                                                              (line   6)
3327
* DCGE (power management register):      Power Management Configuration.
3328
                                                              (line  21)
3329
* debug (Interactive CLI):               Interactive Command Line.
3330 1751 jeremybenn
                                                              (line 151)
3331 1748 jeremybenn
* debug (simulator configuration):       Simulator Behavior.  (line  13)
3332
* debug channel toggle (Interactive CLI): Interactive Command Line.
3333 1751 jeremybenn
                                                              (line 141)
3334 1748 jeremybenn
* debug interface configuration:         Debug Interface Configuration.
3335
                                                              (line   6)
3336
* debug mode toggle (Interactive CLI):   Interactive Command Line.
3337 1751 jeremybenn
                                                              (line 151)
3338 1748 jeremybenn
* debug unit configuration:              Debug Interface Configuration.
3339
                                                              (line   6)
3340
* Debug Unit verification (VAPI):        Verification API.    (line  34)
3341 1751 jeremybenn
* debugging enabled (Argtable2):         Configuring the Build.
3342
                                                              (line 121)
3343 1748 jeremybenn
* delayr (memory configuration):         Memory Configuration.
3344
                                                              (line 109)
3345
* delayw (memory configuration):         Memory Configuration.
3346
                                                              (line 115)
3347
* dependstats (CPU configuration):       CPU Configuration.   (line  84)
3348
* dev_id (ATA/ATAPI configuration):      Disc Interface Configuration.
3349
                                                              (line  36)
3350
* disassemble (Interactive CLI):         Interactive Command Line.
3351
                                                              (line  41)
3352
* disc interface configuration:          Disc Interface Configuration.
3353
                                                              (line   6)
3354
* disc interface device configuration:   Disc Interface Configuration.
3355
                                                              (line  88)
3356
* display interface configuration:       Display Interface Configuration.
3357
                                                              (line   6)
3358
* displaying memory (Interactive CLI):   Interactive Command Line.
3359
                                                              (line  31)
3360
* displaying registers (Interactive CLI): Interactive Command Line.
3361
                                                              (line  14)
3362
* dm (Interactive CLI):                  Interactive Command Line.
3363
                                                              (line  31)
3364
* dma (Ethernet configuration):          Ethernet Configuration.
3365
                                                              (line  33)
3366
* DMA configuration:                     DMA Configuration.   (line   6)
3367
* DMA verification (VAPI):               Verification API.    (line  73)
3368
* dma_mode0_td (ATA/ATAPI configuration): Disc Interface Configuration.
3369
                                                              (line  70)
3370
* dma_mode0_teoc (ATA/ATAPI configuration): Disc Interface Configuration.
3371
                                                              (line  71)
3372
* dma_mode0_tm (ATA/ATAPI configuration): Disc Interface Configuration.
3373
                                                              (line  69)
3374
* DME (power management register):       Power Management Configuration.
3375
                                                              (line  15)
3376
* DMMU configuration:                    Memory Management Configuration.
3377
                                                              (line   6)
3378
* doze mode (power management register): Power Management Configuration.
3379
                                                              (line  15)
3380
* dv (Interactive CLI):                  Interactive Command Line.
3381 1751 jeremybenn
                                                              (line 124)
3382 1748 jeremybenn
* dynamic clock gating (power management register): Power Management Configuration.
3383
                                                              (line  21)
3384 1751 jeremybenn
* dynamic model:                         Configuring the Build.
3385
                                                              (line  32)
3386 1748 jeremybenn
* dynamic ports, use of:                 Verification API Configuration.
3387
                                                              (line  23)
3388
* edge_trigger (interrupt controller):   Interrupt Configuration.
3389
                                                              (line  16)
3390
* enable_bursts (CUC configuration):     CUC Configuration.   (line  38)
3391
* enabled (ATA/ATAPI configuration):     Disc Interface Configuration.
3392
                                                              (line  18)
3393
* enabled (branch prediction configuration): Branch Prediction Configuration.
3394
                                                              (line  15)
3395
* enabled (cache configuration):         Cache Configuration. (line  11)
3396
* enabled (debug interface configuration): Debug Interface Configuration.
3397
                                                              (line  11)
3398
* enabled (DMA configuration):           DMA Configuration.   (line  20)
3399
* enabled (Ethernet configuration):      Ethernet Configuration.
3400
                                                              (line  18)
3401
* enabled (frame buffer configuration):  Frame Buffer Configuration.
3402
                                                              (line  16)
3403
* enabled (generic peripheral configuration): Generic Peripheral Configuration.
3404
                                                              (line  18)
3405
* enabled (GPIO configuration):          GPIO Configuration.  (line  17)
3406
* enabled (interrupt controller):        Interrupt Configuration.
3407
                                                              (line  12)
3408
* enabled (keyboard configuration):      Keyboard Configuration.
3409
                                                              (line  32)
3410
* enabled (memory controller configuration): Memory Controller Configuration.
3411
                                                              (line  17)
3412
* enabled (MMU configuration):           Memory Management Configuration.
3413
                                                              (line  12)
3414
* enabled (power management configuration): Power Management Configuration.
3415
                                                              (line  35)
3416
* enabled (UART configuration):          UART Configuration.  (line  18)
3417
* enabled (verification API configuration): Verification API Configuration.
3418
                                                              (line  15)
3419
* enabled (VGA configuration):           Display Interface Configuration.
3420
                                                              (line  22)
3421 1751 jeremybenn
* enabling Ethernet via socket:          Configuring the Build.
3422
                                                              (line  54)
3423 1748 jeremybenn
* entrysize (MMU configuration):         Memory Management Configuration.
3424
                                                              (line  32)
3425
* ETH_VAPI_CTRL (Ethernet verification): Verification API.    (line  86)
3426
* ETH_VAPI_DATA (Ethernet verification): Verification API.    (line  84)
3427
* Ethernet configuration:                Ethernet Configuration.
3428
                                                              (line   6)
3429
* Ethernet verification (VAPI):          Verification API.    (line  78)
3430 1751 jeremybenn
* Ethernet via socket, enabling:         Configuring the Build.
3431
                                                              (line  54)
3432 1748 jeremybenn
* exe_log (simulator configuration):     Simulator Behavior.  (line  48)
3433
* exe_log_end (simulator configuration): Simulator Behavior.  (line  88)
3434
* exe_log_file (simulator configuration): Simulator Behavior. (line  96)
3435
* exe_log_fn (simulator configuration - deprecated): Simulator Behavior.
3436
                                                              (line  96)
3437
* exe_log_marker (simulator configuration): Simulator Behavior.
3438
                                                              (line  92)
3439
* exe_log_start (simulator configuration): Simulator Behavior.
3440
                                                              (line  85)
3441
* exe_log_type (simulator configuration): Simulator Behavior. (line  54)
3442
* exe_log_type=default (simulator configuration): Simulator Behavior.
3443
                                                              (line  57)
3444
* exe_log_type=hardware (simulator configuration): Simulator Behavior.
3445
                                                              (line  61)
3446
* exe_log_type=simple (simulator configuration): Simulator Behavior.
3447
                                                              (line  68)
3448
* exe_log_type=software (simulator configuration): Simulator Behavior.
3449
                                                              (line  73)
3450
* executing code (Interactive CLI):      Interactive Command Line.
3451
                                                              (line  23)
3452
* execution history (Interactive CLI):   Interactive Command Line.
3453
                                                              (line  67)
3454
* file (ATA/ATAPI device configuration): Disc Interface Configuration.
3455
                                                              (line 104)
3456
* file (keyboard configuration):         Keyboard Configuration.
3457
                                                              (line  51)
3458
* filename (frame buffer configuration - deprecated): Frame Buffer Configuration.
3459
                                                              (line  35)
3460
* filename (VGA configuration - deprecated): Display Interface Configuration.
3461
                                                              (line  47)
3462
* firmware (ATA/ATAPI device configuration): Disc Interface Configuration.
3463
                                                              (line 117)
3464 1751 jeremybenn
* flag setting by instructions:          Configuring the Build.
3465
                                                              (line  93)
3466 1748 jeremybenn
* frame buffer configuration:            Frame Buffer Configuration.
3467
                                                              (line   6)
3468
* gdb_enabled (debug interface configuration): Debug Interface Configuration.
3469 1751 jeremybenn
                                                              (line  47)
3470 1748 jeremybenn
* generic peripheral configuration:      Generic Peripheral Configuration.
3471
                                                              (line   6)
3472
* GPIO configuration:                    GPIO Configuration.  (line   6)
3473
* GPIO verification (VAPI):              Verification API.    (line  88)
3474
* GPIO_VAPI_AUX (GPIO verification):     Verification API.    (line 100)
3475
* GPIO_VAPI_CLOCK (GPIO verification):   Verification API.    (line 103)
3476
* GPIO_VAPI_CTRL (GPIO verification):    Verification API.    (line 119)
3477
* GPIO_VAPI_DATA (GPIO verification):    Verification API.    (line  97)
3478
* GPIO_VAPI_INTE (GPIO verification):    Verification API.    (line 110)
3479
* GPIO_VAPI_PTRIG (GPIO verification):   Verification API.    (line 113)
3480
* GPIO_VAPI_RGPIO (GPIO verification):   Verification API.    (line 107)
3481
* hazards (CPU configuration):           CPU Configuration.   (line  69)
3482
* heads (ATA/ATAPI device configuration): Disc Interface Configuration.
3483
                                                              (line 121)
3484
* help (Interactive CLI):                Interactive Command Line.
3485 1751 jeremybenn
                                                              (line 170)
3486 1748 jeremybenn
* hexadecimal memory dump (Interactive CLI): Interactive Command Line.
3487 1751 jeremybenn
                                                              (line 133)
3488 1748 jeremybenn
* hide_device_id (verification API configuration): Verification API Configuration.
3489
                                                              (line  36)
3490
* hist (Interactive CLI):                Interactive Command Line.
3491
                                                              (line  67)
3492
* history (simulator configuration):     Simulator Behavior.  (line  39)
3493
* history of execution (Interactive CLI): Interactive Command Line.
3494
                                                              (line  67)
3495
* hitdelay (branch prediction configuration): Branch Prediction Configuration.
3496
                                                              (line  33)
3497
* hitdelay (instruction cache configuration): Cache Configuration.
3498
                                                              (line  38)
3499
* hitdelay (MMU configuration):          Memory Management Configuration.
3500
                                                              (line  51)
3501
* hw_enabled (generic peripheral configuration): Generic Peripheral Configuration.
3502
                                                              (line  49)
3503
* IMMU configuration:                    Memory Management Configuration.
3504
                                                              (line   6)
3505
* index (memory controller configuration): Memory Controller Configuration.
3506
                                                              (line  50)
3507
* info (Interactive CLI):                Interactive Command Line.
3508 1751 jeremybenn
                                                              (line 119)
3509 1748 jeremybenn
* installing Or1ksim:                    Installation.        (line   6)
3510
* instruction cache configuration:       Cache Configuration. (line   6)
3511
* instruction MMU configuration:         Memory Management Configuration.
3512
                                                              (line   6)
3513
* instruction profiling for Or1ksim:     Profiling Utility.   (line   6)
3514
* instruction profiling utility (Interactive CLI): Interactive Command Line.
3515 1751 jeremybenn
                                                              (line 178)
3516 1748 jeremybenn
* internal debugging:                    Internal Debugging.  (line   6)
3517
* interrupt controller configuration:    Interrupt Configuration.
3518
                                                              (line   6)
3519
* irq (ATA/ATAPI configuration):         Disc Interface Configuration.
3520
                                                              (line  32)
3521
* irq (DMA configuration):               DMA Configuration.   (line  34)
3522
* irq (GPIO configuration):              GPIO Configuration.  (line  29)
3523
* irq (keyboard configuration):          Keyboard Configuration.
3524
                                                              (line  47)
3525
* irq (UART configuration):              UART Configuration.  (line  70)
3526
* irq (VGA configuration):               Display Interface Configuration.
3527
                                                              (line  37)
3528
* jitter (UART configuration):           UART Configuration.  (line  78)
3529
* keyboard configuration:                Keyboard Configuration.
3530
                                                              (line   6)
3531
* library version of Or1ksim:            Simulator Library.   (line   6)
3532
* license for Or1ksim:                   GNU Free Documentation License.
3533
                                                              (line   6)
3534
* list breakpoints (Interactive CLI):    Interactive Command Line.
3535
                                                              (line  60)
3536
* load_hitdelay (data cache configuration): Cache Configuration.
3537
                                                              (line  46)
3538
* load_missdelay (data cache configuration): Cache Configuration.
3539
                                                              (line  50)
3540
* log (memory configuration):            Memory Configuration.
3541
                                                              (line 121)
3542
* log_enabled (verification API configuration): Verification API Configuration.
3543
                                                              (line  28)
3544
* long:                                  Simulator Library.   (line  65)
3545
* mc (memory configuration):             Memory Configuration.
3546
                                                              (line  99)
3547
* memory configuration:                  Memory Configuration.
3548
                                                              (line   6)
3549
* memory controller configuration:       Memory Controller Configuration.
3550
                                                              (line   6)
3551
* memory copying (Interactive CLI):      Interactive Command Line.
3552
                                                              (line  54)
3553
* memory display (Interactive CLI):      Interactive Command Line.
3554
                                                              (line  31)
3555
* memory dump, hexadecimal (Interactive CLI): Interactive Command Line.
3556 1751 jeremybenn
                                                              (line 133)
3557 1748 jeremybenn
* memory dump, Verilog (Interactive CLI): Interactive Command Line.
3558 1751 jeremybenn
                                                              (line 124)
3559 1748 jeremybenn
* memory patching (Interactive CLI):     Interactive Command Line.
3560
                                                              (line  48)
3561
* memory profiling end address:          Memory Profiling Utility.
3562
                                                              (line  56)
3563
* memory profiling start address:        Memory Profiling Utility.
3564
                                                              (line  56)
3565
* memory profiling utility (Interactive CLI): Interactive Command Line.
3566 1751 jeremybenn
                                                              (line 173)
3567 1748 jeremybenn
* memory profiling version of Or1ksim:   Memory Profiling Utility.
3568
                                                              (line   6)
3569
* memory_order (CUC configuration):      CUC Configuration.   (line  15)
3570
* memory_order=exact (CUC configuration): CUC Configuration.  (line  27)
3571
* memory_order=none (CUC configuration): CUC Configuration.   (line  18)
3572
* memory_order=strong (CUC configuration): CUC Configuration. (line  25)
3573
* memory_order=weak (CUC configuration): CUC Configuration.   (line  21)
3574
* missdelay (branch prediction configuration): Branch Prediction Configuration.
3575
                                                              (line  37)
3576
* missdelay (instruction cache configuration): Cache Configuration.
3577
                                                              (line  42)
3578
* missdelay (MMU configuration):         Memory Management Configuration.
3579
                                                              (line  55)
3580
* MMU configuration:                     Memory Management Configuration.
3581
                                                              (line   6)
3582
* mprof_file (simulator configuration):  Simulator Behavior.  (line  33)
3583
* mprof_fn (simulator configuration - deprecated): Simulator Behavior.
3584
                                                              (line  33)
3585
* mprofile (Interactive CLI):            Interactive Command Line.
3586 1751 jeremybenn
                                                              (line 173)
3587 1748 jeremybenn
* mprofile (simulator configuration):    Simulator Behavior.  (line  28)
3588
* mwdma (ATA/ATAPI device configuration): Disc Interface Configuration.
3589
                                                              (line 128)
3590
* name (generic peripheral configuration): Generic Peripheral Configuration.
3591
                                                              (line  42)
3592
* name (memory configuration):           Memory Configuration.
3593
                                                              (line  82)
3594
* no_multicycle (CUC configuration):     CUC Configuration.   (line  42)
3595
* nsets (cache configuration):           Cache Configuration. (line  15)
3596
* nsets (MMU configuration):             Memory Management Configuration.
3597
                                                              (line  16)
3598
* nways (cache configuration):           Cache Configuration. (line  22)
3599
* nways (MMU configuration):             Memory Management Configuration.
3600
                                                              (line  22)
3601
* or1ksim_get_time_period:               Simulator Library.   (line  55)
3602
* or1ksim_init:                          Simulator Library.   (line  18)
3603
* or1ksim_interrupt:                     Simulator Library.   (line  70)
3604
* or1ksim_is_le:                         Simulator Library.   (line  60)
3605
* or1ksim_reset_duration:                Simulator Library.   (line  40)
3606
* or1ksim_run:                           Simulator Library.   (line  35)
3607
* or1ksim_set_time_point:                Simulator Library.   (line  51)
3608
* output rediretion:                     Concepts.            (line   7)
3609 1751 jeremybenn
* overflow flag setting by instructions: Configuring the Build.
3610
                                                              (line  70)
3611 1748 jeremybenn
* packet (ATA/ATAPI device configuration): Disc Interface Configuration.
3612
                                                              (line 113)
3613
* pagesize (MMU configuration):          Memory Management Configuration.
3614
                                                              (line  27)
3615
* patching memory (Interactive CLI):     Interactive Command Line.
3616
                                                              (line  48)
3617
* patching registers (Interactive CLI):  Interactive Command Line.
3618
                                                              (line  28)
3619
* patching the program counter (Interactive CLI): Interactive Command Line.
3620
                                                              (line  51)
3621
* pattern (memory configuration):        Memory Configuration.
3622
                                                              (line  50)
3623
* pc (Interactive CLI):                  Interactive Command Line.
3624
                                                              (line  51)
3625
* PIC configuration:                     Interrupt Configuration.
3626
                                                              (line   6)
3627
* pio (ATA/ATAPI device configuration):  Disc Interface Configuration.
3628
                                                              (line 132)
3629
* pio_mode0_t1 (ATA/ATAPI configuration): Disc Interface Configuration.
3630
                                                              (line  51)
3631
* pio_mode0_t2 (ATA/ATAPI configuration): Disc Interface Configuration.
3632
                                                              (line  52)
3633
* pio_mode0_t4 (ATA/ATAPI configuration): Disc Interface Configuration.
3634
                                                              (line  53)
3635
* pio_mode0_teoc (ATA/ATAPI configuration): Disc Interface Configuration.
3636
                                                              (line  54)
3637
* pm (Interactive CLI):                  Interactive Command Line.
3638
                                                              (line  48)
3639
* PMR - DGCE:                            Power Management Configuration.
3640
                                                              (line  21)
3641
* PMR - DME:                             Power Management Configuration.
3642
                                                              (line  15)
3643
* PMR - SDF:                             Power Management Configuration.
3644
                                                              (line  12)
3645
* PMR - SME:                             Power Management Configuration.
3646
                                                              (line  16)
3647
* PMR - SUME:                            Power Management Configuration.
3648
                                                              (line  24)
3649
* PMU configuration:                     Power Management Configuration.
3650
                                                              (line   6)
3651
* poc (memory controller configuration): Memory Controller Configuration.
3652
                                                              (line  37)
3653
* port range for TCP/IP:                 Verification API Configuration.
3654
                                                              (line  23)
3655
* power management configuration:        Power Management Configuration.
3656
                                                              (line   6)
3657
* power management register, DGCE:       Power Management Configuration.
3658
                                                              (line  21)
3659
* power management register, DME:        Power Management Configuration.
3660
                                                              (line  15)
3661
* power management register, SDF:        Power Management Configuration.
3662
                                                              (line  12)
3663
* power management register, SME:        Power Management Configuration.
3664
                                                              (line  16)
3665
* power management register, SUME:       Power Management Configuration.
3666
                                                              (line  24)
3667
* pr (Interactive CLI):                  Interactive Command Line.
3668
                                                              (line  28)
3669
* private ports, use of:                 Verification API Configuration.
3670
                                                              (line  23)
3671
* processor configuration:               CPU Configuration.   (line   6)
3672
* processor stall (Interactive CLI):     Interactive Command Line.
3673
                                                              (line  72)
3674 1751 jeremybenn
* processor unstall (Interactive CLI):   Interactive Command Line.
3675
                                                              (line  78)
3676 1748 jeremybenn
* prof_file (simulator configuration):   Simulator Behavior.  (line  23)
3677
* prof_fn (simulator configuration - deprecated): Simulator Behavior.
3678
                                                              (line  23)
3679
* profile (simulator configuration):     Simulator Behavior.  (line  19)
3680
* profiling for Or1ksim:                 Profiling Utility.   (line   6)
3681
* profiling utility (Interactive CLI):   Interactive Command Line.
3682 1751 jeremybenn
                                                              (line 178)
3683 1748 jeremybenn
* program counter patching (Interactive CLI): Interactive Command Line.
3684
                                                              (line  51)
3685
* programmable interrupt controller configuration: Interrupt Configuration.
3686
                                                              (line   6)
3687
* PS2 configuration:                     Keyboard Configuration.
3688
                                                              (line   6)
3689
* q (Interactive CLI):                   Interactive Command Line.
3690
                                                              (line  11)
3691
* quitting (Interactive CLI):            Interactive Command Line.
3692
                                                              (line  11)
3693
* r (Interactive CLI):                   Interactive Command Line.
3694
                                                              (line  14)
3695
* random_seed (memory configuration):    Memory Configuration.
3696
                                                              (line  40)
3697
* refresh_rate (frame buffer configuration): Frame Buffer Configuration.
3698
                                                              (line  29)
3699
* refresh_rate (VGA configuration):      Display Interface Configuration.
3700
                                                              (line  41)
3701
* reg_sim_reset:                         Concepts.            (line  13)
3702
* register display (Interactive CLI):    Interactive Command Line.
3703
                                                              (line  14)
3704 1751 jeremybenn
* register over time statistics:         Configuring the Build.
3705
                                                              (line  64)
3706 1748 jeremybenn
* register patching (Interactive CLI):   Interactive Command Line.
3707
                                                              (line  28)
3708 1751 jeremybenn
* Remote Serial Protocol:                Debug Interface Configuration.
3709
                                                              (line  20)
3710 1748 jeremybenn
* reset (Interactive CLI):               Interactive Command Line.
3711
                                                              (line  63)
3712
* reset hooks:                           Concepts.            (line  13)
3713
* reset the simulator (Interactive CLI): Interactive Command Line.
3714
                                                              (line  63)
3715
* rev (ATA/ATAPI configuration):         Disc Interface Configuration.
3716
                                                              (line  44)
3717
* rev (CPU configuration):               CPU Configuration.   (line  15)
3718 1751 jeremybenn
* rsp_enabled (debug interface configuration): Debug Interface Configuration.
3719
                                                              (line  20)
3720
* rsp_port (debug interface configuration): Debug Interface Configuration.
3721
                                                              (line  36)
3722 1748 jeremybenn
* rtx_type (Ethernet configuration):     Ethernet Configuration.
3723
                                                              (line  46)
3724
* run (Interactive CLI):                 Interactive Command Line.
3725
                                                              (line  23)
3726
* running code (Interactive CLI):        Interactive Command Line.
3727
                                                              (line  23)
3728
* running Or1ksim:                       Usage.               (line   6)
3729
* runtime:                               Global Data Structures.
3730
                                                              (line  58)
3731
* runtime global structure:              Global Data Structures.
3732
                                                              (line  58)
3733
* runtime.cpu:                           Global Data Structures.
3734
                                                              (line  62)
3735
* runtime.cpu.fout:                      Concepts.            (line   7)
3736
* runtime.cuc:                           Global Data Structures.
3737
                                                              (line  62)
3738
* runtime.vapi:                          Global Data Structures.
3739
                                                              (line  62)
3740
* rx_channel (Ethernet configuration):   Ethernet Configuration.
3741
                                                              (line  59)
3742
* rxfile (Ethernet configuration):       Ethernet Configuration.
3743
                                                              (line  68)
3744
* sbp_bf_fwd (branch prediction configuration): Branch Prediction Configuration.
3745
                                                              (line  23)
3746
* sbp_bnf_fwd (branch prediction configuration): Branch Prediction Configuration.
3747
                                                              (line  28)
3748
* sbuf_len (CPU configuration):          CPU Configuration.   (line  96)
3749
* SDF (power management register):       Power Management Configuration.
3750
                                                              (line  12)
3751
* section ata:                           Disc Interface Configuration.
3752
                                                              (line   6)
3753
* section bpb:                           Branch Prediction Configuration.
3754
                                                              (line   6)
3755
* section cpio:                          GPIO Configuration.  (line   6)
3756
* section cpu:                           CPU Configuration.   (line   6)
3757
* section cuc:                           CUC Configuration.   (line   6)
3758
* section dc:                            Cache Configuration. (line   6)
3759
* section debug:                         Debug Interface Configuration.
3760
                                                              (line   6)
3761
* section dma:                           DMA Configuration.   (line   6)
3762
* section dmmu:                          Memory Management Configuration.
3763
                                                              (line   6)
3764
* section ethernet:                      Ethernet Configuration.
3765
                                                              (line   6)
3766
* section fb:                            Frame Buffer Configuration.
3767
                                                              (line   6)
3768
* section generic:                       Generic Peripheral Configuration.
3769
                                                              (line   6)
3770
* section ic:                            Cache Configuration. (line   6)
3771
* section immu:                          Memory Management Configuration.
3772
                                                              (line   6)
3773
* section kb:                            Keyboard Configuration.
3774
                                                              (line   6)
3775
* section mc:                            Memory Controller Configuration.
3776
                                                              (line   6)
3777
* section memory:                        Memory Configuration.
3778
                                                              (line   6)
3779
* section pic:                           Interrupt Configuration.
3780
                                                              (line   6)
3781
* section pmu:                           Power Management Configuration.
3782
                                                              (line   6)
3783
* section sim:                           Simulator Behavior.  (line   6)
3784
* section uart:                          UART Configuration.  (line   6)
3785
* section vapi:                          Verification API Configuration.
3786
                                                              (line   6)
3787
* section vga:                           Display Interface Configuration.
3788
                                                              (line   6)
3789
* sections:                              Global Data Structures.
3790
                                                              (line  49)
3791
* sectors (ATA/ATAPI device configuration): Disc Interface Configuration.
3792
                                                              (line 125)
3793
* server_port (debug interface configuration): Debug Interface Configuration.
3794 1751 jeremybenn
                                                              (line  69)
3795 1748 jeremybenn
* server_port (verification API configuration): Verification API Configuration.
3796
                                                              (line  19)
3797
* set (Interactive CLI):                 Interactive Command Line.
3798 1751 jeremybenn
                                                              (line 146)
3799 1748 jeremybenn
* set breakpoint (Interactive CLI):      Interactive Command Line.
3800
                                                              (line  57)
3801
* setdbch (Interactive CLI):             Interactive Command Line.
3802 1751 jeremybenn
                                                              (line 141)
3803
* simple model:                          Configuring the Build.
3804
                                                              (line  32)
3805 1748 jeremybenn
* simulator configuration:               Simulator Behavior.  (line   6)
3806
* simulator configuration info (Interactive CLI): Interactive Command Line.
3807 1751 jeremybenn
                                                              (line 119)
3808 1748 jeremybenn
* simulator reset (Interactive CLI):     Interactive Command Line.
3809
                                                              (line  63)
3810
* simulator statistics (Interactive CLI): Interactive Command Line.
3811 1751 jeremybenn
                                                              (line  83)
3812 1748 jeremybenn
* size (ATA/ATAPI device configuration): Disc Interface Configuration.
3813
                                                              (line 109)
3814
* size (generic peripheral configuration): Generic Peripheral Configuration.
3815
                                                              (line  30)
3816
* size (memory configuration):           Memory Configuration.
3817
                                                              (line  67)
3818
* sleep mode (power management register): Power Management Configuration.
3819
                                                              (line  16)
3820
* slow down factor (power management register): Power Management Configuration.
3821
                                                              (line  12)
3822
* SME (power management register):       Power Management Configuration.
3823
                                                              (line  16)
3824
* sockif (Ethernet configuration):       Ethernet Configuration.
3825
                                                              (line  83)
3826
* sr (CPU configuration):                CPU Configuration.   (line  53)
3827
* stall (Interactive CLI):               Interactive Command Line.
3828
                                                              (line  72)
3829
* stall the processor (Interactive CLI): Interactive Command Line.
3830
                                                              (line  72)
3831 1751 jeremybenn
* statistics, register over time:        Configuring the Build.
3832
                                                              (line  64)
3833 1748 jeremybenn
* statistics, simulation (Interactive CLI): Interactive Command Line.
3834 1751 jeremybenn
                                                              (line  83)
3835 1748 jeremybenn
* stats (Interactive CLI):               Interactive Command Line.
3836 1751 jeremybenn
                                                              (line  83)
3837 1748 jeremybenn
* stepping code (Interactive CLI):       Interactive Command Line.
3838
                                                              (line  19)
3839
* store_hitdelay (data cache configuration): Cache Configuration.
3840
                                                              (line  54)
3841
* store_missdelay (data cache configuration): Cache Configuration.
3842
                                                              (line  58)
3843
* SUME (power management register):      Power Management Configuration.
3844
                                                              (line  24)
3845
* superscalar (CPU configuration):       CPU Configuration.   (line  58)
3846
* suspend mode (power management register): Power Management Configuration.
3847
                                                              (line  24)
3848
* t (Interactive CLI):                   Interactive Command Line.
3849
                                                              (line  19)
3850
* TCP/IP port range:                     Verification API Configuration.
3851
                                                              (line  23)
3852
* TCP/IP port range for or1ksim service: Debug Interface Configuration.
3853 1751 jeremybenn
                                                              (line  74)
3854
* TCP/IP port range for or1ksim-rsp service: Debug Interface Configuration.
3855
                                                              (line  41)
3856 1748 jeremybenn
* timings_file (CUC configuration):      CUC Configuration.   (line  46)
3857
* timings_fn (CUC configuration - deprecated): CUC Configuration.
3858
                                                              (line  46)
3859
* toggle breakpoint (Interactive CLI):   Interactive Command Line.
3860
                                                              (line  57)
3861
* toggle debug channels (Interactive CLI): Interactive Command Line.
3862 1751 jeremybenn
                                                              (line 141)
3863 1748 jeremybenn
* toggle debug mode (Interactive CLI):   Interactive Command Line.
3864 1751 jeremybenn
                                                              (line 151)
3865 1748 jeremybenn
* tx_channel (Ethernet configuration):   Ethernet Configuration.
3866
                                                              (line  60)
3867
* txfile (Ethernet configuration):       Ethernet Configuration.
3868
                                                              (line  69)
3869
* txfile (frame buffer configuration):   Frame Buffer Configuration.
3870
                                                              (line  35)
3871
* txfile (VGA configuration):            Display Interface Configuration.
3872
                                                              (line  47)
3873
* type (ATA/ATAPI device configuration): Disc Interface Configuration.
3874
                                                              (line  99)
3875
* type (memory configuration):           Memory Configuration.
3876
                                                              (line  11)
3877
* type=pattern (memory configuration):   Memory Configuration.
3878
                                                              (line  21)
3879
* type=random (memory configuration):    Memory Configuration.
3880
                                                              (line  15)
3881
* type=unknown (memory configuration):   Memory Configuration.
3882
                                                              (line  25)
3883
* type=zero (memory configuration):      Memory Configuration.
3884
                                                              (line  29)
3885
* UART configuration:                    UART Configuration.  (line   6)
3886
* UART I/O from/to a physical serial port: UART Configuration.
3887
                                                              (line  62)
3888
* UART I/O from/to an xterm:             UART Configuration.  (line  38)
3889
* UART I/O from/to files:                UART Configuration.  (line  33)
3890
* UART I/O from/to open file descriptors: UART Configuration. (line  58)
3891
* UART I/O from/to TCP/IP:               UART Configuration.  (line  45)
3892
* UART verification (VAPI):              Verification API.    (line  41)
3893 1751 jeremybenn
* unstall (Interactive CLI):             Interactive Command Line.
3894
                                                              (line  78)
3895
* unstall the processor (Interactive CLI): Interactive Command Line.
3896
                                                              (line  78)
3897 1748 jeremybenn
* upr (CPU configuration):               CPU Configuration.   (line  21)
3898
* ustates (cache configuration):         Cache Configuration. (line  33)
3899
* ustates (MMU configuration):           Memory Management Configuration.
3900
                                                              (line  41)
3901
* VAPI configuration:                    Verification API Configuration.
3902
                                                              (line   6)
3903
* VAPI for Debug Unit:                   Verification API.    (line  34)
3904
* VAPI for DMA:                          Verification API.    (line  73)
3905
* VAPI for Ethernet:                     Verification API.    (line  78)
3906
* VAPI for GPIO:                         Verification API.    (line  88)
3907
* VAPI for UART:                         Verification API.    (line  41)
3908
* vapi_id (debug interface configuration): Debug Interface Configuration.
3909 1751 jeremybenn
                                                              (line  80)
3910 1748 jeremybenn
* vapi_id (DMA configuration) <1>:       Ethernet Configuration.
3911
                                                              (line  88)
3912
* vapi_id (DMA configuration):           DMA Configuration.   (line  38)
3913
* vapi_id (GPIO configuration):          GPIO Configuration.  (line  32)
3914
* vapi_id (UART configuration):          UART Configuration.  (line  85)
3915
* vapi_log_file (verification API configuration): Verification API Configuration.
3916
                                                              (line  41)
3917
* vapi_log_fn (verification API configuration - deprecated): Verification API Configuration.
3918
                                                              (line  41)
3919
* ver (CPU configuration):               CPU Configuration.   (line  15)
3920
* verbose (simulator configuration):     Simulator Behavior.  (line  10)
3921
* Verification API configuration:        Verification API Configuration.
3922
                                                              (line   6)
3923
* Verilog memory dump (Interactive CLI): Interactive Command Line.
3924 1751 jeremybenn
                                                              (line 124)
3925 1748 jeremybenn
* VGA configuration:                     Display Interface Configuration.
3926
 
3927
 
3928
                                                              (line  50)
3929
3930
3931

3932
Tag Table:
3933
Node: Top808
3934
Node: Installation1218
3935 1751 jeremybenn
Node: Preparation1448
3936
Node: Configuring the Build1741
3937
Node: Build and Install6855
3938
Node: Usage7523
3939
Node: Standalone Simulator7737
3940
Node: Profiling Utility9757
3941
Node: Memory Profiling Utility10665
3942
Node: Simulator Library12024
3943
Node: Configuration15970
3944
Node: Configuration File Format16576
3945
Node: Configuration File Preprocessing16868
3946
Node: Configuration File Syntax17238
3947
Node: Simulator Configuration20016
3948
Node: Simulator Behavior20307
3949
Node: Verification API Configuration24323
3950
Node: CUC Configuration26252
3951
Node: Core OpenRISC Configuration28157
3952
Node: CPU Configuration28659
3953
Node: Memory Configuration32449
3954
Node: Memory Management Configuration37725
3955
Node: Cache Configuration40086
3956
Node: Interrupt Configuration42452
3957
Node: Power Management Configuration43184
3958
Node: Branch Prediction Configuration44456
3959
Node: Debug Interface Configuration45809
3960
Node: Peripheral Configuration50009
3961
Node: Memory Controller Configuration50634
3962
Node: UART Configuration53231
3963
Node: DMA Configuration56737
3964
Node: Ethernet Configuration58592
3965
Node: GPIO Configuration62548
3966
Node: Display Interface Configuration64171
3967
Node: Frame Buffer Configuration66471
3968
Node: Keyboard Configuration68321
3969
Node: Disc Interface Configuration70547
3970
Node: Generic Peripheral Configuration75462
3971
Node: Interactive Command Line77746
3972
Node: Verification API84694
3973
Node: Code Internals89112
3974
Node: Coding Conventions89669
3975
Node: Global Data Structures94084
3976
Node: Concepts96736
3977
Ref: Output Redirection96881
3978
Node: Internal Debugging97418
3979
Node: GNU Free Documentation License97914

powered by: WebSVN 2.1.0

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