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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [or1ksim/] [doc/] [or1ksim.info] - Blame information for rev 440

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

Line No. Rev Author Line
1 440 jeremybenn
This is ../../doc/or1ksim.info, produced by makeinfo version 4.13 from
2
../../doc/or1ksim.texi.
3 19 jeremybenn
 
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, 2009 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
Installation follows standard GNU protocols.
50
 
51
* Menu:
52
 
53
* Preparation::
54
* Configuring the Build::
55
* Build and Install::
56
* Known Issues::
57
 
58

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

72
File: or1ksim.info,  Node: Configuring the Build,  Next: Build and Install,  Prev: Preparation,  Up: Installation
73
 
74
1.2 Configuring the Build
75
=========================
76
 
77
Configure the software using the `configure' script in the main
78
directory.
79
 
80
The most significant argument is `--target', which should specify the
81 82 jeremybenn
OpenRISC 1000 32-bit architecture.  If this argument is omitted, it will
82 19 jeremybenn
default to OpenRISC 1000 32-bit with a warning
83
 
84 440 jeremybenn
     ../or1ksim-2010-12-08/configure --target=or32-uclinux ...
85 19 jeremybenn
 
86
There are several other options available, many of which are standard
87 82 jeremybenn
to GNU `configure' scripts.  Use `configure --help' to see all the
88
options.  The most useful is `--prefix' to specify a directory for
89 19 jeremybenn
installation of the tools.
90
 
91 385 jeremybenn
For testing (using `make check'), the `--target' parameter may be
92
specified, to allow the target tool chain to be selected.  If not
93
specified, it will default to `or32-elf', which is the same prefix used
94
with the standard OpenRISC toolchain installation script.
95 19 jeremybenn
 
96 104 jeremybenn
A number of Or1ksim specific features in the simulator do require
97
enabling at configuration.  These include
98
 
99 19 jeremybenn
`--enable-profiling'
100
`--disable-profiling'
101 82 jeremybenn
     If enabled, Or1ksim is compiled for profiling with `gprof'.  This
102
     is disabled by default.  Only really of value for developers of
103 19 jeremybenn
     Or1ksim.
104
 
105
`--enable-execution=simple'
106
`--enable-execution=complex'
107
`--enable-execution=dynamic'
108
     Or1ksim has developed to improve functionality and performance.
109
     This feature allows three versions of Or1ksim to be built
110
 
111
    `--enable-execution=simple'
112
          Build the original simple interpreting simulator
113
 
114
    `--enable-execution=complex'
115 82 jeremybenn
          Build a more complex interpreting simulator.  Experiments
116
          suggest this is 50% faster than the simple simulator.  This
117
          is the default.
118 19 jeremybenn
 
119
    `--enable-execution=dynamic'
120 82 jeremybenn
          Build a dynamically compiling simulator.  This is the way
121
          many modern ISS are built.  This represents a work in
122
          progress.  Currently Or1ksim will compile, but segfaults if
123
          configured with this option.
124 19 jeremybenn
 
125
 
126
     The default is `--enable-execution=complex'.
127
 
128
`--enable-ethphy'
129
`--disable-ethphy'
130
     If enabled, this option allows the Ethernet to be simulated by
131
     connecting via a socket (the alternative reads and writes, from
132 82 jeremybenn
     and to files).  This must then be configured using the relevant
133
     fields in the `ethernet' section of the configuration file.  *Note
134 19 jeremybenn
     Ethernet Configuration: Ethernet Configuration.
135
 
136
     The default is for this to be disabled.
137
 
138 127 jeremybenn
`--enable-unsigned-xori'
139
`--disable-unsigned-xori'
140 346 jeremybenn
     Historically, `l.xori', has sign extended its operand.  This is
141 127 jeremybenn
     inconsistent with the other logical opcodes (`l.andi', `l.ori'),
142
     but in the absence of `l.not', it allows a register to be inverted
143
     in a single instruction using:
144
 
145
          `l.xori  rD,rA,-1'
146
 
147
     This flag causes Or1ksim to treat the immediate operand as
148
     unsigned (i.e to zero-extend rather than sign-extend).
149
 
150
     The default is to sign-extend, so that existing code will continue
151
     to work.
152
 
153
          Caution: The GNU compiler tool chain makes heavy use of this
154
          instruction.  Using unsigned behavior will require the
155
          compiler to be modified accordingly.
156
 
157
          This option is provided for experimentation.  A future
158
          version of OpenRISC may adopt this more consistent behavior
159
          and also provide a `l.not' opcode.
160
 
161 19 jeremybenn
`--enable-range-stats'
162
`--disable-range-stats'
163
     If enabled, this option allows statistics to be collected to
164 82 jeremybenn
     analyse register access over time.  The default is for this to be
165 19 jeremybenn
     disabled.
166
 
167
`--enable-debug'
168
`--disable-debug'
169
     This is a feature of the Argtable2 package used to process
170 82 jeremybenn
     arguments.  If enabled, some debugging features are turned on in
171
     Argtable2.  It is provided for completeness, but there is no
172
     reason why this feature should ever be needed by any Or1ksim user.
173 19 jeremybenn
 
174 82 jeremybenn
`--enable-all-tests'
175
`--disable-all-tests'
176
     Some of the tests (at the time of writing just one) will not
177
     compile without error.  If enabled with this flag, all test
178
     programs will be compiled with `make check'.
179 19 jeremybenn
 
180 82 jeremybenn
     This flag is intended for those working on the test package, who
181
     wish to get the missing test(s) working.
182
 
183
 
184 112 jeremybenn
A number of configuration flags have been removed since version 0.3.0,
185 346 jeremybenn
because they led to invalid behavior of Or1ksim.  Those removed are:
186 112 jeremybenn
 
187 124 jeremybenn
`--enable-arith-flag'
188
`--disable-arith-flag'
189
     If enabled, this option caused certain instructions to set the flag
190
     (`F' bit) in the supervision register if the result were zero.
191
     The instructions affected by this were `l.add', `l.addc',
192
     `l.addi', `l.and' and `l.andi'.
193
 
194 346 jeremybenn
     If set, this caused incorrect behavior.  Whether or not flags are
195 124 jeremybenn
     set is part of the OpenRISC 1000 architectural specification.  The
196
     only flags which should set this are the "set flag" instructions:
197
     `l.sfeq', `l.sfeqi', `l.sfges', `l.sfgesi', `l.sfgeu', `l.sfgeui',
198
     `l.sfgts', `l.sfgtsi', `l.sfgtu', `l.sfgtui', `l.sfles',
199
     `l.sflesi', `l.sfleu', `l.sfleui', `l.sflts', `l.sfltsi',
200
     `l.sfltu', `l.sfltui', `l.sfne' and `l.sfnei'.
201
 
202 112 jeremybenn
`--enable-ov-flag'
203
`--disable-ov-flag'
204 124 jeremybenn
     This flag caused certain instructions to set the overflow flag.
205
     If not, those instructions would not set the overflow flat.  The
206
     instructions affected by this were `l.add', `l.addc', `l.addi',
207
     `l.and', `l.andi', `l.div', `l.divu', `l.mul', `l.muli', `l.or',
208
     `l.ori', `l.sll', `l.slli', `l.srl', `l.srli', `l.sra', `l.srai',
209
     `l.sub', `l.xor' and `l.xori'.
210 112 jeremybenn
 
211
     This guaranteed incorrect behavior.  The OpenRISC 1000 architecture
212
     specification defines which flags are set by which instructions.
213
 
214
     Within the above list, the arithmetic instructions (`l.add',
215
     `l.addc', `l.addi', `l.div', `l.divu', `l.mul', `l.muli' and
216
     `l.sub'), together with `l.addic' which is missed out, set the
217
     overflow flag.  All the others (`l.and', `l.andi', `l.or',
218
     `l.ori', `l.sll', `l.slli', `l.srl', `l.srli', `l.sra', `l.srai',
219
     `l.xor' and `l.xori') do not.
220
 
221
 
222 19 jeremybenn

223
File: or1ksim.info,  Node: Build and Install,  Next: Known Issues,  Prev: Configuring the Build,  Up: Installation
224
 
225
1.3 Building and Installing
226
===========================
227
 
228 82 jeremybenn
Build the tool with:
229 19 jeremybenn
 
230
     make all
231 82 jeremybenn
 
232
If you have the OpenRISC tool chain and DejaGNU installed, you can
233
verify the tool as follows (otherwise omit this step):
234
 
235
     make check
236
 
237
Install the tool with:
238
 
239 19 jeremybenn
     make install
240
 
241
This will install the three variations of the Or1ksim tool,
242
`or32-uclinux-sim', `or32-uclinux-psim' and `or32-uclinux-mpsim', the
243
Or1ksim library, `libsim', the header file, `or1ksim.h' and this
244
documentation in `info' format.
245
 
246
The documentation may be created and installed in alternative formats
247
(PDF, Postscript, DVI, HTML) with for example:
248
 
249
     make pdf
250
     make install-pdf
251
 
252

253
File: or1ksim.info,  Node: Known Issues,  Prev: Build and Install,  Up: Installation
254
 
255
1.4 Known Problems and Issues
256
=============================
257
 
258 346 jeremybenn
Full details of outstanding issues may be found in the `NEWS' file in
259
the main directory of the distribution.  The OpenRISC tracker may be
260
used to see the current state of these issues and to raise new problems
261
and feature requests.  It may be found at bugtracker.
262 19 jeremybenn
 
263 346 jeremybenn
The following issues are long standing and unlikely to be fixed in
264
Or1ksim in the near future.
265
 
266 19 jeremybenn
   * The Supervision Register Little Endian Enable (LEE) bit is
267 82 jeremybenn
     ignored.  Or1ksim can be built for either little endian or big
268 19 jeremybenn
     endian use, but that behavior cannot be changed dynamically.
269
 
270
   * Or1ksim is not reentrant, so a program cannot instantiate multiple
271 82 jeremybenn
     instances using the library.  This is clearly a problem when
272
     considering multi-core applications.  However it stems from the
273
     original design, and can only be fixed by a complete rewrite.  The
274 19 jeremybenn
     entire source code uses static global constants liberally!
275
 
276
 
277

278
File: or1ksim.info,  Node: Usage,  Next: Configuration,  Prev: Installation,  Up: Top
279
 
280
2 Usage
281
*******
282
 
283
* Menu:
284
 
285
* Standalone Simulator::
286
* Profiling Utility::
287
* Memory Profiling Utility::
288
* Simulator Library::
289 440 jeremybenn
* Ethernet TUN/TAP Interface::
290 19 jeremybenn
 
291

292
File: or1ksim.info,  Node: Standalone Simulator,  Next: Profiling Utility,  Up: Usage
293
 
294
2.1 Standalone Simulator
295
========================
296
 
297
The general form the standalone command is:
298
 
299 385 jeremybenn
     or32-uclinux-sim [-vhiqVt] [-f FILE] [--nosrv] [--srv=[N]]
300 346 jeremybenn
                      [-m ][-d STR]
301 19 jeremybenn
                      [--enable-profile] [--enable-mprofile] [FILE]
302
 
303 82 jeremybenn
Many of the options have both a short and a long form.  For example
304
`-h' or `--help'.
305 19 jeremybenn
 
306
`-v'
307
`--version'
308
     Print out the version and copyright notice for Or1ksim and exit.
309
 
310
`-h'
311
`--help'
312
     Print out help about the command line options and what they mean.
313
 
314 346 jeremybenn
`-i'
315
`--interactive'
316
     After starting, drop into the Or1ksim interactive command shell.
317
 
318
`-q'
319
`--quiet'
320
     Do not generate any information messages, only error messages.
321
 
322
`-V'
323
`--verbose'
324
     Generate extra output messages (equivalent of specifying the
325
     "verbose" option in the simulator configuration section (see *note
326
     Simulator Behavior: Simulator Behavior.).
327
 
328 385 jeremybenn
`-t'
329
`--trace'
330 420 jeremybenn
     Dump instruction just executed and any register/memory location
331
     chaged after each instruction (one line per instruction).
332 385 jeremybenn
 
333 19 jeremybenn
`-f FILE'
334 385 jeremybenn
`--file=FILE'
335 19 jeremybenn
     Read configuration commands from the specified file, looking first
336
     in the current directory, and otherwise in the `$HOME/.or1k'
337 82 jeremybenn
     directory.  If this argument is not specified, the file `sim.cfg'
338
     in those two locations is used.  Failure to find the file is a
339
     fatal error.  *Note Configuration: Configuration, for detailed
340
     information on configuring Or1ksim.
341 19 jeremybenn
 
342
`--nosrv'
343 235 jeremybenn
     Do not start up the "Remote Serial Protocol" debug server.  This
344
     overrides any setting specified in the configuration file.  This
345
     option may not be specified with `--srv'.  If it is, a rude
346
     message is printed and the `--nosrv' option is ignored.
347 19 jeremybenn
 
348
`--srv'
349
 
350
`--srv=N'
351 235 jeremybenn
     Start up the "Remote Serial Protocol" debug server.  This
352
     overrides any setting specified in the configuration file.  If the
353
     parameter, N, is specified, use that as the TCP/IP port for the
354
     server, otherwise a random value from the private port range
355
     (41920-65535) will be used.  This option may not be specified with
356
     `--nosrv'.  If it is, a rude message is printed and the `--nosrv'
357
     option is ignored.
358 19 jeremybenn
 
359 385 jeremybenn
`-m SIZE'
360 346 jeremybenn
`--memory=SIZE'
361
     Configure a memory block of SIZE bytes, starting at address zero.
362
     The size may be followed by `k', `K', `m', `M', `g', `G', to
363
     indicate kilobytes (2^10 bytes), megabytes (2^20 bytes) and
364
     gigabytes (2^30 bytes).
365
 
366
     This is mainly intended for use when Or1ksim is used without a
367
     configuration file, to allow just the processor and memory to be
368
     set up.  This is the equivalent of specifying a configuration
369
     memory section with `baseaddr = 0' and `size = SIZE' and all other
370
     parameters taking their default value.
371
 
372
     If a configuration file is also used, it should be sure not to
373
     specify an overlapping memory block.
374
 
375 385 jeremybenn
`-d CONFIG_STRING'
376 19 jeremybenn
`--debug-config=CONFIG_STRING'
377 82 jeremybenn
     Enable selected debug messages in Or1ksim.  This parameter is for
378
     use by developers only, and is not covered further here.  See the
379 19 jeremybenn
     source code for more details.
380
 
381 346 jeremybenn
`--report-memory-errors'
382
     By default all exceptions are now handled silently.  If this
383
     option is specified, bus exceptions will be reported with a
384
     message to standard error indicating the address at which the
385
     exception occurred.
386 19 jeremybenn
 
387 346 jeremybenn
     This was the default behaviour up to Or1ksim 0.4.0.  This flag is
388
     provided for those who wish to keep that behavior.
389
 
390 19 jeremybenn
`--strict-npc'
391
     In real hardware, setting the next program counter (NPC, SPR 16),
392 82 jeremybenn
     flushes the processor pipeline.  The consequence of this is that
393
     until the pipeline refills, reading the NPC will return zero.
394
     This is typically the case when debugging, since the processor is
395 19 jeremybenn
     stalled.
396
 
397
     Historically, Or1ksim has always returned the value of the NPC,
398 82 jeremybenn
     irrespective of when it is changed.  If the `--strict-npc' option
399
     is used, then Or1ksim will mirror real hardware more accurately.
400
     If the NPC is changed while the processor is stalled, subsequent
401 19 jeremybenn
     reads of its value will return 0 until the processor is unstalled.
402
 
403
     This is not currently the default behavior, since tools such as
404
     GDB have been implemented assuming the historic Or1ksim behavior.
405
     However at some time in the future it will become the default.
406
 
407
`--enable-profile'
408
     Enable instruction profiling.
409
 
410
`--enable-mprofile'
411
     Enable memory profiling.
412
 
413
 
414

415
File: or1ksim.info,  Node: Profiling Utility,  Next: Memory Profiling Utility,  Prev: Standalone Simulator,  Up: Usage
416
 
417
2.2 Profiling Utility
418
=====================
419
 
420 82 jeremybenn
This utility analyses instruction profile data generated by Or1ksim.
421
It may be invoked as a standalone command, or from the Or1ksim CLI.
422
The general form the standalone command is:
423 19 jeremybenn
 
424
     or32-uclinux-profile [-vhcq] [-g=FILE]
425
 
426 82 jeremybenn
Many of the options have both a short and a long form.  For example
427
`-h' or `--help'.
428 19 jeremybenn
 
429
`-v'
430
`--version'
431
     Print out the version and copyright notice for the Or1ksim
432
     profiling utility and exit.
433
 
434
`-h'
435
`--help'
436
     Print out help about the command line options and what they mean.
437
 
438
`-c'
439
`--cumulative'
440
     Show cumulative sum of cycles in functions
441
 
442
`-q'
443
`--quiet'
444
     Suppress messages
445
 
446
`-g=FILE'
447
`--generate=FILE'
448 82 jeremybenn
     The data file to analyse.  If omitted, the default file,
449 19 jeremybenn
     `sim.profile' is used.
450
 
451
 
452

453
File: or1ksim.info,  Node: Memory Profiling Utility,  Next: Simulator Library,  Prev: Profiling Utility,  Up: Usage
454
 
455
2.3 Memory Profiling Utility
456
============================
457
 
458 82 jeremybenn
This utility analyses memory profile data generated by Or1ksim.  It may
459
be invoked as a standalone command, or from the Or1ksim CLI.  The
460 19 jeremybenn
general form the standalone command is:
461
 
462
     or32-uclinux-mprofile  [-vh] [-m=M] [-g=N] [-f=FILE] FROM TO
463
 
464 82 jeremybenn
Many of the options have both a short and a long form.  For example
465
`-h' or `--help'.
466 19 jeremybenn
 
467
`-v'
468
`--version'
469
     Print out the version and copyright notice for the Or1ksim memory
470
     profiling utility and exit.
471
 
472
`-h'
473
`--help'
474
     Print out help about the command line options and what they mean.
475
 
476
`-m=M'
477
`--mode=M'
478 82 jeremybenn
     Specify the mode out output.  Permitted options are
479 19 jeremybenn
 
480
    `detailed'
481
    `d'
482 82 jeremybenn
          Detailed output.  This is the default if no mode is specified.
483 19 jeremybenn
 
484
    `pretty'
485
    `p'
486
          Pretty printed output.
487
 
488
    `access'
489
    `a'
490
          Memory accesses only.
491
 
492
    `width'
493
    `w'
494
          Access width only.
495
 
496
 
497
`-g=N'
498
`--group=N'
499
     Group 2^n bits of successive addresses together.
500
 
501
`-f=FILE'
502
`--filename=FILE'
503 82 jeremybenn
     The data file to analyse.  If not specified, the default,
504 19 jeremybenn
     `sim.profile' is used.
505
 
506
`FROM'
507
`TO'
508
     FROM and TO are respectively the start and end address of the
509
     region of memory to be analysed.
510
 
511
 
512

513 440 jeremybenn
File: or1ksim.info,  Node: Simulator Library,  Next: Ethernet TUN/TAP Interface,  Prev: Memory Profiling Utility,  Up: Usage
514 19 jeremybenn
 
515
2.4 Simulator Library
516
=====================
517
 
518
Or1ksim may be used as a static of dynamic library, `libsim.a' or
519 82 jeremybenn
`libsim.so'.  When compiling with the static library, the flag, `-lsim'
520 19 jeremybenn
should be added to the link command.
521
 
522
The header file `or1ksim.h' contains appropriate declarations of the
523 82 jeremybenn
functions exported by the Or1ksim library.  These are:
524 19 jeremybenn
 
525 346 jeremybenn
 -- `or1ksim.h': int or1ksim_init (int ARGC, char *ARGV, void
526 432 jeremybenn
          *CLASS_PTR, int (*UPR)(void *CLASS_PTR, unsigned long int
527
          ADDR, unsigned char MASK[], unsigned char RDATA[], int
528
          DATA_LEN), int (*UPW)(void *CLASS_PTR, unsigned long int
529
          ADDR, unsigned char MASK[], unsigned char WDATA[], int
530
          DATA_LEN))
531 346 jeremybenn
     The initialization function is supplied with a vector of arguments,
532
     which are interpreted as arguments to the standalone version (see
533
     *note Standalone Simulator: Standalone Simulator.), a pointer to
534
     the calling class, CLASS_PTR (since the library may be used from
535
     C++) and two up-call functions, one for reads, UPR, and one for
536
     writes, UPW.
537 19 jeremybenn
 
538
     UPW is called for any write to an address external to the model
539 82 jeremybenn
     (determined by a `generic' section in the configuration file).
540
     UPR is called for any reads to an external address.  The CLASS_PTR
541
     is passed back with these upcalls, allowing the function to
542
     associate the call with the class which originally initialized the
543 93 jeremybenn
     library.  Both UPW and UPR should return zero on success and
544
     non-zero otherwise.  At the present time the meaning of non-zero
545
     values is not defined but this may change in the future.
546 19 jeremybenn
 
547 93 jeremybenn
     MASK indicates which bytes in the data are to be written or read.
548 82 jeremybenn
     Bytes to be read/written should have 0xff set in MASK.  Otherwise
549 93 jeremybenn
     the byte should be zero.  The adddress, ADDR, is the _full_
550
     address, since the upcall function must handle all generic
551
     devices, using the full address for decoding.
552 19 jeremybenn
 
553 346 jeremybenn
     Endianness is not a concern, since Or1ksim is transferring byte
554
     vectors, not multi-byte values.
555 19 jeremybenn
 
556 346 jeremybenn
     The result indicates whether the initialization was successful.
557
     The integer values are available as an `enum or1ksim', with
558
     possible values `OR1KSIM_RC_OK' and `OR1KSIM_RC_BADINIT'.
559 19 jeremybenn
 
560 346 jeremybenn
          Caution: This is a change from versions 0.3.0 and 0.4.0.  It
561
          further simplifies the interface, and makes Or1ksim more
562
          consistent with payload representation in SystemC TLM 2.0.
563
 
564 93 jeremybenn
          Note: The current implementation of Or1ksim always transfers
565
          single words (4 bytes), using masks if smaller values are
566
          required.  In this it mimcs the behavior of the WishBone bus.
567
 
568
 
569 19 jeremybenn
 -- `or1ksim.h': int or1ksim_run (double DURATION)
570
     Run the simulator for the simulated duration specified (in
571 346 jeremybenn
     seconds).  A duration of -1 indicates `run forever'
572 19 jeremybenn
 
573 346 jeremybenn
     The result indicates how the run terminated.  The integer values
574
     are available as an `enum or1ksim', with possible values
575
     `OR1KSIM_RC_OK' (ran for the full duration), `OR1KSIM_RC_BRKPT'
576
     (terminated early due to hitting a breakpoint) and
577
     `OR1KSIM_RC_HALTED' (terminated early due to hitting `l.nop 1').
578 19 jeremybenn
 
579 346 jeremybenn
 
580 19 jeremybenn
 -- `or1ksim.h': void or1ksim_reset_duration (double DURATION)
581
     Change the duration of a run specified in an earlier call to
582 82 jeremybenn
     `or1ksim_run'.  Typically this is called from an upcall, which
583 19 jeremybenn
     realizes it needs to change the duration of the run specified in
584
     the call to `or1ksim_run' that has been interrupted by the upcall.
585
 
586
     The time specified is the amount of time that the run must continue
587
     for (i.e the duration from _now_, not the duration from the
588
     original call to `or1ksim_run').
589
 
590
 
591
 -- `or1ksim.h': void or1ksim_set_time_point ()
592 82 jeremybenn
     Set a timing point.  For use with `or1ksim_get_time_period'.
593 19 jeremybenn
 
594
 
595
 -- `or1ksim.h': double or1ksim_get_time_period ()
596
     Return the simulated time (in seconds) that has elapsed since the
597
     last call to `or1ksim_set_time_point'.
598
 
599
 
600
 -- `or1ksim.h': int or1ksim_is_le ()
601
     Return 1 (logical true) if the Or1ksim simulation is
602
     little-endian, 0 otherwise.
603
 
604
 
605
 -- `or1ksim.h': unsigned long int or1ksim_clock_rate ()
606 82 jeremybenn
     Return the Or1ksim clock rate (in Hz).  This is the value
607
     specified in the configuration file.
608 19 jeremybenn
 
609
 
610
 -- `or1ksim.h': void or1ksim_interrupt (int I)
611 82 jeremybenn
     Generate an edge-triggered interrupt on interrupt line I.  The
612 432 jeremybenn
     interrupt must be cleared separately by clearing the corresponding
613
     bit in the PICSR SPR.  Until the interrupt is cleared, any further
614
     interrupts on the same line will be ignored with a warning.  A
615
     warning will be generated and the interrupt request ignored if
616
     level sensitive interrupts have been configured with the
617
     programmable interrupt controller (*note Interrupt Configuration:
618
     Interrupt Configuration.).
619 19 jeremybenn
 
620
 
621
 -- `or1ksim.h': void or1ksim_interrupt_set (int I)
622 82 jeremybenn
     Assert a level-triggered interrupt on interrupt line I.  The
623 19 jeremybenn
     interrupt must be cleared separately by an explicit call to
624 432 jeremybenn
     `or1ksim_interrupt_clear'.  Until the interrupt is cleared, any
625
     further setting of interrupts on the same line will be ignored
626
     with a warning.  A warning will be generated, and the interrupt
627
     request ignored if edge sensitive interrupts have been configured
628
     with the programmable interrupt controller (*note Interrupt
629
     Configuration: Interrupt Configuration.).
630 19 jeremybenn
 
631
 
632
 -- `or1ksim.h': void or1ksim_interrupt_clear (int I)
633
     Clear a level-triggered interrupt on interrupt line I, which was
634 82 jeremybenn
     previously asserted by a call to `or1ksim_interrupt_set'.  A
635 19 jeremybenn
     warning will be generated, and the interrupt request ignored if
636
     edge sensitive interrupts have been configured with the
637
     programmable interrupt controller (*note Interrupt Configuration:
638
     Interrupt Configuration.).
639
 
640
 
641 104 jeremybenn
 -- `or1ksim.h': double or1ksim_jtag_reset ()
642 346 jeremybenn
     Drive a reset sequence through the JTAG interface.  Return the
643 104 jeremybenn
     (model) time taken for this action.  Remember that the JTAG has
644
     its own clock, which can be an order of magnitude slower than the
645
     main clock, so even a reset (5 JTAG cycles) could take 50
646
     processor clock cycles to complete.
647
 
648
 
649 432 jeremybenn
 -- `or1ksim.h': double or1ksim_jtag_shift_ir (unsigned char *JREG, int
650
          NUM_BITS)
651 104 jeremybenn
     Shift the supplied register through the JTAG instruction register.
652 346 jeremybenn
     Return the (model) time taken for this action.  The register is
653 104 jeremybenn
     supplied as a byte vector, with the least significant bits in the
654
     least significant byte.  If the total number of bits is not an
655
     exact number of bytes, then the odd bits are found in the least
656
     significant end of the highest numbered byte.
657
 
658
     For example a 12-bit register would have bits 0-7 in byte 0 and
659
     bits 11-8 in the least significant 4 bits of byte 1.
660
 
661
 
662 432 jeremybenn
 -- `or1ksim.h': double or1ksim_jtag_shift_dr (unsigned char *JREG, int
663
          NUM_BITS)
664 104 jeremybenn
     Shift the supplied register through the JTAG data register.
665 346 jeremybenn
     Return the (model) time taken for this action.  The register is
666 104 jeremybenn
     supplied as a byte vector, with the least significant bits in the
667
     least significant byte.  If the total number of bits is not an
668
     exact number of bytes, then the odd bits are found in the least
669
     significant end of the highest numbered byte.
670
 
671
     For example a 12-bit register would have bits 0-7 in byte 0 and
672
     bits 11-8 in the least significant 4 bits of byte 1.
673
 
674
 
675 432 jeremybenn
 -- `or1ksim.h': int or1ksim_read_mem (unsigned long int ADDR, unsigned
676
          char *BUF, int LEN)
677 346 jeremybenn
     Read LEN bytes from ADDR, placing the result in BUF.  Return LEN
678
     on success and 0 on failure.
679
 
680
          Note: This function was added in Or1ksim 0.5.0.
681
 
682
 
683 432 jeremybenn
 -- `or1ksim.h': int or1ksim_write_mem (unsigned long int ADDR, const
684
          unsigned char *BUF, int LEN)
685 346 jeremybenn
     Write LEN bytes to ADDR, taking the data from BUF.  Return LEN on
686
     success and 0 on failure.
687
 
688
          Note: This function was added in Or1ksim 0.5.0.
689
 
690
 
691 432 jeremybenn
 -- `or1ksim.h': int or1ksim_read_spr (int SPRNUM, unsigned long int
692
          *SPRVAL_PTR)
693 346 jeremybenn
     Read the SPR specified by SPRNUM, placing the result in
694
     SPRVAL_PTR.  Return non-zero on success and 0 on failure.
695
 
696
          Note: This function was added in Or1ksim 0.5.0.
697
 
698
 
699 432 jeremybenn
 -- `or1ksim.h': int or1ksim_write_spr (int SPRNUM, unsigned long int
700
          SPRVA)
701 346 jeremybenn
     Write SPRVAL to the SPR specified by SPRNUM.  Return non-zero on
702
     success and 0 on failure.
703
 
704
          Note: This function was added in Or1ksim 0.5.0.
705
 
706
 
707 432 jeremybenn
 -- `or1ksim.h': int or1ksim_read_reg (int REGNUM, unsigned long int
708
          *REGVAL_PTR)
709 346 jeremybenn
     Read the general purpose register specified by REGNUM, placing the
710
     result in REGVAL_PTR.  Return non-zero on success and 0 on failure.
711
 
712
          Note: This function was added in Or1ksim 0.5.0.
713
 
714
 
715 432 jeremybenn
 -- `or1ksim.h': int or1ksim_write_reg (int REGNUM, unsigned long int
716
          REGVA)
717 346 jeremybenn
     Write REGVAL to the general purpose register specified by REGNUM.
718
     Return non-zero on success and 0 on failure.
719
 
720
          Note: This function was added in Or1ksim 0.5.0.
721
 
722
 
723 432 jeremybenn
 -- `or1ksim.h': void or1ksim_set_stall_state (int STATE)
724 346 jeremybenn
     Set the processor's state according to STATE (1 = stalled, 0 = not
725
     stalled).
726
 
727
          Note: This function was added in Or1ksim 0.5.0.
728
 
729
 
730 19 jeremybenn
The libraries will be installed in the `lib' sub-directory of the main
731
installation directory (as specified with the `--prefix' option to the
732
`configure' script).
733
 
734
For example if the main installation directory is `/opt/or1ksim', the
735 82 jeremybenn
library will be found in the `/opt/or1ksim/lib' directory.  It is
736 19 jeremybenn
available as both a static library (`libsim.a') and a shared object
737
(`libsim.so').
738
 
739
To link against the library add the `-lsim' flag when linking and do
740
one of the following:
741
 
742
   * Add the library directory to the `LD_LIBRARY_PATH' environment
743 82 jeremybenn
     variable during execution.  For example:
744 19 jeremybenn
 
745
          export LD_LIBRARY_PATH=/opt/or1ksim/lib:$LD_LIBRARY_PATH
746
 
747
   * Add the library directory to the `LD_RUN_PATH' environment
748 82 jeremybenn
     variable during linking.  For example:
749 19 jeremybenn
 
750
          export LD_RUN_PATH=/opt/or1ksim/lib:$LD_RUN_PATH
751
 
752
   * Use the linker `--rpath' option and specify the library directory
753 82 jeremybenn
     when linking your program.  For example
754 19 jeremybenn
 
755 82 jeremybenn
          gcc ...  -Wl,--rpath -Wl,/opt/or1ksim/lib ...
756 19 jeremybenn
 
757
   * Add the library directory to `/etc/ld.so.conf'
758
 
759
 
760

761 440 jeremybenn
File: or1ksim.info,  Node: Ethernet TUN/TAP Interface,  Prev: Simulator Library,  Up: Usage
762
 
763
2.5 Ethernet TUN/TAP Interface
764
==============================
765
 
766
When an Ethernet peripheral is configured (*note Ethernet
767
Configuration: Ethernet Configuration.), one option is to tunnel
768
traffic through a TUN/TAP interface.  The low level TAP interface is
769
used to tunnel raw Ethernet datagrams.
770
 
771
The TAP interface can then be connected to a physical Ethernet through a
772
bridge, allowing the Or1ksim model to connect to a physical network.
773
This is particularly when Or1ksim is running the OpenRISC Linux kernel
774
image.
775
 
776
This section explains how to set up a bridge for use by Or1ksim. It does
777
require superuser access to the host machine (or at least the relevant
778
network capabilities). A system administrator can modify these
779
guidelines so they are executed on reboot if appropriate.
780
 
781
* Menu:
782
 
783
* Setting Up a Persistent TAP device::
784
* Establishing a Bridge::
785
* Opening the Firewall::
786
* Disabling Ethernet Filtering::
787
* Networking from OpenRISC Linux and BusyBox::
788
* Tearing Down a Bridge::
789
 
790

791
File: or1ksim.info,  Node: Setting Up a Persistent TAP device,  Next: Establishing a Bridge,  Up: Ethernet TUN/TAP Interface
792
 
793
2.5.1 Setting Up a Persistent TAP device
794
----------------------------------------
795
 
796
TUN/TAP devices can be created dynamically, but this requires superuser
797
privileges (or at least `CAP_NET_ADMIN' capability).  The solution is
798
to create a persistent TAP device.  This can be done using either
799
`openvpn' or `tunctl'.  In either case the package must be installed on
800
the host system.  Using `openvpn', the following would set up a TAP
801
interface for a specified user and group.
802
 
803
     openvpn --mktun --dev tap_n_ --user _username_ --group _groupname_
804
 
805

806
File: or1ksim.info,  Node: Establishing a Bridge,  Next: Opening the Firewall,  Prev: Setting Up a Persistent TAP device,  Up: Ethernet TUN/TAP Interface
807
 
808
2.5.2 Establishing a Bridge
809
---------------------------
810
 
811
A bridge is a "virtual" local area network interfaces, subsuming two or
812
more existing network interfaces.  In this case we will bridge the
813
physical Ethernet interface of the host with the TAP interface that
814
will be used by Or1ksim.
815
 
816
The Ethernet and TAP must lose their own individual IP addresses (by
817
setting them to 0.0.0.0) and are replaced by the IP address of the
818
bridge interface. To do this we use the `bridge-utils' package, which
819
must be installed on the host system. These commands are require
820
superuser privileges or `CAP_NET_ADMIN' capability. To create a new
821
interface `br_n_' the following commands are appropriate.
822
 
823
     brctl addbr br_n_
824
     brctl addif br_n_ eth_x_
825
     brctl addif br_n_ tap_y_
826
 
827
     ifconfig eth_x_ 0.0.0.0 promisc up
828
     ifconfig tap_y_ 0.0.0.0 promisc up
829
 
830
     dhclient br_n_
831
 
832
The last command instructs the bridge to obtain its IP address, netmask,
833
broadcast address, gateway and nameserver information using DHCP.  In a
834
network without DHCP it should be replaced by `ifconfig' to set a
835
static IP address, netmask and broadcast address.
836
 
837
     Note: This will leave a spare dhclient process running in the
838
     background, which should be killed for tidiness. There is a
839
     technique to avoid this using `omshell', but that is beyond the
840
     scope of this guide.
841
 
842
     Note: It is not clear to the author why the existing interfaces
843
     need to be brought up in promiscuous mode, but it seems to cure
844
     various problems.
845
 
846

847
File: or1ksim.info,  Node: Opening the Firewall,  Next: Disabling Ethernet Filtering,  Prev: Establishing a Bridge,  Up: Ethernet TUN/TAP Interface
848
 
849
2.5.3 Opening the Firewall
850
--------------------------
851
 
852
Firewall rules should be added to ensure traffic flows freely through
853
the TAP and bridge interfaces. As superuser the following commands are
854
appropriate.
855
 
856
     iptables -A INPUT -i tap_y_ -j ACCEPT
857
     iptables -A INPUT -i br_n_ -j ACCEPT
858
     iptables -A FORWARD -i br_n_ -j ACCEPT
859
 
860

861
File: or1ksim.info,  Node: Disabling Ethernet Filtering,  Next: Networking from OpenRISC Linux and BusyBox,  Prev: Opening the Firewall,  Up: Ethernet TUN/TAP Interface
862
 
863
2.5.4 Disabling Ethernet Filtering
864
----------------------------------
865
 
866
Some systems may have ethernet filtering enabled (`ebtables',
867
`bridge-nf', `arptables') which will stop traffic flowing through the
868
bridge.
869
 
870
The easiest way to disable this is by writing zero to all `bridge-nf-*'
871
entries in `/proc/sys/net/bridge'. As superuser the following commands
872
will achieve this.
873
 
874
     cd /proc/sys/net/bridge
875
     for f in bridge-nf-*; do echo 0 > $f; done
876
 
877

878
File: or1ksim.info,  Node: Networking from OpenRISC Linux and BusyBox,  Next: Tearing Down a Bridge,  Prev: Disabling Ethernet Filtering,  Up: Ethernet TUN/TAP Interface
879
 
880
2.5.5 Networking from OpenRISC Linux and BusyBox
881
------------------------------------------------
882
 
883
The main use of this style of Ethernet interface to Or1ksim is when
884
running the OpenRISC Linux kernel with BusyBox. The following commands
885
in the BusyBox console window will configure the Ethernet interface
886
(assumed to be `eth0') and bring it up with a DHCP assigned address.
887
 
888
     ifconfig eth0
889
     ifup eth0
890
 
891
At this stage interface to IP addresses will work correctly.
892
 
893
For DNS to work the BusyBox system needs to know where to find a
894
nameserver.  Under BusyBox, `udhcp' does not configure
895
`/etc/resolv.conf' automatically.
896
 
897
The solution is to duplicate the nameserver entry from the
898
`/etc/resolv.conf' file of the host on the BusyBox system. A typical
899
file might be as follows:
900
 
901
     `nameserver 192.168.0.1'
902
 
903
It is convenient to make this permanent within the Linux initramfs. Add
904
the file as `arch/openrisc/support/initramfs/etc/resolv.conf' within
905
the Linux source tree and rebuild `vmlinux'. It will then be present
906
automatically.
907
 
908
One of the most useful functions that is possible is to mount the host
909
file system through NFS. For example, from the BusyBox console:
910
 
911
     mount -t nfs -o nolock 192.168.0.60:/home /mnt
912
 
913
Another useful technique is to telnet into the BusyBox system from the
914
host. This is particularly valuable when a console process locks up,
915
since the `xterm' console will not recognize ctrl-C. Instead the rogue
916
process can be killed from a telnet connection.
917
 
918

919
File: or1ksim.info,  Node: Tearing Down a Bridge,  Prev: Networking from OpenRISC Linux and BusyBox,  Up: Ethernet TUN/TAP Interface
920
 
921
2.5.6 Tearing Down a Bridge
922
---------------------------
923
 
924
There is little reason why a bridge should ever need to be torn down,
925
but if desired, the following commands will achieve the effect.
926
 
927
     ifconfig br_n_ down
928
     brctl delbr br_n_
929
 
930
     dhclient eth_x_
931
 
932
As before this will leave a spare `dhclient' process in the background
933
which should be killed.
934
 
935
If desired the TAP interface can be deleted using
936
 
937
     openvpn --rmtun -dev tap_y_
938
 
939
     Caution: The TAP interface should not be in use when running this
940
     command. For example any OpenRISC Linux/BusyBox sessions should be
941
     closed first.
942
 
943

944 19 jeremybenn
File: or1ksim.info,  Node: Configuration,  Next: Interactive Command Line,  Prev: Usage,  Up: Top
945
 
946
3 Configuration
947
***************
948
 
949 82 jeremybenn
Or1ksim is configured through a configuration file.  This is specified
950 19 jeremybenn
through the `-f' parameter to the Or1ksim command, or passed as a
951 82 jeremybenn
string when initializing the Or1ksim library.  If no file is specified,
952
the default `sim.cfg' is used.  The file is looked for first in the
953 224 jeremybenn
current directory, then in the `$HOME/.or1ksim' directory of the user.
954 19 jeremybenn
 
955
* Menu:
956
 
957
* Configuration File Format::
958
* Simulator Configuration::
959
* Core OpenRISC Configuration::
960
* Peripheral Configuration::
961
 
962

963
File: or1ksim.info,  Node: Configuration File Format,  Next: Simulator Configuration,  Up: Configuration
964
 
965
3.1 Configuration File Format
966
=============================
967
 
968 346 jeremybenn
The configuration file is a plain text file.  A reference example,
969
`sim.cfg', is included in the top level directory of the distribution.
970 19 jeremybenn
 
971
* Menu:
972
 
973
* Configuration File Preprocessing::
974
* Configuration File Syntax::
975
 
976

977
File: or1ksim.info,  Node: Configuration File Preprocessing,  Next: Configuration File Syntax,  Up: Configuration File Format
978
 
979
3.1.1 Configuration File Preprocessing
980
--------------------------------------
981
 
982 82 jeremybenn
The configuration file may include C style comments (i.e.  delimited by
983 19 jeremybenn
`/*' and `*/').
984
 
985

986
File: or1ksim.info,  Node: Configuration File Syntax,  Prev: Configuration File Preprocessing,  Up: Configuration File Format
987
 
988
3.1.2 Configuration File Syntax
989
-------------------------------
990
 
991
The configuration file is divided into a series of sections, with the
992
general form:
993
 
994
     section SECTION_NAME
995
 
996
       ...
997
 
998
     end
999
 
1000
Sections may also have sub-sections within them (currently only the
1001
ATA/ATAPI disc interface uses this).
1002
 
1003
Within a section, or sub-section are a series of parameter assignments,
1004
one per line, withe the general form
1005
 
1006
       PARAMETER = VALUE
1007
 
1008
Depending on the parameter, the value may be a named value (an
1009
enumeration), an integer (specified in any format acceptable in C) or a
1010 82 jeremybenn
string in doubple quotes.  For flag parameters, the value 1 is used to
1011
mean "true" or "on" and the value "0" to mean "false" or "off".  An
1012 19 jeremybenn
example from a memory section shows each of these
1013
 
1014
     section memory
1015
       type    = random
1016
       pattern = 0x00
1017
       name    = "FLASH"
1018
       ...
1019
     end
1020
 
1021
Many parameters are optional and take reasonable default values if not
1022 82 jeremybenn
specified.  However there are some parameters (for example the `ce'
1023 19 jeremybenn
parameter in `section memory') _must_ be specified.
1024
 
1025
Subsections are introduced by a keyword, with a parameter value (no `='
1026 82 jeremybenn
sign), and end with the same keyword prefixed by `end'.  Thus the
1027 19 jeremybenn
ATA/ATAPI inteface (`section ata') has a `device' subsection, thus:
1028
 
1029
     section ata
1030
       ...
1031
       device 0
1032
         type    = 1
1033
         file = "FILENAME"
1034
         ...
1035
       enddevice
1036
       ...
1037
     end
1038
 
1039
Some sections (for example `section sim') should appear only once.
1040
Others (for example `section memory' may appear multiple times.
1041
 
1042
Sections may be omitted, _unless they contain parameters which are
1043 82 jeremybenn
non-optional_.  If the section describes a part of the simulator which
1044 19 jeremybenn
is optional (for example whether it has a UART), then that
1045 82 jeremybenn
functionality will not be provided.  If the section describes a part of
1046 19 jeremybenn
the simulator which is not optional (for example the CPU), then all the
1047
parameters of that section will take their default values.
1048
 
1049
All optional parts of the functionality are always described by
1050
sections including a `enabled' parameter, which can be set to 0 to
1051
ensure that functionality is explicitly omitted.
1052
 
1053
Even if a section is disabled, all its parameters will be read and
1054 82 jeremybenn
stored.  This is helpful if the section is subsequently enabled from
1055
the Or1ksim command line (*note Interactive Command Line: Interactive
1056 19 jeremybenn
Command Line.).
1057
 
1058
     Tip: It generally clearer to have sections describing _all_
1059
     components, with omitted functionality explicitly indicated by
1060
     setting the `enabled' parameter to 0
1061
 
1062
The following sections describe the various configuration sections and
1063
the parameters which may be set in each.
1064
 
1065

1066
File: or1ksim.info,  Node: Simulator Configuration,  Next: Core OpenRISC Configuration,  Prev: Configuration File Format,  Up: Configuration
1067
 
1068
3.2 Simulator Configuration
1069
===========================
1070
 
1071
* Menu:
1072
 
1073
* Simulator Behavior::
1074
* Verification API Configuration::
1075
* CUC Configuration::
1076
 
1077

1078
File: or1ksim.info,  Node: Simulator Behavior,  Next: Verification API Configuration,  Up: Simulator Configuration
1079
 
1080
3.2.1 Simulator Behavior
1081
------------------------
1082
 
1083 82 jeremybenn
Simulator behavior is described in `section sim'.  This section should
1084
appear only once.  The following parameters may be specified.
1085 19 jeremybenn
 
1086
`verbose = 0|1'
1087 82 jeremybenn
     If 1 (true), print extra messages.  Default 0.
1088 19 jeremybenn
 
1089
`debug = 0-9'
1090 82 jeremybenn
 
1091
     higher the value the greater the number of messages.  Default 0.
1092
     Negative values will be treated as 0 (with a warning).  Values
1093
     that are too large will be treated as 9 (with a warning).
1094 19 jeremybenn
 
1095
`profile = 0|1'
1096
     If 1 (true) generate a profiling file using the file specified in
1097 82 jeremybenn
     the `prof_file' parameter or otherwise `sim.profile'.  Default 0.
1098 19 jeremybenn
 
1099
`prof_file = ``FILENAME'''
1100 82 jeremybenn
     Specifies the file to be used with the `profile' parameter.
1101
     Default `sim.profile'.  For backwards compatibility, the
1102
     alternative name `prof_fn' is supported for this parameter, but
1103 346 jeremybenn
     deprecated.  Default `sim.profile'.
1104 19 jeremybenn
 
1105
`mprofile = 0|1'
1106
     If 1 (true) generate a memory profiling file using the file
1107
     specified in the `mprof_file' parameter or otherwise
1108 82 jeremybenn
     `sim.mprofile'.  Default 0.
1109 19 jeremybenn
 
1110 346 jeremybenn
`mprof_file = ``FILENAME'''
1111 19 jeremybenn
     Specifies the file to be used with the `mprofile' parameter.
1112 82 jeremybenn
     Default `sim.mprofile'.  For backwards compatibility, the
1113 19 jeremybenn
     alternative name `mprof_fn' is supported for this parameter, but
1114 346 jeremybenn
     deprecated.  Default `sim.mprofile'.
1115 19 jeremybenn
 
1116
`history = 0|1'
1117 82 jeremybenn
     If 1 (true) track execution flow.  Default 0.
1118 19 jeremybenn
 
1119
          Note: Setting this parameter seriously degrades performance.
1120
 
1121
          Note: If this execution flow tracking is enabled, then
1122
          `dependstats' must be enabled in the CPU configuration
1123
          section (*note CPU Configuration: CPU Configuration.).
1124
 
1125
`exe_log = 0|1'
1126 82 jeremybenn
     If 1 (true), generate an execution log.  Log is written to the
1127
     file specified in parameter `exe_log_file'.  Default 0.
1128 19 jeremybenn
 
1129
          Note: Setting this parameter seriously degrades performance.
1130
 
1131
`exe_log_type = default|hardware|simple|software'
1132
     Type of execution log to produce.
1133
 
1134
    `default'
1135 82 jeremybenn
          Produce default output for the execution log.  In the current
1136 19 jeremybenn
          implementation this is the equivalent of `hardware'.
1137
 
1138
    `hardware'
1139
          After each instruction execution, log the number of
1140
          instructions executed so far, the next instruction to execute
1141
          (in hex), the general purpose registers (GPRs), status
1142
          register, exception program counter, exception, effective
1143
          address register and exception status register.
1144
 
1145
    `simple'
1146
          After each instruction execution, log the number of
1147
          instructions executed so far and the next instruction to
1148
          execute, symbolically disassembled.
1149
 
1150
    `software'
1151
          After each instruction execution, log the number of
1152
          instructions executed so far and the next instruction to
1153 82 jeremybenn
          execute, symbolically disassembled.  Also show the value of
1154 19 jeremybenn
          each operand to the instruction.
1155
 
1156
 
1157 82 jeremybenn
     Default value `hardware'.  Any unrecognized keyword (case
1158 19 jeremybenn
     insensitive) will be treated as the default with a warning.
1159
 
1160
          Note: Execution logs can be _very_ big.
1161
 
1162
`exe_log_start = VALUE'
1163 82 jeremybenn
     Address of the first instruction to start logging.  Default 0.
1164 19 jeremybenn
 
1165
`exe_log_end = VALUE'
1166 82 jeremybenn
     Address of the last instruction to log.  Default no limit (i.e
1167
     once started logging will continue until the simulator exits).
1168 19 jeremybenn
 
1169
`exe_log_marker = VALUE'
1170
     Specifies the number of instructions between printing horizontal
1171 82 jeremybenn
     markers.  Default is to produce no markers.
1172 19 jeremybenn
 
1173
`exe_log_file = FILENAME'
1174
     Filename for the execution log filename if `exe_log' is enabled.
1175 82 jeremybenn
     Default `executed.log'.  For backwards compatibility, the
1176 19 jeremybenn
     alternative name `exe_log_fn' is supported for this parameter, but
1177
     deprecated.
1178
 
1179 202 julius
`exe_bin_insn_log = 0|1'
1180 346 jeremybenn
     Enable logging of executed instructions to a file in binary format.
1181
     This is helpful for off-line dynamic execution analysis.
1182 202 julius
 
1183 346 jeremybenn
          Note: Execution logs can be _very_ big.  For example, while
1184 220 jeremybenn
          booting the Linux kernel, version 2.6.34, a log file 1.2GB in
1185
          size was generated.
1186 202 julius
 
1187
`exe_bin_insn_log_file = FILENAME'
1188
     Filename for the binary execution log filename if
1189
     `exe_bin_insn_log' is enabled.  Default `exe-insn.bin'.
1190
 
1191 19 jeremybenn
`clkcycle = VALUE[ps|ns|us|ms]'
1192 82 jeremybenn
     Specify the time taken by one clock cycle.  If no units are
1193
     specified, `ps' is assumed.  Default 4000ps (250MHz).
1194 19 jeremybenn
 
1195
 
1196

1197
File: or1ksim.info,  Node: Verification API Configuration,  Next: CUC Configuration,  Prev: Simulator Behavior,  Up: Simulator Configuration
1198
 
1199
3.2.2 Verification API (VAPI) Configuration
1200
-------------------------------------------
1201
 
1202
The Verification API (VAPI) provides a TCP/IP interface to allow
1203 82 jeremybenn
components of the simulation to be controlled externally.  *Note
1204 19 jeremybenn
Verification API: Verification API, for more details.
1205
 
1206 82 jeremybenn
Verification API configuration is described in `section vapi'.  This
1207
section may appear at most once.  The following parameters may be
1208 19 jeremybenn
specified.
1209
 
1210
`enabled = 0|1'
1211
     If 1 (true), verification API is enabled and its server started.
1212
     If 0 (the default), it is disabled.
1213
 
1214
`server_port = VALUE'
1215
     When VAPI is enabled, communication will be via TCP/IP on the port
1216 82 jeremybenn
     specified by VALUE.  The value must lie in the range 1 to 65535.
1217 19 jeremybenn
     The default value is 50000.
1218
 
1219 82 jeremybenn
          Tip: There is no registered port for Or1ksim VAPI.  Good
1220 19 jeremybenn
          practice suggests users should adopt port values in the
1221 82 jeremybenn
          "Dynamic" or "Private" port range, i.e.  49152-65535.
1222 19 jeremybenn
 
1223
`log_enabled = 0|1'
1224
     If 1 (true), all VAPI requests and sent commands will be logged.
1225 82 jeremybenn
     If 0 (the default), logging is diabled.  Logs are written to the
1226 19 jeremybenn
     file specified by the `vapi_log_file' field (see below).
1227
 
1228
          Caution: This can generate a substantial amount of file I/O
1229
          and seriously degrade simulator performance.
1230
 
1231
`hide_device_id = 0|1'
1232 82 jeremybenn
     If 1 (true) don't log the device ID.  If 0 (the default), log the
1233
     device ID.  This feature (when set to 1) is provided for backwards
1234 19 jeremybenn
     compatibility with an old version of VAPI.
1235
 
1236
`vapi_log_file = "FILENAME"'
1237
     Use `filename' as the file for logged data is logging is enabled
1238 82 jeremybenn
     (see `log_enabled' above).  The default is `"vapi.log"'.  For
1239 19 jeremybenn
     backwards compatibility, the alternative name `vapi_log_fn' is
1240
     supported for this parameter, but deprecated.
1241
 
1242
 
1243

1244
File: or1ksim.info,  Node: CUC Configuration,  Prev: Verification API Configuration,  Up: Simulator Configuration
1245
 
1246
3.2.3 Custom Unit Compiler (CUC) Configuration
1247
----------------------------------------------
1248
 
1249
The Custom Unit Compiler (CUC) was a project by Marko Mlinar to generate
1250 82 jeremybenn
Verilog from ANSI C functions.  The project seems to not have progressed
1251
beyond the initial prototype phase.  The configuration parameters are
1252 19 jeremybenn
described here for the record.
1253
 
1254 82 jeremybenn
CUC configuration is described in `section cuc'.  This section may
1255
appear at most once.  The following parameters may be specified.
1256 19 jeremybenn
 
1257
`memory_order = none|weak|strong|exact'
1258
     This parameter specifies the memory ordering required:
1259
 
1260
    `memory_order=none'
1261
          Different memory ordering, even if there are dependencies.
1262
          Bursts can be made, width can change.
1263
 
1264 346 jeremybenn
    `memory_order=weak'
1265 82 jeremybenn
          Different memory ordering, even if there are dependencies.  If
1266 19 jeremybenn
          dependencies cannot occur, then bursts can be made, width can
1267
          change.
1268
 
1269 346 jeremybenn
    `memory_order=strong'
1270 82 jeremybenn
          Same memory ordering.  Bursts can be made, width can change.
1271 19 jeremybenn
 
1272 346 jeremybenn
    `memory_order=exact'
1273 19 jeremybenn
          Exactly the same memory ordering and widths.
1274
 
1275
 
1276 82 jeremybenn
     The default value is `memory_order=exact'.  Invalid memory
1277 19 jeremybenn
     orderings are ignored with a warning.
1278
 
1279
`calling_convention = 0|1'
1280 82 jeremybenn
     If 1 (true), programs follow OpenRISC calling conventions.  If 0
1281 19 jeremybenn
     (the default), they may use other convenitions.
1282
 
1283
`enable_bursts = 0 | 1'
1284 82 jeremybenn
     If 1 (true), bursts are detected.  If 0 (the default), bursts are
1285 19 jeremybenn
     not detected.
1286
 
1287
`no_multicycle = 0 | 1'
1288 82 jeremybenn
     If 1 (true), no multicycle logic paths will be generated.  If 0
1289
     (the default), multicycle logic paths will be generated.
1290 19 jeremybenn
 
1291
`timings_file = "FILENAME"'
1292 82 jeremybenn
     FILENAME specifies a file containing timing information.  The
1293
     default value is `"virtex.tim"'.  For backwards compatibility, the
1294 19 jeremybenn
     alternative name `timings_fn' is supported for this parameter, but
1295
     deprecated.
1296
 
1297
 
1298

1299
File: or1ksim.info,  Node: Core OpenRISC Configuration,  Next: Peripheral Configuration,  Prev: Simulator Configuration,  Up: Configuration
1300
 
1301
3.3 Configuring the OpenRISC Architectural Components
1302
=====================================================
1303
 
1304
* Menu:
1305
 
1306
* CPU Configuration::
1307
* Memory Configuration::
1308
* Memory Management Configuration::
1309
* Cache Configuration::
1310
* Interrupt Configuration::
1311
* Power Management Configuration::
1312
* Branch Prediction Configuration::
1313
* Debug Interface Configuration::
1314
 
1315

1316
File: or1ksim.info,  Node: CPU Configuration,  Next: Memory Configuration,  Up: Core OpenRISC Configuration
1317
 
1318
3.3.1 CPU Configuration
1319
-----------------------
1320
 
1321 82 jeremybenn
CPU configuration is described in `section cpu'.  This section should
1322
appear only once.  At present Or1ksim does not model multi-CPU systems.
1323 19 jeremybenn
The following parameters may be specified.
1324
 
1325
`ver = VALUE'
1326
 
1327
`cfg = VALUE'
1328
 
1329
`rev = VALUE'
1330
     The values are used to form the corresponding fields in the `VR'
1331 82 jeremybenn
     Special Purpose Register (SPR 0).  Default values 0.  A warning is
1332 19 jeremybenn
     given and the value truncated if it is too large (8 bits for `ver'
1333
     and `cfg', 6 bits for `rev').
1334
 
1335
`upr = VALUE'
1336
     Used as the value of the Unit Present Register (UPR) Special
1337 82 jeremybenn
     Purpose Register (SPR 1) to VALUE.  Default value is 0x0000075f,
1338 19 jeremybenn
     i.e.
1339
        * UPR present (0x00000001)
1340
 
1341
        * Data cache present (0x00000002)
1342
 
1343
        * Instruction cache present (0x00000004)
1344
 
1345
        * Data MMY present (0x00000008)
1346
 
1347
        * Instruction MMU present (0x00000010)
1348
 
1349
        * Debug unit present (0x00000040)
1350
 
1351
        * Power management unit present (0x00000100)
1352
 
1353
        * Programmable interrupt controller present (0x00000200)
1354
 
1355
        * Tick timer present (0x00000400)
1356
 
1357
     However, with the exection of the UPR present (0x00000001) and tick
1358
     timer present, the various fields will be modified with the values
1359
     specified in their corresponding configuration sections.
1360
 
1361
`cfgr = VALUE'
1362
     Sets the CPU configuration register (Special Purpose Register 2) to
1363 82 jeremybenn
     VALUE.  Default value is 0x00000020, i.e.  support for the ORBIS32
1364
     instruction set.  Attempts to set any other value are accepted, but
1365 19 jeremybenn
     issue a warning that there is no support for the instruction set.
1366
 
1367
`sr = VALUE'
1368
     Sets the supervision register Special Purpose Register (SPR 0x11)
1369 82 jeremybenn
     to VALUE.  Default value is 0x00008001, i.e.  start in supervision
1370 19 jeremybenn
     mode (0x00000001) and set the "Fixed One" bit (0x00008000).
1371
 
1372 98 jeremybenn
          Note: This is particularly useful when an image is held in
1373
          Flash at high memory (0xf0000000).  The EPH  bit can be set,
1374
          so that interrupt vectors are basedf at 0xf0000000, rather
1375
          than 0x0.
1376
 
1377 19 jeremybenn
`superscalar = 0|1'
1378 82 jeremybenn
     If 1, the processor operates in superscalar mode.  Default value is
1379 19 jeremybenn
     0.
1380
 
1381
     In the current simulator, the only functional effect of superscalar
1382
     mode is to affect the calculation of the number of cycles taken to
1383
     execute an instruction.
1384
 
1385
          Caution: The code for this does not appear to be complete or
1386
          well tested, so users are advised not to use this option.
1387
 
1388
`hazards = 0|1'
1389 82 jeremybenn
     If 1, data hazards are tracked in a superscalar CPU.  Default
1390
     value is 0.
1391 19 jeremybenn
 
1392
     In the current simulator, the only functional effect is to cause
1393
     logging of hazard waiting information if the CPU is superscalar.
1394
     However nowhere in the simulator is this data actually computed,
1395
     so the net result is probably to have no effect.
1396
 
1397
     if harzards are tracked, current hazards can be displayed using the
1398
     simulator's `r' command.
1399
 
1400
          Caution: The code for this does not appear to be complete or
1401
          well tested, so users are advised not to use this option.
1402
 
1403
`dependstats = 0|1'
1404 82 jeremybenn
     If 1, inter-instruction dependencies are calculated.  Default
1405
     value 0.
1406 19 jeremybenn
 
1407
     If these values are calculated, the depencies can be displayed
1408
     using the simulator's `stat' command.
1409
 
1410
          Note: This field must be enabled, if execution execution flow
1411
          tracking (field `history') has been requested in the simulator
1412
          configuration section (*note Simulator Behavior: Simulator
1413
          Behavior.).
1414
 
1415
`sbuf_len = VALUE'
1416
     The length of the store buffer is set to VALUE, which must be no
1417 82 jeremybenn
     greater than 256.  Larger values will be truncated to 256 with a
1418
     warning.  Negative values will be treated as 0 with a warning.
1419
     Use 0 to disable the store buffer.
1420 19 jeremybenn
 
1421
     When the store buffer is active, stores are accumulated and
1422
     committed when I/O is idle.
1423
 
1424 100 julius
`hardfloat = 0|1'
1425 346 jeremybenn
     If 1, hardfloat instructions are enabled.  Default value 0.
1426 19 jeremybenn
 
1427 104 jeremybenn
 
1428 19 jeremybenn

1429
File: or1ksim.info,  Node: Memory Configuration,  Next: Memory Management Configuration,  Prev: CPU Configuration,  Up: Core OpenRISC Configuration
1430
 
1431
3.3.2 Memory Configuration
1432
--------------------------
1433
 
1434 82 jeremybenn
Memory configuration is described in `section memory'.  This section
1435 98 jeremybenn
may appear multiple times, specifying multiple blocks of memory.
1436 19 jeremybenn
 
1437 98 jeremybenn
     Caution: The user may choose whether or not to enable a memory
1438 385 jeremybenn
     controller.  If a memory controller is enabled, then appropriate
1439
     initalization code must be provided.  The section describing
1440
     memory controller configuration describes the steps necessary for
1441
     using smaller or larger memory sections (*note Memory Controller
1442
     Configuration: Memory Controller Configuration.).
1443 98 jeremybenn
 
1444 385 jeremybenn
     The "uClibc" startup code initalizes a memory controller, assumed
1445
     to be mapped at 0x93000000.  If a memory controller is _not_
1446
     enabled, then the standard C library code will generate memory
1447
     access errors.  The solution is to declare an additional writable
1448
     memory block, mimicing the memory controller's register bank as
1449
     follows.
1450 98 jeremybenn
 
1451
          section memory
1452
            pattern = 0x00
1453
            type = unknown
1454
            name = "MC shadow"
1455
            baseaddr = 0x93000000
1456
            size     = 0x00000080
1457
            delayr = 2
1458
            delayw = 4
1459
          end
1460
 
1461
 
1462
The following parameters may be specified.
1463
 
1464 418 julius
`type=random|pattern|unknown|zero|exitnops'
1465 82 jeremybenn
     Specifies the values to which memory should be initialized.  The
1466 19 jeremybenn
     default value is `unknown'.
1467
 
1468
    `random'
1469 82 jeremybenn
          Set the memory values to be a random value.  A seed for the
1470 19 jeremybenn
          random generator may be set using the `random_seed' field in
1471
          this section (see below), thus ensuring the same "random"
1472
          values are used each time.
1473
 
1474
    `pattern'
1475
          Set the memory values to be a pattern value, which is set
1476
          using the `pattern' field in this section (see below).
1477
 
1478
    `unknown'
1479 82 jeremybenn
          The memory values are not initialized (i.e.  left "unknown").
1480 240 julius
          This option will yield faster initialization of the
1481 346 jeremybenn
          simulator.  This is the default.
1482 19 jeremybenn
 
1483
    `zero'
1484 82 jeremybenn
          Set the memory values to be 0.  This is the equivalent of
1485 19 jeremybenn
          `type=pattern' and a `pattern' value of 0, and implemented as
1486
          such.
1487
 
1488 420 jeremybenn
               Note: As a consequence, if the `pattern' field is
1489
               _subsequently_ specified in this section, the value in
1490
               that field will be used instead of zero to initialize
1491
               the memory.
1492
 
1493 418 julius
    `exitnops'
1494
          Set the memory values to be an instruction used to signal end
1495
          of simulation. This is useful for causing immediate end of
1496
          simulation when PC corruption occurs.
1497
 
1498 19 jeremybenn
 
1499
`random_seed = VALUE'
1500 82 jeremybenn
     Set the seed for the random number generator to VALUE.  This only
1501 19 jeremybenn
     has any effect for memory type `random'.
1502
 
1503
     The default value is -1, which means the seed will be set from a
1504
     call to the `time' function, thus ensuring different random values
1505 82 jeremybenn
     are used on each run.  The simulator prints out the seed used in
1506 19 jeremybenn
     this case, allowing repeat runs to regenerate the same random
1507
     values used in any particular run.
1508
 
1509
`pattern = VALUE'
1510 82 jeremybenn
     Set the pattern to be used when initializing memory to VALUE.  The
1511
     default value is 0.  This only has any effect for memory type
1512
     `pattern'.  The least significant 8 bits of this value is used to
1513
     initialize each byte.  More than 8 bits can be specified, but will
1514 19 jeremybenn
     ignored with a warning.
1515
 
1516
          Tip: The default value, is equivalent to setting the memory
1517 82 jeremybenn
          `type' to be `zero'.  If that is what is intended, then using
1518 19 jeremybenn
          `type=zero' explicitly is better than using `type=pattern'
1519
          and not specifying a value for `pattern'.
1520
 
1521
`baseaddr = VALUE'
1522 82 jeremybenn
     Set the base address of the memory to VALUE.  It should be aligned
1523 19 jeremybenn
     to a multiple of the memory size rounded up to the nearest 2^n.
1524
     The default value is 0.
1525
 
1526
`size = VALUE'
1527 82 jeremybenn
     Set the size of the memory block to be VALUE bytes.  This should
1528
     be a multiple of 4 (i.e.  word aligned).  The default value is
1529
     1024.
1530 19 jeremybenn
 
1531
          Note: When allocating memory, the simulator will allocate the
1532
          nearest 2^n bytes greater than or equal to VALUE, and will not
1533
          notice memory misses in any part of the memory between VALUE
1534
          and the amount allocated.
1535
 
1536
          As a consequence users are strongly recommended to specify
1537 82 jeremybenn
          memory sizes that are an exact power of 2.  If some other
1538 19 jeremybenn
          amount of memory is required, it should be specified as
1539
          separate, contiguous blocks, each of which is a power of 2 in
1540
          size.
1541
 
1542
`name = "TEXT"'
1543 82 jeremybenn
     Name the block.  Typically these describe the type of memory being
1544
     modeled (thus `"SRAM"' or `"Flash"'.  The default is
1545 19 jeremybenn
     `"anonymous memory block"'.
1546
 
1547
          Note: It is not clear that this information is currently ever
1548 82 jeremybenn
          used in normal operation of the simulator.  Even the `info'
1549 19 jeremybenn
          command of the simulator ignores it.
1550
 
1551
`ce = VALUE'
1552 82 jeremybenn
     Set the chip enable index of the memory instance.  Each memory
1553 19 jeremybenn
     instance should have a unique chip enable index, which should be
1554 82 jeremybenn
     greater than or equal to zero.  This is used by the memory
1555 19 jeremybenn
     controller when identifying different memory instances.
1556
 
1557 346 jeremybenn
     There is no requirement to set `ce' if a memory controller is not
1558
     enabled.  The default value is -1 (invalid).
1559 19 jeremybenn
 
1560
`mc = VALUE'
1561 82 jeremybenn
     Specifies the memory controller this memory is connected to.  It
1562 19 jeremybenn
     should correspond to the `index' field specified in a `section mc'
1563
     for a memory controller (*note Memory Controller Configuration:
1564
     Memory Controller Configuration.).
1565
 
1566 346 jeremybenn
     There is no requirement to set `mc' if a memory controller is not
1567
     enabled.  Default value is 0, which is also the default value of a
1568 98 jeremybenn
     memory controller `index' field.  This is suitable therefore for
1569
     designs with just one memory controller.
1570 19 jeremybenn
 
1571
`delayr = VALUE'
1572 82 jeremybenn
     The number of cycles required for a read access.  Set to -1 if the
1573
     memory does not support reading.  Default value 1.  The simulator
1574 19 jeremybenn
     will add this number of cycles to the total instruction cycle
1575
     count when reading from main memory.
1576
 
1577
`delayw = VALUE'
1578 82 jeremybenn
     The number of cycles required for a write access.  Set to -1 if the
1579
     memory does not support writing.  Default value 1.  The simulator
1580 19 jeremybenn
     will add this number of cycles to the total instruction cycle
1581
     count when writing to main memory.
1582
 
1583
`log = "FILE"'
1584
     If specified, `file' names a file for all memory accesses to be
1585 82 jeremybenn
     logged.  If not specified, the default value, NULL is used, meaning
1586 19 jeremybenn
     that the memory is not logged.
1587
 
1588
 
1589

1590
File: or1ksim.info,  Node: Memory Management Configuration,  Next: Cache Configuration,  Prev: Memory Configuration,  Up: Core OpenRISC Configuration
1591
 
1592
3.3.3 Memory Management Configuration
1593
-------------------------------------
1594
 
1595
Memory Management Unit (MMU) configuration is described in `section
1596
dmmu' (for the data MMU) and `section immu' (for the instruction MMU).
1597 82 jeremybenn
Each section should appear at most once.  The following parameters may
1598 19 jeremybenn
be specified.
1599
 
1600
`enabled = 0|1'
1601
     If 1 (true), the data or instruction (as appropriate) MMU is
1602 82 jeremybenn
     enabled.  If 0 (the default), it is disabled.
1603 19 jeremybenn
 
1604
`nsets = VALUE'
1605
     Sets the number of data or instruction (as appropriate) TLB sets to
1606 82 jeremybenn
     VALUE, which must be a power of two, not exceeding 128.  Values
1607
     which do not fit these criteria are ignored with a warning.  The
1608 19 jeremybenn
     default value is 1.
1609
 
1610
`nways = VALUE'
1611
     Sets the number of data or instruction (as appropriate) TLB ways to
1612 82 jeremybenn
     VALUE.  The value must be in the range 1 to 4.  Values outside
1613
     this range are ignored with a warning.  The default value is 1.
1614 19 jeremybenn
 
1615
`pagesize = VALUE'
1616
     The data or instruction (as appropriate) MMU page size is set to
1617 82 jeremybenn
     VALUE, which must be a power of 2.  Values which are not a power
1618
     of 2 are ignored with a warning.  The default is 8192 (0x2000).
1619 19 jeremybenn
 
1620
`entrysize = VALUE'
1621
     The data or instruction (as appropriate) MMU entry size is set to
1622 82 jeremybenn
     VALUE, which must be a power of 2.  Values which are not a power
1623
     of 2 are ignored with a warning.  The default value is 1.
1624 19 jeremybenn
 
1625
          Note: Or1ksim does not appear to use the `entrysize' parameter
1626 82 jeremybenn
          in its simulation of the MMUs.  Thus setting this value does
1627 19 jeremybenn
          not seem to matter.
1628
 
1629
`ustates = VALUE'
1630
     The number of instruction usage states for the data or instruction
1631
     (as appropriate) MMU is set to VALUE, which must be 2, 3 or 4.
1632 82 jeremybenn
     Values outside this range are ignored with a warning.  The default
1633 19 jeremybenn
     value is 2.
1634
 
1635
          Note: Or1ksim does not appear to use the `ustates' parameter
1636 82 jeremybenn
          in its simulation of the MMUs.  Thus setting this value does
1637 19 jeremybenn
          not seem to matter.
1638
 
1639
`hitdelay = VALUE'
1640
     Set the number of cycles a data or instruction (as appropriate) MMU
1641 82 jeremybenn
     hit costs.  Default value 1.
1642 19 jeremybenn
 
1643
`missdelay = VALUE'
1644
     Set the number of cycles a data or instruction (as appropriate) MMU
1645 82 jeremybenn
     miss costs.  Default value 1.
1646 19 jeremybenn
 
1647
 
1648

1649
File: or1ksim.info,  Node: Cache Configuration,  Next: Interrupt Configuration,  Prev: Memory Management Configuration,  Up: Core OpenRISC Configuration
1650
 
1651
3.3.4 Cache Configuration
1652
-------------------------
1653
 
1654
Cache configuration is described in `section dc' (for the data cache)
1655 82 jeremybenn
and `seciton ic' (for the instruction cache).  Each section should
1656
appear at most once.  The following parameters may be specified.
1657 19 jeremybenn
 
1658
`enabled = 0|1'
1659
     If 1 (true), the data or instruction (as appropriate) cache is
1660 82 jeremybenn
     enabled.  If 0 (the default), it is disabled.
1661 19 jeremybenn
 
1662
`nsets = VALUE'
1663
     Sets the number of data or instruction (as appropriate) cache sets
1664
     to VALUE, which must be a power of two, not exceeding
1665
     `MAX_DC_SETS' (for the data cache) or `MAX_IC_SETS' (for the
1666 82 jeremybenn
     instruction cache).  At the time of writing, these constants are
1667
     both defined in the code to be 1024).  The default value is 1.
1668 19 jeremybenn
 
1669
`nways = VALUE'
1670
     Sets the number of data or instruction (as appropriate) cache ways
1671
     to VALUE, which must be a power of two, not exceeding
1672
     `MAX_DC_WAYS' (for the data cache) or `MAX_IC_WAYS' (for the
1673 82 jeremybenn
     instruction cache).  At the time of writing, these constants are
1674
     both defined in the code to be 32).  The default value is 1.
1675 19 jeremybenn
 
1676
`blocksize = VALUE'
1677
     The data or instruction (as appropriate) cache block size is set to
1678 82 jeremybenn
     VALUE bytes, which must be either 16 or 32.  The default is 16.
1679 19 jeremybenn
 
1680
`ustates = VALUE'
1681
     The number of instruction usage states for the data or instruction
1682
     (as appropriate) cache is set to VALUE, which must be 2, 3 or 4.
1683
     The default value is 2.
1684
 
1685
`hitdelay = VALUE'
1686 82 jeremybenn
     _Instruction cache only_.  Set the number of cycles an instruction
1687
     cache hit costs.  Default value 1.
1688 19 jeremybenn
 
1689
`missdelay = VALUE'
1690 82 jeremybenn
     _Instruction cache only_.  Set the number of cycles an instruction
1691
     cache miss costs.  Default value 1.
1692 19 jeremybenn
 
1693
`load_hitdelay = VALUE'
1694 82 jeremybenn
     _Data cache only_.  Set the number of cycles a data load cache hit
1695
     costs.  Default value 2.
1696 19 jeremybenn
 
1697
`load_missdelay = VALUE'
1698 82 jeremybenn
     _Data cache only_.  Set the number of cycles a data load cache
1699
     miss costs.  Default value 2.
1700 19 jeremybenn
 
1701
`store_hitdelay = VALUE'
1702 82 jeremybenn
     _Data cache only_.  Set the number of cycles a data store cache hit
1703
     costs.  Default value 0.
1704 19 jeremybenn
 
1705
`store_missdelay = VALUE'
1706 82 jeremybenn
     _Data cache only_.  Set the number of cycles a data store cache
1707
     miss costs.  Default value 0.
1708 19 jeremybenn
 
1709
 
1710

1711
File: or1ksim.info,  Node: Interrupt Configuration,  Next: Power Management Configuration,  Prev: Cache Configuration,  Up: Core OpenRISC Configuration
1712
 
1713
3.3.5 Interrupt Configuration
1714
-----------------------------
1715
 
1716
Programmable Interrupt Controller (PIC) configuration is described in
1717 82 jeremybenn
`section pic'.  This section may appear at most once--Or1ksim has no
1718
mechanism for handling multiple interrupt controllers.  The following
1719 19 jeremybenn
parameters may be specified.
1720
 
1721
`enabled = 0|1'
1722 82 jeremybenn
     If 1 (true), the programmable interrupt controller is enabled.  If
1723
 
1724 19 jeremybenn
 
1725
`edge_trigger = 0|1'
1726
     If 1 (true, the default), the programmable interrupt controller is
1727 82 jeremybenn
     edge triggered.  If 0 (false), it is level triggered.
1728 19 jeremybenn
 
1729 432 jeremybenn
     The library interface (*note Simulator Library: Simulator Library.)
1730
     provides different functions for setting the different types of
1731
     interrupt, and a function to clear level sensitive interrupts. Edge
1732
     sensitive interrupts must be cleared by clearing the corresponding
1733
     bit in the PICSR SPR.
1734 19 jeremybenn
 
1735 432 jeremybenn
     Internal functions to set and clear interrupts are also provided
1736
     for peripherals implemented within Or1ksim. *Note Interrupts
1737
     Internal: Interrupts Internal for more details.
1738 430 julius
 
1739 432 jeremybenn
`use_nmi = 0|1'
1740
     If 1 (true, the default), interrupt lines 0 and 1 are
1741
     non-maskable. In other words the least significant 2 bits of the
1742
     PICMR SPR are hard-wired to 1.  If 0 (false), all interrupt lines
1743
     are treated as equivalent.
1744 430 julius
 
1745 432 jeremybenn
          Note: These are not non-maskable in the true sense that they
1746
          will pre-empt other interrupts.  Rather they can never be
1747
          masked out using the PICMR register. It is up the interrupt
1748
          exception handler to give these interrupt lines priority, and
1749
          indeed to decide on the priority order in general.
1750 430 julius
 
1751 432 jeremybenn
 
1752 19 jeremybenn

1753
File: or1ksim.info,  Node: Power Management Configuration,  Next: Branch Prediction Configuration,  Prev: Interrupt Configuration,  Up: Core OpenRISC Configuration
1754
 
1755
3.3.6 Power Management Configuration
1756
------------------------------------
1757
 
1758 82 jeremybenn
Power management implementation is incomplete.  At present the effect
1759 19 jeremybenn
(which only happens when the power management unit is enabled) of
1760
setting the different bits in the power management Special Purpose
1761
Register (PMR, SPR 0x4000) is
1762
 
1763
`SDF (bit mask 0x0000000f)'
1764
     No effect - these bits are ignored
1765
 
1766
`DME (bit mask 0x00000010)'
1767
`SME (bit mask 0x00000020)'
1768
     Both these bits cause the processor to stop executing
1769 82 jeremybenn
     instructions.  However all other functions (debug interaction, CLI,
1770 19 jeremybenn
     VAPI etc) carry on as normal.
1771
 
1772
`DCGE (bit mask 0x00000004)'
1773
     No effect - this bit is ignored
1774
 
1775
`SUME (bit mask 0x00000008)'
1776
     Enabling this bit causes a message to be printed, advising that the
1777
     processor is suspending and the simulator exits.
1778
 
1779
 
1780
On reset all bits are cleared.
1781
 
1782 82 jeremybenn
Power management configuration is described in `section pm'.  This
1783
section may appear at most once.  The following parameter may be
1784 19 jeremybenn
specified.
1785
 
1786
`enabled = 0|1'
1787 82 jeremybenn
     If 1 (true), power management is enabled.  If 0 (the default), it
1788
     is disabled.
1789 19 jeremybenn
 
1790
 
1791

1792
File: or1ksim.info,  Node: Branch Prediction Configuration,  Next: Debug Interface Configuration,  Prev: Power Management Configuration,  Up: Core OpenRISC Configuration
1793
 
1794
3.3.7 Branch Prediction Configuration
1795
-------------------------------------
1796
 
1797
From examining the code base, it seems the branch prediction function
1798 82 jeremybenn
is not fully implemented.  At present the functionality seems
1799
restricted to collection of statistics.
1800 19 jeremybenn
 
1801 82 jeremybenn
Branch prediction configuration is described in `section bpb'.  This
1802
section may appear at most once.  The following parameters may be
1803 19 jeremybenn
specified.
1804
 
1805
`enabled = 0|1'
1806 82 jeremybenn
     If 1 (true), branch prediction is enabled.  If 0 (the default), it
1807 19 jeremybenn
     is disabled.
1808
 
1809
`btic = 0|1'
1810
     If 1 (true), the branch target instruction cache model is enabled.
1811
     If 0 (the default), it is disabled.
1812
 
1813
`sbp_bf_fwd = 0|1'
1814 82 jeremybenn
     If 1 (true), use forward prediction for the `l.bf' instruction.  If
1815 19 jeremybenn
 
1816
     instruction.
1817
 
1818
`sbp_bnf_fwd = 0|1'
1819 82 jeremybenn
     If 1 (true), use forward prediction for the `l.bnf' instruction.
1820
     If 0 (the default), do not use forward prediction for this
1821 19 jeremybenn
     instruction.
1822
 
1823
`hitdelay = VALUE'
1824 82 jeremybenn
     Set the number of cycles a branch prediction hit costs.  Default
1825 19 jeremybenn
     value 0.
1826
 
1827
`missdelay = VALUE'
1828 82 jeremybenn
     Set the number of cycles a branch prediction miss costs.  Default
1829 19 jeremybenn
     value 0.
1830
 
1831
 
1832

1833
File: or1ksim.info,  Node: Debug Interface Configuration,  Prev: Branch Prediction Configuration,  Up: Core OpenRISC Configuration
1834
 
1835
3.3.8 Debug Interface Configuration
1836
-----------------------------------
1837
 
1838
The debug unit and debug interface configuration is described in
1839 82 jeremybenn
`section debug'.  This section may appear at most once.  The following
1840 19 jeremybenn
parameters may be specified.
1841
 
1842
`enabled = 0|1'
1843 82 jeremybenn
     If 1 (true), the debug unit is enabled.  If 0 (the default), it is
1844 19 jeremybenn
     disabled.
1845
 
1846
          Note: This enables the functionality of the debug unit (its
1847 82 jeremybenn
          registers etc) within the mode.  It does not provide any
1848
          external interface to the debug unit.  For that, see
1849 235 jeremybenn
          `rsp_enabled' below.
1850 19 jeremybenn
 
1851
`rsp_enabled = 0|1'
1852
     If 1 (true), the GDB "Remote Serial Protocol" server is started,
1853
     provding an interface to an external GNU debugger, using the port
1854
     specified in the `rsp_port' field (see below), or the
1855 82 jeremybenn
     `or1ksim-rsp' TCP/IP service.  If 0 (the default), the server is
1856 19 jeremybenn
     not started, and no external interface is provided.
1857
 
1858
     For more detailed information on the interface to the GNU Debugger
1859
     see Embecosm Application Note 2, `Howto: Porting the GNU Debugger
1860
     Practical Experience with the OpenRISC 1000 Architecture', by
1861
     Jeremy Bennett, published by Embecosm Limited (`www.embecosm.com').
1862
 
1863
`rsp_port = VALUE'
1864
     VALUE specifies the port to be used for the GDB "Remote Serial
1865 82 jeremybenn
     Protocol" interface to the GNU Debugger (GDB).  Default value
1866
     51000.  If the value 0 is specified, Or1ksim will instead look for
1867 19 jeremybenn
     a TCP/IP service named `or1ksim-rsp'.
1868
 
1869
          Tip: There is no registered port for Or1ksim "Remote Serial
1870 82 jeremybenn
          Protocol" service `or1ksim-rsp'.  Good practice suggests
1871
          users should adopt port values in the "Dynamic" or "Private"
1872
          port range, i.e.  49152-65535.
1873 19 jeremybenn
 
1874
`vapi_id = VALUE'
1875
     VALUE specifies the value of the Verification API (VAPI) base
1876 82 jeremybenn
     address to be used with the debug unit.  *Note Verification API:
1877 19 jeremybenn
     Verification API, for more details.
1878
 
1879
     If this is specified and VALUE is non-zero, all OpenRISC Remote
1880
     JTAG protocol transactions will be logged to the VAPI log file, if
1881 82 jeremybenn
     enabled.  This is the only functionality associated with VAPI for
1882
     the debug unit.  No VAPI commands are sent, nor requests handled.
1883 19 jeremybenn
 
1884
 
1885

1886
File: or1ksim.info,  Node: Peripheral Configuration,  Prev: Core OpenRISC Configuration,  Up: Configuration
1887
 
1888
3.4 Configuring Memory Mapped Peripherals
1889
=========================================
1890
 
1891 82 jeremybenn
All peripheral components are optional.  If they are specified, then
1892 19 jeremybenn
(unlike other components) by default they are enabled.
1893
 
1894
* Menu:
1895
 
1896
* Memory Controller Configuration::
1897
* UART Configuration::
1898
* DMA Configuration::
1899
* Ethernet Configuration::
1900
* GPIO Configuration::
1901
* Display Interface Configuration::
1902
* Frame Buffer Configuration::
1903
* Keyboard Configuration::
1904
* Disc Interface Configuration::
1905
* Generic Peripheral Configuration::
1906
 
1907

1908
File: or1ksim.info,  Node: Memory Controller Configuration,  Next: UART Configuration,  Up: Peripheral Configuration
1909
 
1910
3.4.1 Memory Controller Configuration
1911
-------------------------------------
1912
 
1913
The memory controller used in Or1ksim is the component implemented at
1914 98 jeremybenn
OpenCores, and found in the top level SVN directory, `mem_ctrl'.  It is
1915 19 jeremybenn
described in the document `Memory Controller IP Core' by Rudolf
1916 82 jeremybenn
Usselmann, which can be found in the `doc' subdirectory.  It is a
1917
memory mapped component, which resides on the main OpenRISC Wishbone
1918
data bus.
1919 19 jeremybenn
 
1920 82 jeremybenn
The memory controller configuration is described in `section mc'.  This
1921 19 jeremybenn
section may appear multiple times, specifying multiple memory
1922 98 jeremybenn
controllers.
1923 19 jeremybenn
 
1924 385 jeremybenn
     Warning: There are known to be problems with the current memory
1925
     controller, which currently is not included in the regression test
1926
     suite. Users are advised not to use the memory controller in the
1927
     current release.
1928 98 jeremybenn
 
1929 385 jeremybenn
     Caution: There is no initialization code in the standard "newlib"
1930
     library.
1931
 
1932
     The standard "uClibc" library assumes a memory controller mapped
1933
     at 0x93000000 and will initialize the memory controller to expect
1934
     64MB memory blocks, and any memory declarations _must_ reflect
1935
     this.
1936
 
1937 98 jeremybenn
     If smaller memory blocks are declared with a memory controller,
1938
     then sufficient memory will not be allocated by Or1ksim, but out of
1939 346 jeremybenn
     range memory accesses will not be trapped.  For example declaring a
1940 98 jeremybenn
     memory section from 0-4MB with a memory controller enabled would
1941
     mean that accesses between 4MB and 64MB would be permitted, but
1942
     having no allocated memory would likely cause a segmentation fault.
1943
 
1944
     If the user is determined to use smaller memories with the memory
1945
     controller, then custom initialization code must be provided, to
1946
     ensure the memory controller traps out-of-memory accesses.
1947
 
1948
The following parameters may be specified.
1949
 
1950 19 jeremybenn
`enabled = 0|1'
1951 82 jeremybenn
     If 1 (true, the default), this memory controller is enabled.  If
1952
     0, it is disabled.
1953 19 jeremybenn
 
1954
          Note: The memory controller can effectively also be disabled
1955
          by setting an appropriate power on control register value
1956 82 jeremybenn
          (see below).  However this should only be used if it is
1957 19 jeremybenn
          desired to specifically model this behavior of the memory
1958
          controller, not as a way of disabling the memory controller
1959
          in general.
1960
 
1961
`baseaddr = VALUE'
1962
     Set the base address of the memory controller's memory mapped
1963 82 jeremybenn
     registers to VALUE.  The default is 0, which is probably not a
1964 19 jeremybenn
     sensible value.
1965
 
1966
     The memory controller has a 7 bit address bus, with a total of 19
1967
     32-bit registers, at addresses 0x00 through 0x4c (address 0x0c and
1968
     addresses 0x50 through 0x7c are not used).
1969
 
1970
`poc = VALUE'
1971
     Specifies the value of the power on control register, The least
1972
     signficant two bits specify the bus width (use 0 for an 8-bit bus,
1973
     1 for a 16-bit bus and 2 for a 32-bit bus) and the next two bits
1974
     the type of memory connected (use 0 for a disabled interface, 1
1975
     for SSRAM, 2 for asyncrhonous devices and 3 for synchronous
1976
     devices).
1977
 
1978
     If other bits are specified, they are ignored with a warning.
1979
 
1980
          Caution: The default value, 0, corresponds to a disabled
1981
          8-bit bus, and is likely not the most suitable value
1982
 
1983
`index = VALUE'
1984
     Specify the index of this memory controller amongst all the memory
1985 82 jeremybenn
     controllers.  This value should be unique for each memory
1986 19 jeremybenn
     controller, and is used to associate specific memories with the
1987
     controller, through the `mc' field in the `section memory'
1988
     configuration (*note Memory Configuration: Memory Configuration.).
1989
 
1990
     The default value, 0, is suitable when there is only one memory
1991
     controller.
1992
 
1993
 
1994

1995
File: or1ksim.info,  Node: UART Configuration,  Next: DMA Configuration,  Prev: Memory Controller Configuration,  Up: Peripheral Configuration
1996
 
1997
3.4.2 UART Configuration
1998
------------------------
1999
 
2000
The UART implemented in Or1ksim follows the specification of the
2001 82 jeremybenn
National Semiconductor 16450 and 16550 parts.  It is a memory mapped
2002 19 jeremybenn
component, which resides on the main OpenRISC Wishbone data bus.
2003
 
2004
The component provides a number of interfaces to emulate the behavior
2005
of an external terminal connected to the UART.
2006
 
2007 82 jeremybenn
UART configuration is described in `section uart'.  This section may
2008
appear multiple times, specifying multiple UARTs.  The following
2009 19 jeremybenn
parameters may be specified.
2010
 
2011
`enabled = 0|1'
2012 82 jeremybenn
     If 1 (true, the default), this UART is enabled.  If 0, it is
2013 19 jeremybenn
     disabled.
2014
 
2015
`baseaddr = VALUE'
2016
     Set the base address of the UART's memory mapped registers to
2017 82 jeremybenn
     VALUE.  The default is 0, which is probably not a sensible value.
2018 19 jeremybenn
 
2019
     The UART has a 3 bit address bus, with a total of 8 8-bit
2020
     registers, at addresses 0x0 through 0x7.
2021
 
2022
`channel = "TYPE:ARGS"'
2023
     Specify the channel representing the terminal connected to the UART
2024
     Rx & Tx pins.
2025
 
2026
    `channel="file:`rxfile',`txfile'"'
2027
          Read input characters from the file `rxfile' and write output
2028
          characters to the file `txfile' (which will be created if
2029
          required).
2030
 
2031
    `channel="xterm:ARGS"'
2032
          Create an xterm on startup, write UART Tx traffic to the
2033
          xterm and take Rx traffic from the keyboard when the xterm
2034 82 jeremybenn
          window is selected.  Additional arguments to the xterm
2035
          command (for example specifying window size may be specified
2036
          in ARGS, or this may be left blank.
2037 19 jeremybenn
 
2038
    `channel="tcp:VALUE"'
2039
          Open the TCP/IP port specified by VALUE and read and write
2040
          UART traffic from and to it.
2041
 
2042
          Typically a telnet session is connected to the other end of
2043
          this port.
2044
 
2045
               Tip: There is no registered port for Or1ksim telnet UART
2046 82 jeremybenn
               connection.  Priviledged access is required to read
2047 19 jeremybenn
               traffic on the registered "well-known" telnet port (23).
2048 346 jeremybenn
               Instead users should use port values in the "Dynamic" or
2049
               "Private" port range, i.e.  49152-65535.
2050 19 jeremybenn
 
2051
    `channel="fd:`rxfd',`txfd'"'
2052
          Read and write characters from and to the existing open
2053
          numerical file descriptors, file `rxfd' and `txfd'.
2054
 
2055
    `channel="tty:device=/dev/ttyS0,baud=9600"'
2056
          Read and write characters from and to a physical serial port.
2057 346 jeremybenn
          The precise device (shown here as `/dev/ttyS0') may vary from
2058
          machine to machine.
2059 19 jeremybenn
 
2060
 
2061
     The default value for this field is `"xterm:"'.
2062
 
2063
`irq = VALUE'
2064 82 jeremybenn
     Use VALUE as the IRQ number of this UART.  Default value 0.
2065 19 jeremybenn
 
2066
`16550 = 0|1'
2067 82 jeremybenn
     If 1 (true), the UART has the functionality of a 16550.  If 0 (the
2068
     default), it has the functionality of a 16450.  The principal
2069 19 jeremybenn
     difference is that the 16550 can buffer multiple characters.
2070
 
2071
`jitter = VALUE'
2072
     Set the jitter, modeled as a time to block, to VALUE milliseconds.
2073 82 jeremybenn
     Set to -1 to disable jitter modeling.  Default value 0.
2074 19 jeremybenn
 
2075
          Note: This functionality has yet to be implemented, so this
2076
          parameter has no effect.
2077
 
2078
`vapi_id = VALUE'
2079
     VALUE specifies the value of the Verification API (VAPI) base
2080 82 jeremybenn
     address to be used with the UART.  *Note Verification API:
2081 19 jeremybenn
     Verification API, for more details, which details the use of the
2082
     VAPI with the UART.
2083
 
2084
 
2085

2086
File: or1ksim.info,  Node: DMA Configuration,  Next: Ethernet Configuration,  Prev: UART Configuration,  Up: Peripheral Configuration
2087
 
2088
3.4.3 DMA Configuration
2089
-----------------------
2090
 
2091
The DMA controller used in Or1ksim is the component implemented at
2092 98 jeremybenn
OpenCores, and found in the top level SVN directory, `wb_dma'.  It is
2093 19 jeremybenn
described in the document `Wishbone DMA/Bridge IP Core' by Rudolf
2094 82 jeremybenn
Usselmann, which can be found in the `doc' subdirectory.  It is a
2095
memory mapped component, which resides on the main OpenRISC Wishbone
2096
data bus.  The present implementation is incomplete, intended only to
2097
support the Ethernet interface (*note Ethernet Configuration::),
2098
although the Ethernet interface is not yet completed.
2099 19 jeremybenn
 
2100 82 jeremybenn
DMA configuration is described in `section dma'.  This section may
2101
appear multiple times, specifying multiple DMA controllers.  The
2102 19 jeremybenn
following parameters may be specified.
2103
 
2104
`enabled = 0|1'
2105 82 jeremybenn
     If 1 (true, the default), this DMA controller is enabled.  If 0,
2106
     it is disabled.
2107 19 jeremybenn
 
2108
`baseaddr = VALUE'
2109
     Set the base address of the DMA's memory mapped registers to
2110 82 jeremybenn
     VALUE.  The default is 0, which is probably not a sensible value.
2111 19 jeremybenn
 
2112
     The DMA controller has a 10 bit address bus, with a total of 253
2113 82 jeremybenn
     32-bit registers.  The first 5 registers at addresses 0x000 through
2114
     0x010 control the overall behavior of the DMA controller.  There
2115
     are then 31 blocks of 8 registers, controlling each of the 31 DMA
2116
     channels available.  Addresses 0x014 through 0x01c are not used.
2117 19 jeremybenn
 
2118
`irq = VALUE'
2119 82 jeremybenn
     Use VALUE as the IRQ number of this DMA controller.  Default value
2120 19 jeremybenn
     0.
2121
 
2122
`vapi_id = VALUE'
2123
     VALUE specifies the value of the Verification API (VAPI) base
2124 82 jeremybenn
     address to be used with the DMA controller.  *Note Verification
2125 19 jeremybenn
     API: Verification API, for more details, which details the use of
2126
     the VAPI with the DMA controller.
2127
 
2128
 
2129

2130
File: or1ksim.info,  Node: Ethernet Configuration,  Next: GPIO Configuration,  Prev: DMA Configuration,  Up: Peripheral Configuration
2131
 
2132
3.4.4 Ethernet Configuration
2133
----------------------------
2134
 
2135 82 jeremybenn
Ethernet configuration is described in `section ethernet'.  This
2136
section may appear multiple times, specifying multiple Ethernet
2137
interfaces.  The following parameters may be specified.
2138 19 jeremybenn
 
2139 440 jeremybenn
The Ethernet MAC used in Or1ksim corresponds to the Verilog
2140
implementation in project "ethmac". It's source code can be found in
2141
the top level SVN directory, `ethmac'.  It also forms part of the
2142
OpenRISC reference SoC, ORPSoC.  It is described in the document
2143
`Ethernet IP Core Specification' by Igor Mohor, which can be found in
2144
the `doc' subdirectory.  It is a memory mapped component, which resides
2145
on the main OpenRISC Wishbone data bus.
2146
 
2147 19 jeremybenn
`enabled = 0|1'
2148 82 jeremybenn
     If 1 (true, the default), this Ethernet MAC is enabled.  If 0, it
2149
     is disabled.
2150 19 jeremybenn
 
2151
`baseaddr = VALUE'
2152
     Set the base address of the MAC's memory mapped registers to
2153 82 jeremybenn
     VALUE.  The default is 0, which is probably not a sensible value.
2154 19 jeremybenn
 
2155
     The Ethernet MAC has a 7-bit address bus, with a total of 21
2156 82 jeremybenn
     32-bit registers.  Addresses 0x54 through 0x7c are not used.
2157 19 jeremybenn
 
2158
          Note: The Ethernet specification describes a Tx control
2159 82 jeremybenn
          register, `TXCTRL', at address 0x50.  However this register
2160
          is not implemented in the Or1ksim model.
2161 19 jeremybenn
 
2162
`dma = VALUE'
2163
     VALUE specifies the DMA controller with which this Ethernet is
2164 82 jeremybenn
     associated.  The default value is 0.
2165 19 jeremybenn
 
2166
          Note: Support for external DMA is not provided in the current
2167 82 jeremybenn
          implementation, and this value is ignored.  In any case there
2168 19 jeremybenn
          is no equivalent field to which this can be matched in the
2169
          current DMA component implementation (*note DMA
2170
          Configuration: DMA Configuration.).
2171
 
2172
`irq = VALUE'
2173 82 jeremybenn
     Use VALUE as the IRQ number of this Ethernet MAC.  Default value 0.
2174 19 jeremybenn
 
2175 440 jeremybenn
`rtx_type = "file"|"tap"'
2176
     Specifies whether to use a TUN/TAP interface or file interface
2177
     (the default) to model the external connection of the Ethernet.
2178 19 jeremybenn
 
2179 440 jeremybenn
     If a TUN/TAP interface is requested, Ethernet packets will be sent
2180
     and received through the pesistent TAP interface specified in
2181
     parameter `tap_dev' (see below).
2182 19 jeremybenn
 
2183 440 jeremybenn
     More details on configuring the TUN/TAP interface are given in the
2184
     Usage section (*note Ethernet TUN/TAP Interface: Ethernet TUN/TAP
2185
     Interface.).
2186 19 jeremybenn
 
2187 440 jeremybenn
     If a file interface (the default), is requested, the Ethernet will
2188
     be modelled by reading and writing from and to the files specified
2189
     in the `rxfile' and `txfile' parameters (see below).
2190
 
2191
          Caution: If a file interface is specified, Or1ksim will
2192
          terminate once the receive file specified by `rxfile' is
2193
          exhausted.
2194
 
2195 19 jeremybenn
`rx_channel = RXVALUE'
2196
`tx_channel = TXVALUE'
2197
     RXVALUE specifies the DMA channel to use for receive and TXVALUE
2198 82 jeremybenn
     the DMA channel to use for transmit.  Both default to 0.
2199 19 jeremybenn
 
2200
          Note: As noted above, support for external DMA is not
2201
          provided in the current implementation, and so these values
2202
          are ignored.
2203
 
2204
`rxfile = "RXFILE"'
2205
`txfile = "TXFILE"'
2206
     When `rtx_type' is 0 (see above), RXFILE specifies the file to use
2207
     as input and TXFILE specifies the fie to use as output.
2208
 
2209 82 jeremybenn
     The file contains a sequence of packets.  Each packet consists of a
2210
     packet length (32 bits), followed by that many bytes of data.
2211
     Once the input file is empty, the Ethernet MAC behaves as though
2212
     there were no data on the Ethernet.  The default values of these
2213 19 jeremybenn
     parameters are `"eth_rx"' and `"eth_tx"' respectively.
2214
 
2215 82 jeremybenn
     The input file must exist and be readable.  The output file must be
2216
     writable and will be created if necessary.  If either of these
2217 19 jeremybenn
     conditions is not met, a warning will be given.
2218
 
2219 440 jeremybenn
          Caution: Or1ksim will terminate once the RXFILE is exhausted.
2220 19 jeremybenn
 
2221 440 jeremybenn
`tap_dev = "TAP"'
2222
     When `rtx_type' is `"tap"' (see above), TAP_DEV specifies the TAP
2223
     device to use for communication.  This should be a persistent TAP
2224
     device configured for the system (*note Ethernet TUN/TAP
2225
     Interface: Ethernet TUN/TAP Interface.)
2226
 
2227 19 jeremybenn
`vapi_id = VALUE'
2228
     VALUE specifies the value of the Verification API (VAPI) base
2229 82 jeremybenn
     address to be used with the Ethernet PHY.  *Note Verification API:
2230 19 jeremybenn
     Verification API, for more details, which details the use of the
2231
     VAPI with the DMA controller.
2232
 
2233 429 julius
`phy_addr = VALUE'
2234 440 jeremybenn
     VALUE specifies the address for emulated ethernet PHY (default 0).
2235
     If there are multiple Ethernet peripherals, they should each have a
2236
     different PHY value.
2237 19 jeremybenn
 
2238 429 julius
 
2239 19 jeremybenn

2240
File: or1ksim.info,  Node: GPIO Configuration,  Next: Display Interface Configuration,  Prev: Ethernet Configuration,  Up: Peripheral Configuration
2241
 
2242
3.4.5 GPIO Configuration
2243
------------------------
2244
 
2245
The GPIO used in Or1ksim is the component implemented at OpenCores, and
2246 98 jeremybenn
found in the top level SVN directory, `gpio'.  It is described in the
2247 19 jeremybenn
document `GPIO IP Core Specification' by Damjan Lampret and Goran
2248 82 jeremybenn
Djakovic, which can be found in the `doc' subdirectory.  It is a memory
2249 19 jeremybenn
mapped component, which resides on the main OpenRISC Wishbone data bus.
2250
 
2251 82 jeremybenn
GPIO configuration is described in `section gpio'.  This section may
2252
appear multiple times, specifying multiple GPIO devices.  The following
2253 19 jeremybenn
parameters may be specified.
2254
 
2255
`enabled = 0|1'
2256 82 jeremybenn
     If 1 (true, the default), this GPIO is enabled.  If 0, it is
2257 19 jeremybenn
     disabled.
2258
 
2259
`baseaddr = VALUE'
2260
     Set the base address of the GPIO's memory mapped registers to
2261 82 jeremybenn
     VALUE.  The default is 0, which is probably not a sensible value.
2262 19 jeremybenn
 
2263
     The GPIO has a 6 bit address bus, with a total of 10 32-bit
2264
     registers, although the number of bits that are actively used
2265 82 jeremybenn
     varies.  Addresses 0x28 through 0x3c are not used.
2266 19 jeremybenn
 
2267
`irq = VALUE'
2268 82 jeremybenn
     Use VALUE as the IRQ number of this GPIO.  Default value 0.
2269 19 jeremybenn
 
2270
`vapi_id = VALUE'
2271
     VALUE specifies the value of the Verification API (VAPI) base
2272 82 jeremybenn
     address to be used with the GPIO.  *Note Verification API:
2273 19 jeremybenn
     Verification API, for more details, which details the use of the
2274 82 jeremybenn
     VAPI with the GPIO controller.  For backwards compatibility, the
2275 19 jeremybenn
     alternative name `base_vapi_id' is supported for this parameter,
2276
     but deprecated.
2277
 
2278
 
2279

2280
File: or1ksim.info,  Node: Display Interface Configuration,  Next: Frame Buffer Configuration,  Prev: GPIO Configuration,  Up: Peripheral Configuration
2281
 
2282
3.4.6 Display Interface Configuration
2283
-------------------------------------
2284
 
2285
Or1ksim models a VGA interface to an external monitor.  The VGA
2286
controller used in Or1ksim is the component implemented at OpenCores,
2287 98 jeremybenn
and found in the top level SVN directory, `vga_lcd', with no support
2288 82 jeremybenn
for the optional hardware cursors.  It is described in the document
2289 19 jeremybenn
`VGA/LCD Core v2.0 Specifications' by Richard Herveille, which can be
2290 82 jeremybenn
found in the `doc' subdirectory.  It is a memory mapped component,
2291
which resides on the main OpenRISC Wishbone data bus.
2292 19 jeremybenn
 
2293
The current implementation provides only functionality to dump the
2294
screen to a file at intervals.
2295
 
2296 82 jeremybenn
VGA controller configuration is described in `section vga'.  This
2297 19 jeremybenn
section may appear multiple times, specifying multiple VGA controllers.
2298
The following parameters may be specified.
2299
 
2300
`enabled = 0|1'
2301 82 jeremybenn
     If 1 (true, the default), this VGA is enabled.  If 0, it is
2302 19 jeremybenn
     disabled.
2303
 
2304
`baseaddr = VALUE'
2305
     Set the base address of the VGA controller's memory mapped
2306 82 jeremybenn
     registers to VALUE.  The default is 0, which is probably not a
2307 19 jeremybenn
     sensible value.
2308
 
2309
     The VGA controller has a 12-bit address bus, with 7 32-bit
2310
     registers, at addresses 0x000 through 0x018, and two color lookup
2311 82 jeremybenn
     tables at addresses 0x800 through 0xfff.  The hardware cursor
2312 19 jeremybenn
     registers are not implemented, so addresses 0x01c through 0x7fc
2313
     are not used.
2314
 
2315
`irq = VALUE'
2316 82 jeremybenn
     Use VALUE as the IRQ number of this VGA controller.  Default value
2317 19 jeremybenn
     0.
2318
 
2319
`refresh_rate = VALUE'
2320 82 jeremybenn
     VALUE specifies number of cycles between screen dumps.  Default
2321 19 jeremybenn
     value is derived from the simulation clock cycle time (*note
2322
     Simulator Behavior: Simulator Behavior.), to correspond to dumping
2323
     50 times per simulated second.
2324
 
2325
`txfile = "FILE"'
2326
     FILE specifies the base of the filename for screen dumps.
2327
     Successive screen dumps will be in BMP format, in files with the
2328
     name `FILENNNN.bmp', where NNNN is a sequential count of the
2329 82 jeremybenn
     screen dumps starting at zero.  The default value is `"vga_out"'.
2330 19 jeremybenn
     For backwards compatibility, the alternative name `filename' is
2331
     supported for this parameter, but deprecated.
2332
 
2333
 
2334

2335
File: or1ksim.info,  Node: Frame Buffer Configuration,  Next: Keyboard Configuration,  Prev: Display Interface Configuration,  Up: Peripheral Configuration
2336
 
2337
3.4.7 Frame Buffer Configuration
2338
--------------------------------
2339
 
2340 82 jeremybenn
     Caution: The frame buffer is only partially implemented.  Its
2341 19 jeremybenn
     configuration fields are described here, but the component should
2342 82 jeremybenn
     not be used at this time.  Like the VGA controller, it is designed
2343 19 jeremybenn
     to make screen dumps to file.
2344
 
2345 82 jeremybenn
Frame buffer configuration is described in `section fb'.  This section
2346
may appear multiple times, specifying multiple frame buffers.  The
2347 19 jeremybenn
following parameters may be specified.
2348
 
2349
`enabled = 0|1'
2350 82 jeremybenn
     If 1 (true, the default), this frame buffer is enabled.  If 0, it
2351 19 jeremybenn
     is disabled.
2352
 
2353
`baseaddr = VALUE'
2354
     Set the base address of the frame buffer's memory mapped registers
2355 82 jeremybenn
     to VALUE.  The default is 0, which is probably not a sensible
2356
     value.
2357 19 jeremybenn
 
2358
     The frame buffer has an 121-bit address bus, with 4 32-bit
2359
     registers, at addresses 0x000 through 0x00c, and a PAL lookup
2360 82 jeremybenn
     table at addresses 0x400 through 0x4ff.  Addresses 0x010 through
2361 19 jeremybenn
     0x3fc and addresses 0x500 through 0x7ff are not used.
2362
 
2363
`refresh_rate = VALUE'
2364 82 jeremybenn
     VALUE specifies number of cycles between screen dumps.  Default
2365 19 jeremybenn
     value is derived from the simulation clock cycle time (*note
2366
     Simulator Behavior: Simulator Behavior.), to correspond to dumping
2367
     50 times per simulated second.
2368
 
2369
`txfile = "FILE"'
2370
     FILE specifies the base of the filename for screen dumps.
2371
     Successive screen dumps will be in BMP format, in files with the
2372
     name `FILENNNN.bmp', where NNNN is a sequential count of the
2373 82 jeremybenn
     screen dumps starting at zero.  The default value is `"fb_out"'.
2374 19 jeremybenn
     For backwards compatibility, the alternative name `filename' is
2375
     supported for this parameter, but deprecated.
2376
 
2377
 
2378

2379
File: or1ksim.info,  Node: Keyboard Configuration,  Next: Disc Interface Configuration,  Prev: Frame Buffer Configuration,  Up: Peripheral Configuration
2380
 
2381
3.4.8 Keyboard Configuration (PS2)
2382
----------------------------------
2383
 
2384 82 jeremybenn
The PS2 interface provided by Or1ksim is not documented.  It may be
2385 98 jeremybenn
based on the PS2 project at OpenCores, and found in the top level SVN
2386 82 jeremybenn
directory, `ps2'.  However this project lacks any documentation beyond
2387
its project webpage.  Since most PS2 interfaces follow the Intel i8042
2388 19 jeremybenn
standard, this is presumably what is expected with this device.
2389
 
2390
The implementation only provides for keyboard support, which is
2391 82 jeremybenn
modelled as a file of keystrokes.  There is no mouse support.
2392 19 jeremybenn
 
2393
     Caution: A standard i8042 device has two registers at addresses
2394 82 jeremybenn
     0x60 (command) and 0x64 (status).  Inspection of the code,
2395
     suggests that the Or1ksim component places these registers at
2396
     addresses 0x00 and 0x04.
2397 19 jeremybenn
 
2398
     The port of Linux for the OpenRISC 1000, which runs on Or1ksim
2399
     implements the i8042 device driver, anticipating these registers
2400 82 jeremybenn
     reside at their conventional address.  It seems unlikel that this
2401 19 jeremybenn
     code will work.
2402
 
2403
     This component should be used with caution.
2404
 
2405 82 jeremybenn
Keyboard configuration is described in `section kbd'.  This section may
2406
appear multiple times, specifying multiple keyboard interfaces.  The
2407 19 jeremybenn
following parameters may be specified.
2408
 
2409
`enabled = 0|1'
2410 82 jeremybenn
     If 1 (true, the default), this keyboard is enabled.  If 0, it is
2411 19 jeremybenn
     disabled.
2412
 
2413
`baseaddr = VALUE'
2414
     Set the base address of the keyboard's memory mapped registers to
2415 82 jeremybenn
     VALUE.  The default is 0, which is probably not a sensible value.
2416 19 jeremybenn
 
2417
     The keyboard PS/2 interface has an 3-bit address bus, with 2 8-bit
2418
     registers, at addresses 0x000 and 0x004.
2419
 
2420
          Caution: As noted above, a standard Intel 8042 interface
2421
          would expect to find these registers at locations 0x60 and
2422
          0x64, thus requiring at least a 7-bit bus.
2423
 
2424
`irq = VALUE'
2425 82 jeremybenn
     Use VALUE as the IRQ number of this Keyboard interface.  Default
2426 19 jeremybenn
     value 0.
2427
 
2428
`rxfile = "FILE"'
2429
     `file' specifies a file containing raw key stroke data, which
2430 82 jeremybenn
     models the input from a physical keyboard.  The default value is
2431 19 jeremybenn
     `"kbd_in"'.
2432
 
2433
 
2434

2435
File: or1ksim.info,  Node: Disc Interface Configuration,  Next: Generic Peripheral Configuration,  Prev: Keyboard Configuration,  Up: Peripheral Configuration
2436
 
2437
3.4.9 Disc Interface Configuration
2438
----------------------------------
2439
 
2440
The ATA/ATAPI disc controller used in Or1ksim is the OCIDEC (OpenCores
2441
IDE Controller) component implemented at OpenCores, and found in the
2442 98 jeremybenn
top level SVN directory, `ata'.  It is described in the document
2443 19 jeremybenn
`ATA/ATAPI-5 Core Specification' by Richard Herveille, which can be
2444 82 jeremybenn
found in the `doc' subdirectory.  It is a memory mapped component,
2445
which resides on the main OpenRISC Wishbone data bus.
2446 19 jeremybenn
 
2447 385 jeremybenn
     Warning: In the current release of Or1ksim, parsing of the ATA
2448
     section is broken. Users should not configure the disc interface
2449
     in this release.
2450
 
2451 82 jeremybenn
ATA/ATAPI configuration is described in `section ata'.  This section
2452
may appear multiple times, specifying multiple disc controllers.  The
2453 19 jeremybenn
following parameters may be specified.
2454
 
2455
`enabled = 0|1'
2456 82 jeremybenn
     If 1 (true, the default), this ATA/ATAPI interface is enabled.  If
2457 19 jeremybenn
     0, it is disabled.
2458
 
2459
`baseaddr = VALUE'
2460
     Set the base address of the ATA/ATAPI interface's memory mapped
2461 82 jeremybenn
     registers to VALUE.  The default is 0, which is probably not a
2462 19 jeremybenn
     sensible value.
2463
 
2464
     The ATA/ATAPI PS/2 interface has an 5-bit address bus, with 8
2465 82 jeremybenn
     32-bit registers.  Depending on the version of the OCIDEC
2466
     ATA/ATAPI interface selected (see `dev_id' below), not all
2467
     registers will be available.
2468 19 jeremybenn
 
2469
`irq = VALUE'
2470 82 jeremybenn
     Use VALUE as the IRQ number of this ATA/ATAPI interface.  Default
2471 19 jeremybenn
     value 0.
2472
 
2473
`dev_id = 1|2|3'
2474
     This parameter specifies which version of the OCIDEC ATA/ATAPI
2475 82 jeremybenn
     interface to model.  The default value is 1.
2476 19 jeremybenn
 
2477
     Version 1 supports only the `CTRL', `STAT' and `PCTR' registers.
2478
     Versions 2 & 3 add the `FCTR' registers, Version 3 adds the `DTR'
2479
     registers and the `RXD'/`TXD' registers.
2480
 
2481
`rev = VALUE'
2482
     Set the VALUE as the revision of the OCIDEC ATA/ATAPI interface.
2483 82 jeremybenn
     The default value is 1.  The default value is 0.  Its value should
2484
     be in the range 0-15.  Larger values are truncated with a warning.
2485 346 jeremybenn
     This only affects the reset value of the `STAT' register, where it
2486
     forms bits 24-27.
2487 19 jeremybenn
 
2488
`pio_mode0_t1 = VALUE'
2489
`pio_mode0_t2 = VALUE'
2490
`pio_mode0_t4 = VALUE'
2491
`pio_mode0_teoc = VALUE'
2492
     These parameters specify the timings for use with Programmed
2493 82 jeremybenn
     Input/Output (PIO) transfers.  They are specified as the number of
2494 19 jeremybenn
     clock cycles - 2, rounded up to the next highest integer, or zero
2495 82 jeremybenn
     if that would be negative.  The values should not exceed 255.  If
2496 19 jeremybenn
     they do, they will be ignored with a warning.
2497
 
2498
     See the ATA/ATAPI-5 specification for explanations of each of these
2499 82 jeremybenn
     timing parameters.  The default values are:
2500 19 jeremybenn
 
2501
          pio_mode0_t1   =  6
2502
          pio_mode0_t2   = 28
2503
          pio_mode0_t4   =  2
2504
          pio_mode0_teoc = 23
2505
 
2506
`dma_mode0_tm = VALUE'
2507
`dma_mode0_td = VALUE'
2508
`dma_mode0_teoc = VALUE'
2509
     These parameters specify the timings for use with DMA transfers.
2510
     They are specified as the number of clock cycles - 2, rounded up
2511
     to the next highest integer, or zero if that would be negative.
2512 82 jeremybenn
     The values should not exceed 255.  If they do, they will be
2513
     ignored with a warning.
2514 19 jeremybenn
 
2515
     See the ATA/ATAPI-5 specification for explanations of each of these
2516 82 jeremybenn
     timing parameters.  The default values are:
2517 19 jeremybenn
 
2518
          dma_mode0_tm   =  4
2519
          dma_mode0_td   = 21
2520
          dma_mode0_teoc = 21
2521
 
2522
 
2523
3.4.9.1 ATA/ATAPI Device Configuration
2524
......................................
2525
 
2526 82 jeremybenn
Within the `section ata', each device is specified separately.  The
2527 19 jeremybenn
device subsection is introduced by
2528
 
2529
     device VALUE
2530
 
2531 82 jeremybenn
VALUE is the device number, which should be 0 or 1.  The subsection
2532
ends with `enddevice'.  Note that if the same device number is
2533
specified more than once, the previous values will be overwritten.
2534
Within the `device' subsection, the following parameters may appear:
2535 19 jeremybenn
 
2536
`type = VALUE'
2537
     VALUEspecifies the type of device: 0 (the default) for "not
2538
     connected", 1 for hard disk simulated in a file and 2 for local
2539
     system hard disk.
2540
 
2541
`file = "FILENAME"'
2542
     `filename' specifies the file to be used for a simulated ATA
2543 82 jeremybenn
     device if the file type (see `type' above) is 1.  Default value
2544 346 jeremybenn
     `"ata_fileN"', where N is the device number.
2545 19 jeremybenn
 
2546
`size = VALUE'
2547
     VALUE specifies the size of a simulated ATA device if the file
2548 82 jeremybenn
     type (see `type' above) is 1.  The default value is zero.
2549 19 jeremybenn
 
2550
`packet = 0|1'
2551 82 jeremybenn
     If 1 (true), implement the PACKET command feature set.  If 0 (the
2552 19 jeremybenn
     default), do not implement the PACKET command feature set.
2553
 
2554
`firmware = "STR"'
2555
     Firmware to report in response to the "Identify Device" command.
2556
     Default `"02207031"'.
2557
 
2558
`heads = VALUE'
2559 82 jeremybenn
     Number of heads in the device.  Default 7, use -1 to disable all
2560 19 jeremybenn
     heads.
2561
 
2562
`sectors = VALUE'
2563 82 jeremybenn
     Number of sectors per track in the device.  Default 32.
2564 19 jeremybenn
 
2565
`mwdma = 0|1|2|-1'
2566 82 jeremybenn
     Highest multi-word DMA mode supported.  Default 2, use -1 to
2567 19 jeremybenn
     disable.
2568
 
2569
`pio = 0|1|2|3|4'
2570 82 jeremybenn
     Highest PIO mode supported.  Default 4.
2571 19 jeremybenn
 
2572
 
2573

2574
File: or1ksim.info,  Node: Generic Peripheral Configuration,  Prev: Disc Interface Configuration,  Up: Peripheral Configuration
2575
 
2576
3.4.10 Generic Peripheral Configuration
2577
---------------------------------------
2578
 
2579
When used as a library (*note Simulator Library: Simulator Library.),
2580
Or1ksim makes provision for any additional peripheral to be implemented
2581 82 jeremybenn
externally.  Any read or write access to this peripheral's memory map
2582
generates "upcall"s to an external handler.  This interface can support
2583 19 jeremybenn
either C or C++, and was particularly designed to facilitate support
2584
for OSCI SystemC (see `http://www.systemc.org').
2585
 
2586
Generic peripheral configuration is described in `section generic'.
2587
This section may appear multiple times, specifying multiple external
2588 82 jeremybenn
peripherals.  The following parameters may be specified.
2589 19 jeremybenn
 
2590
`enabled = 0|1'
2591 82 jeremybenn
     If 1 (true, the default), this ATA/ATAPI interface is enabled.  If
2592 19 jeremybenn
     0, it is disabled.
2593
 
2594
`baseaddr = VALUE'
2595
     Set the base address of the generic peripheral's memory mapped
2596 82 jeremybenn
     registers to VALUE.  The default is 0, which is probably not a
2597 19 jeremybenn
     sensible value.
2598
 
2599
     The size of the memory mapped register space is controlled by the
2600
     `size' paramter, described below.
2601
 
2602
`size = VALUE'
2603
     Set the size of the generic peripheral's memory mapped register
2604 82 jeremybenn
     space to VALUE bytes.  Any read or write accesses to addresses with
2605 19 jeremybenn
     offsets of 0 to VALUE-1 bytes from the base address specified in
2606
     parameter `baseaddr' (see above) will be directed to the external
2607
     interface.
2608
 
2609 82 jeremybenn
     VALUE will be rounded up the nearest power of 2.  It's default
2610
     value is zero.  If VALUE is not an exact power of two, accesses to
2611 19 jeremybenn
     address offsets of VALUE or above up to the next power of 2 will
2612
     generate a warning, and have no effect (reads will return zero).
2613
 
2614
`name = "STR"'
2615 82 jeremybenn
     This gives the peripheral the name `"STR"'.  This is used to
2616 19 jeremybenn
     identify the peripheral in error messages and warnings, and when
2617 82 jeremybenn
     reporting its status.  The default value is
2618 19 jeremybenn
     `"anonymous external peripheral"'.
2619
 
2620
`byte_enabled = 0|1'
2621
`hw_enabled = 0|1'
2622
`word_enabled = 0|1'
2623
     If 1 (true, the default), these parameters respectively enable the
2624 82 jeremybenn
     device for byte wide, half-word wide and word wide accesses.  If 0,
2625 19 jeremybenn
     accesses of that width will fail.
2626
 
2627
 
2628

2629
File: or1ksim.info,  Node: Interactive Command Line,  Next: Verification API,  Prev: Configuration,  Up: Top
2630
 
2631
4 Interactive Command Line
2632
**************************
2633
 
2634
If started with the `-f' flag, or if interrupted with `ctrl-C', Or1ksim
2635 82 jeremybenn
provides the user with an interactive command line.  The commands
2636 19 jeremybenn
available, which may not be abbreviated, are:
2637
 
2638
`q'
2639
     Exit the simulator
2640
 
2641
`r'
2642 82 jeremybenn
     Display all the General Purpose Registers (GPRs).  Also shows the
2643 19 jeremybenn
     just executed and next to be executed instructions symbolically
2644
     and the state of the flag in the Supervision Register.
2645
 
2646
`t'
2647
     Execute the next instruction and then display register/instruction
2648
     information as with the `r' command (see above).
2649
 
2650
`run NUM [ hush ]'
2651 82 jeremybenn
     Execute NUM instructions.  The register/instruction information is
2652 19 jeremybenn
     displayed after each instruction, as with the `r' command (see
2653
     above) _unless_ `hush' is specified.
2654
 
2655
`pr REG VALUE'
2656
     Patch register REG with VALUE.
2657
 
2658
`dm FROMADDR [ TOADDR ]'
2659 82 jeremybenn
     Display memory bytes between FROMADDR and TOADDR.  If TOADDR is
2660
     not given, 64 bytes are displayed, starting at FROMADDR.
2661 19 jeremybenn
 
2662
          Caution: The output from this command is broken (a bug).
2663 82 jeremybenn
          Or1ksim attempts to print out 16 bytes per row.  However,
2664 19 jeremybenn
          instead of printing out the address at the start of each row,
2665
          it prints the address (of the first of the 16 bytes) before
2666
          _each_ byte.
2667
 
2668
`de FROMADDR [ TOADDR ]'
2669 82 jeremybenn
     Disassemble code between FROMADDR and TOADDR.  If TOADDR is not
2670 19 jeremybenn
     given, 16 instructions are disassembled.
2671
 
2672
     The disassembly is entirely numerical, and gives no symbolic
2673
     information.
2674
 
2675
`pm ADDR VALUE'
2676
     Patch the 4 bytes in memory starting at ADDR with the 32-bit VALUE.
2677
 
2678
`pc VALUE'
2679
     Patch the program counter with VALUE.
2680
 
2681
`cm FROMADDR TOADDR SIZE'
2682
     Copy SIZE bytes in memory from FROMADDR to TOADDR.
2683
 
2684
`break ADDR'
2685
     Toggle the breakpoint set at ADDR.
2686
 
2687
`breaks'
2688
     List all set breakpoints
2689
 
2690
`reset'
2691 82 jeremybenn
     Reset the simulator.  Includes modeling a reset of the processor,
2692
     so execution will restart from the reset vector location, 0x100.
2693 19 jeremybenn
 
2694
`hist'
2695
     If saving the execution history has been configured (*note
2696
     Simulator Behavior: Simulator Behavior.), display the execution
2697
     history.
2698
 
2699
`stall'
2700
     Stall the processor, so that control is passed to the debug unit.
2701 82 jeremybenn
     When stalled, the processor can execute no instructions.  This
2702 19 jeremybenn
     command is useful when debugging the JTAG interface, used by
2703
     debuggers such as GDB.
2704
 
2705
`unstall'
2706 82 jeremybenn
     Unstall the processor, so that normal execution can continue.
2707
     This command is useful when debugging the JTAG interface, used by
2708 19 jeremybenn
     debuggers such as GDB.
2709
 
2710
`stats CATEGORY | clear'
2711
     Print the statistics for the given CATEGORY, if available, or
2712 82 jeremybenn
     clear if `clear' is specified.  The categories are:
2713 19 jeremybenn
 
2714
    1
2715
          Miscellaneous statistics: branch predictions (if branch
2716
          predictions are enabled), branch target cache model (if
2717
          enabled), cache (if enbaled), MMU (if enabled) and number of
2718
          addtional load & store cycles.
2719
 
2720
          *Note Configuring the OpenRisc Achitectural Components: Core
2721
          OpenRISC Configuration, for details of how to enable these
2722
          various features.
2723
 
2724
    2
2725 82 jeremybenn
          Instruction usage statistics.  Requires hazard analysis to be
2726 19 jeremybenn
          enabled (*note CPU Configuration: CPU Configuration.).
2727
 
2728
    3
2729 82 jeremybenn
          Instruction dependency statistics.  Requires hazard analysis
2730 19 jeremybenn
          to be enabled (*note CPU Configuration: CPU Configuration.).
2731
 
2732
    4
2733 82 jeremybenn
          Functional unit dependency statistics.  Requires hazard
2734 19 jeremybenn
          analysis to be enabled (*note CPU Configuration: CPU
2735
          Configuration.).
2736
 
2737
    5
2738 82 jeremybenn
          Raw register usage over time.  Requires hazard analysis to be
2739 19 jeremybenn
          enabled (*note CPU Configuration: CPU Configuration.).
2740
 
2741
    6
2742 82 jeremybenn
          Store buffer statistics.  Requires the store buffer to be
2743 19 jeremybenn
          enabled (*note CPU Configuration: CPU Configuration.).
2744
 
2745
 
2746
`info'
2747
     Display detailed information about the simulator configuration.
2748
     This is quite a lengthy about, because all MMU TLB information is
2749
     displayed.
2750
 
2751
`dv FROMADDR [ TOADDR ] [ MODULE ]'
2752
     Dump the area of memory between FROMADDR and TOADDR as Verilog
2753 82 jeremybenn
     code for a synchronous, 23-bit wide SRAM module, named MODULE.  If
2754 19 jeremybenn
     TOADDR is not specified, then 64 bytes are dumped (as 16 32-bit
2755 82 jeremybenn
     words).  If MODULE is not specified, `or1k_mem' is used.
2756 19 jeremybenn
 
2757
     To save to a file, use the redirection function (described after
2758
     this table, below).
2759
 
2760
`dh FROMADDR [ TOADDR ]'
2761
     Dump the area of memory between FROMADDR and TOADDR as 32-bit hex
2762 82 jeremybenn
     numbers (no `0x', or `32'h' prefix).  If TOADDR is not specified,
2763 19 jeremybenn
     then 64 bytes are dumped (as 16 32-bit words).
2764
 
2765
     To save to a file, use the redirection function (described after
2766
     this table, below).
2767
 
2768
`setdbch'
2769 82 jeremybenn
     Toggle debug channels on/off.  *Note Standalone Simulator:
2770 19 jeremybenn
     Standalone Simulator, for a description of specifying debug
2771
     channels on the command line.
2772
 
2773
`set SECTION PARAM = VALUE'
2774
     Set the configuration parameter PARA in section SECTION to VALUE.
2775
     *Note Configuration: Configuration, for details of configuration
2776
     parameters and their settings.
2777
 
2778
`debug'
2779 82 jeremybenn
     Toggle the simulator debug mode.  *Note Debug Interface
2780 19 jeremybenn
     Configuration: Debug Interface Configuration, for information on
2781
     this parameter.
2782
 
2783
          Caution: This is effectively enabling or disabling the debug
2784 82 jeremybenn
          unit.  It does not effect the remote GDB debug interface.
2785 19 jeremybenn
          However using the remote debug interface while the debug unit
2786
          is disabled will lead to undefined behavior and likely crash
2787
          Or1ksim
2788
 
2789
`cuc'
2790
     Enter the the Custom Unit Compiler command prompt (*note CUC
2791
     Configuration: CUC Configuration.).
2792
 
2793
          Caution: The CUC must be properly configured, for this to
2794 82 jeremybenn
          succeed.  In particular a timing file must be available and
2795
          readable.  Otherwise Or1ksim will crash.
2796 19 jeremybenn
 
2797
`help'
2798
     Print out brief information about each command available.
2799
 
2800
`mprofile [-vh] [-m M] [-g N] [-f FILE] FROM TO'
2801 82 jeremybenn
     Run the memory profiling utility.  This follows the same usage as
2802 19 jeremybenn
     the standalone command (*note Memory Profiling Utility: Memory
2803
     Profiling Utility.).
2804
 
2805
`profile [-vhcq] [-g FILE]'
2806 82 jeremybenn
     Run the instruction profiling utility.  This follows the same
2807
     usage as the standalone command (*note Profiling Utility:
2808
     Profiling Utility.).
2809 19 jeremybenn
 
2810
 
2811
For all commands, it is possible to redirect the output to a file, by
2812
using the redirection operator, `>'.
2813
 
2814
     COMMAND > FILENAME
2815
 
2816
This is particularly useful for commands dumping a large amount of
2817
output, such as `dv'.
2818
 
2819
     Caution: Unfortunately there is a serious bug with the redirection
2820 82 jeremybenn
     operator.  It does not return output to standard output after the
2821
     command completes.  Until this bug is fixed, file redirection
2822 19 jeremybenn
     should not be used.
2823
 
2824

2825
File: or1ksim.info,  Node: Verification API,  Next: Code Internals,  Prev: Interactive Command Line,  Up: Top
2826
 
2827
5 Verification API (VAPI)
2828
*************************
2829
 
2830
The Verification API (VAPI) provides a TCP/IP interface to allow
2831 82 jeremybenn
components of the simulation to be controlled externally.  The
2832
interface is polled for new requests on each simulated clock cycle.
2833
Components within the simulator may send responses to such requests.
2834 19 jeremybenn
 
2835 82 jeremybenn
The inteface is an asynchronous duplex protocol.  On the request side
2836
it provides for simple commands, known as VAPI IDs (a 32 bit integer),
2837
with a single piece of data (also a 32 bit integer).  On the send side,
2838
it provides for sending a single VAPI ID and data.  However there is no
2839
explicit command-response structure.  Some components just accept
2840
requests (e.g.  to set values), some just generate sends (to report
2841 19 jeremybenn
values), and some do both.
2842
 
2843
Each component has a base ID (32 bit) and its commands will start from
2844 82 jeremybenn
that base ID.  This provides a simple partitioning of the command space
2845
amongst components.  Request commands will be directed to the component
2846 19 jeremybenn
with the closest base ID lower than the VAPI ID of the command.
2847
 
2848
Thus if there are two components with base IDs of 0x200 and 0x300, and
2849
a request with VAPI ID of 0x203 is received, it will be directed to the
2850
first component as its command #3.
2851
 
2852
The results of VAPI interactions are logged (by default in `vapi.log'
2853
unless an alternative is specified in `section vapi').
2854
 
2855
Currently the following components support VAPI:
2856
 
2857
Debug Unit
2858
     Although the Debug Unit can specify a base VAPI ID, it is not used
2859
     to send commands or receive requests.
2860
 
2861
     Instead, if the base VAPI ID is set, all remote JTAG protocol
2862
     exchanges are logged in the VAPI log file.
2863
 
2864
UART
2865
     If a base VAPI ID is specified, the UART sends details of any
2866
     chars or break characters sent, with dteails of the line control
2867
     register etc encoded in the data packet sent.
2868
 
2869
     This supports a single VAPI command request, but encodes a
2870
     sub-command in the top 8 bits of the associated data.
2871
 
2872
    `0x00'
2873
          This stuffs the least significant 8 bits of the data into the
2874
          serial register of the UART and the next 8 bits into the line
2875
          control register, effectively providing control of the next
2876
          character to be sent or received.
2877
 
2878
    `0x01'
2879
          The divisor latch bytes are set from the least significant 16
2880
          bits of the data.
2881
 
2882
    `0x02'
2883
          The line control register is set from bits 15-8 of the data.
2884
 
2885
    `0x03'
2886
          The UART skew is set from the least significant 16 bits of
2887
          the data
2888
 
2889
    `0x04'
2890
          If the 16th most significant bit of the data is 1, start
2891 82 jeremybenn
          sending breaks, otherwise stop sending breaks.  The breaks
2892
          are sent or cleared after the number of UART clock divider
2893
          ticks specified by the data (immediately if the data is zero).
2894 19 jeremybenn
 
2895
 
2896
DMA
2897
     Although the DMA unit supports a base VAPI ID in its configuration
2898
     (`section dma'), no VAPI data is sent, nor VAPI requests currently
2899
     implemented.
2900
 
2901
Ethernet
2902 82 jeremybenn
     The following requests are handled by the Ethernet.  Specified
2903 19 jeremybenn
     symbolically, these are the increments from the base VAPI ID of the
2904 82 jeremybenn
     Ethernet.  At present no implementation is provided behind these
2905 19 jeremybenn
     VAPI requests.
2906
 
2907
    `ETH_VAPI_DATA (0)'
2908
 
2909
    `ETH_VAPI_CTRL (0)'
2910
 
2911
GPIO
2912
     If a base VAPI ID is specified, the GPIO sends out on its base
2913
     VAPI ID (symbolically, GPIO_VAPI_DATA (0) offset from the base
2914
     VAPI ID) any changes in outputs.
2915
 
2916 82 jeremybenn
     The following requests are handled by the GPIO.  Specified
2917 19 jeremybenn
     symbolically, these are the increments from the VAPI base ID of the
2918
     GPIO.
2919
 
2920
    `GPIO_VAPI_DATA (0)'
2921
          Set the next input to the commands data field
2922
 
2923
    `GPIO_VAPI_AUX (1)'
2924
          Set the GPIO auxiliary inputs to the data field
2925
 
2926
    `GPIO_VAPI_CLOCK (2)'
2927
          Add an external GPIO clock trigger of period specified in the
2928
          data field.
2929
 
2930
    `GPIO_VAPI_RGPIO_OE (3)'
2931
          Set the GPIO output enable to the data field
2932
 
2933
    `GPIO_VAPI_RGPIO_INTE (4)'
2934
          Set the next interrupt to the data field
2935
 
2936
    `GPIO_VAPI_RGPIO_PTRIG (5)'
2937
          Set the next trigger to the data field
2938
 
2939
    `GPIO_VAPI_RGPIO_AUX (6)'
2940
          Set the next auxiliary input to the data field
2941
 
2942
    `GPIO_VAPI_RGPIO_CTRL (7)'
2943
          Set th next control input to the data field
2944
 
2945
 
2946
 
2947

2948
File: or1ksim.info,  Node: Code Internals,  Next: GNU Free Documentation License,  Prev: Verification API,  Up: Top
2949
 
2950
6 A Guide to Or1ksim Internals
2951
******************************
2952
 
2953 82 jeremybenn
These are notes to help those wanting to extend Or1ksim.  This section
2954 19 jeremybenn
assumes the use of a tag file, so file locations of entities'
2955 82 jeremybenn
definitions are not in general provided.  For more on tags, see the
2956
Linux manual page for `etags'.  A tag file can be created with:
2957 19 jeremybenn
 
2958
     make tags
2959
 
2960
* Menu:
2961
 
2962
* Coding Conventions::
2963
* Global Data Structures::
2964
* Concepts::
2965
* Internal Debugging::
2966 104 jeremybenn
* Regression Testing::
2967 19 jeremybenn
 
2968

2969
File: or1ksim.info,  Node: Coding Conventions,  Next: Global Data Structures,  Up: Code Internals
2970
 
2971
6.1 Coding Conventions for Or1ksim
2972
==================================
2973
 
2974
This chapter provides some guidelines for coding, to facilitate
2975
extensions to Or1ksim
2976
 
2977
_GNU Coding Standard_
2978
     Code should follow the GNU coding standard for C
2979 82 jeremybenn
     (`http://www.gnu.org/prep/standards/'.  If in doubt, put your code
2980 19 jeremybenn
     through the `indent' program.
2981
 
2982
_`#include' headers_
2983
     All C source code files should include `config.h' before any other
2984
     file.
2985
 
2986
     This should be followed by inclusion of any system headers (but see
2987
     the comments about portability and `port.h' below) and then by any
2988
     Or1ksim package headers.
2989
 
2990
     If `port.h' is required, it should be the first package header to
2991
     be included after the system headers.
2992
 
2993
     All C source code and header files should directly include any
2994 82 jeremybenn
     system or package header they depend on, i.e.  not rely on any
2995
     other header having already included it.  The two exceptions are
2996 19 jeremybenn
 
2997
       1. All header files may assume that `config.h' has already been
2998
          included.
2999
 
3000
       2. System headers which impose portability problems should be
3001
          included by using the package header `port.h', rather than
3002 82 jeremybenn
          the system headers themselves.  This is the case for code
3003 19 jeremybenn
          requiring
3004
 
3005
             * `strndup' (from `string.h')
3006
 
3007
             * Integer types (`intN_t', `uintN_t') (from `inttypes.h').
3008
 
3009
             * `isblank' (from `ctype.h')
3010
 
3011
 
3012
 
3013
_`#include' files once only_
3014
     All include files should be protected by `#ifndef' to ensure their
3015 82 jeremybenn
     definitions are only included once.  For instance a header file
3016 19 jeremybenn
     `X-Y.H' should surround its contents with:
3017
 
3018
          #ifndef X_Y__H
3019
          #define X_Y__H
3020
 
3021
          
3022
 
3023
          #endif  /* X_Y__H */
3024
 
3025
_Avoid `typedef'_
3026
     The GNU coding style for C does not have a clear way to distinguish
3027 82 jeremybenn
     between user type name and user variables.  For this reason
3028 19 jeremybenn
     `typedef' should be avoided except for the most ubiquitous user
3029 82 jeremybenn
     defined types.  This makes the code much easier to read.
3030 19 jeremybenn
 
3031
     There are some `typedef' declarations in the `argtable2' library
3032
     and the ELF and COFF headers, because this code is taken from
3033
     other places.
3034
 
3035
     Within Or1ksim legacy uses of `typedef' have largely been purged,
3036
     except in the Custom Unit Compiler (*note Custom Unit Compiler
3037
     (CUC) Configuration: CUC Configuration.).
3038
 
3039
     The remaining uses of `typedef' occur in two places:
3040
 
3041
        * `port/port.h' defines types to replace those in header files
3042
          that are not available (character functions, string
3043
          duplication, integer types).
3044
 
3045
          `cpu/or1k/arch.h' defines types for the key Or1ksim entities:
3046
          addresses (`oraddr_t'), unsigned register values (`uorreg_t')
3047
          and signed register (`orreg_t') values.
3048
 
3049
 
3050
     Where new types are defined, they should appear in one of these two
3051 82 jeremybenn
     files as appropriate.  Or1ksim specific types appearing in
3052
     `arch.h' should always have the suffix `_h'.
3053 19 jeremybenn
 
3054
_Don't begin names with underscore_
3055
     Names beginning with `_' are intended to be part of the C
3056 82 jeremybenn
     infrastructure.  They should not be used in the simulator code.
3057 19 jeremybenn
 
3058
_Keep Non-global top level entities static_
3059
     All top level entities (functions, variables), which are not
3060
     explicitly part of a global interface should be declared static.
3061
     This ensures that unwanted connections are not inadvertently built
3062
     across the program.
3063
 
3064
_Use of `inline'_
3065 82 jeremybenn
     Code should not be declared `inline'.  Modern compilers can work
3066 19 jeremybenn
     out for themselves what is best in this respect.
3067
 
3068
_Initialization_
3069 82 jeremybenn
     All data structures should be explicitly initialized.  In
3070
     particular code should not rely on static data structures being
3071
     initialized to zero.
3072 19 jeremybenn
 
3073
     The rationale is that in future static data structures may become
3074 82 jeremybenn
     dynamic.  This has been a particular source of bugs in Or1ksim
3075 19 jeremybenn
     historically.
3076
 
3077
     A specific case is with new peripherals, which should always
3078
     include a `start' function to pre-initialize all configuration
3079
     parameters to sensible defaults
3080
 
3081
_Configuration Validation_
3082
     All configuration values should be validated, preferably when
3083
     encountered, if not when the `section' is closed, or otherwise at
3084
     run time when the parameter is first used.
3085
 
3086
 
3087

3088
File: or1ksim.info,  Node: Global Data Structures,  Next: Concepts,  Prev: Coding Conventions,  Up: Code Internals
3089
 
3090
6.2 Global Data Structures
3091
==========================
3092
 
3093
`config'
3094
     The global variable `config' of type `struct config' holds the
3095
     configuration data for some of the Or1ksim components which are
3096 82 jeremybenn
     always present.  At present the components are:
3097 19 jeremybenn
 
3098
        * The simulator defined in `section sim' (*note Simulator
3099
          Configuration: Simulator Configuration.).
3100
 
3101
        * The Verification API (VAPI) defined  in `section vapi' (*note
3102
          Verification API (VAPI) Configuration: Verification API
3103
          Configuration.).
3104
 
3105
        * The Custom Unit Compiler (CUC), defined in `section cuc'
3106
          (*note Custom Unit Compiler (CUC) Configuration: CUC
3107
          Configuration.).
3108
 
3109
        * The CPU, defined in `section cpu' (*note CPU Configuration:
3110
          CPU Configuration.).
3111
 
3112
        * The data cache (but not the instruction cache), defined in
3113
          `section dc' (*note Cache Configuration: Cache
3114
          Configuration.).
3115
 
3116
        * The power management unit, defined in `section pm' (*note
3117
          Power Management Configuration: Power Management
3118
          Configuration.).
3119
 
3120
        * The programmable interrupt controller, defined in
3121
          `section pic' (*note Interrupt Configuration: Interrupt
3122
          Configuration.).
3123
 
3124
        * Branch prediciton, defined in `section bpb' (*note Branch
3125
          Prediction Configuration: Branch Prediction Configuration.).
3126
 
3127
        * The debug unit, defined in `section debug' (*note Debug
3128
          Interface Configuration: Debug Interface Configuration.).
3129
 
3130
 
3131
     This struct is made of a collection of structs, one for each
3132 82 jeremybenn
     component.  For example the simulator configuration is held in
3133 19 jeremybenn
     `config.sim'.
3134
 
3135
`config'
3136
     This is a linked list of data structures holding configuration data
3137
     for all sections which are not held in the main `config' data
3138 82 jeremybenn
     structure.  In general these are components (such as peripherals
3139
     and memory) which may occur multiple times.  However it also
3140
     handles some architectural components which may occur only once,
3141
     such as the memory management units, the instruction cache, the
3142
     interrupt controller and branch prediction.
3143 19 jeremybenn
 
3144
`runtime'
3145
     The global variable `runtime' of type `struct runtime' holds all
3146 82 jeremybenn
     the runtime information about the simulation.  To access this
3147 19 jeremybenn
     variable, `sim-config.h' must be included.
3148
 
3149
     This struct is itself made of 3 other structs, `cpu' (for CPU run
3150
     time state), `vapi' (for Verification API state) and `cuc' (for
3151
     Custom Unit Compiler state).
3152
 
3153
 
3154

3155
File: or1ksim.info,  Node: Concepts,  Next: Internal Debugging,  Prev: Global Data Structures,  Up: Code Internals
3156
 
3157
6.3 Concepts
3158
============
3159
 
3160
_Output Redirection_
3161 82 jeremybenn
     The current output stream is held in `runtime.cpu.fout'.  Output
3162 19 jeremybenn
     should be explicitly written to this stream, or may use the
3163
     `PRINTF' macro, which will write its arguments to this output
3164
     stream.
3165
 
3166
_Reset Hooks_
3167
     Any peripheral may register a routine to be called when the the
3168
     processor is reset by calling `reg_sim_reset', providing a
3169 82 jeremybenn
     function and pointer to a data structure as arguments.  On reset
3170 19 jeremybenn
     that function will be called with the data stucture pointer as
3171
     argument.
3172
 
3173 432 jeremybenn
_Interrupts_
3174
     An internal peripheral can model the effect of an interrupt being
3175
     asserted by calling `report_interrupt'.  This is used for both edge
3176
     and level sensitive interrupts.
3177 19 jeremybenn
 
3178 432 jeremybenn
     The effect is to set the corresponding bit in the PICSR SPR and to
3179
     queue an interrupt exception to take place after the current
3180
     instruction completes execution.
3181
 
3182
     Externally, the different interrupts require different mechanisms
3183
     for clearing.  Level sensitive interrupts should be cleared by
3184
     deasserting the interrupt line, edge sensitive interrupts by
3185
     clearing the corresponding bit in the PICSR SPR.
3186
 
3187
     Internally this amounts to the same thing (clearing the PICSPR
3188
     bit), so a single function is provided, `clear_interrupt'.  Note
3189
     however that when level sensitive interrupts are configured, PICSR
3190
     is read only, and can only be cleared by calling
3191
     `clear_interrupt'.  Using the two functions provided will ensure
3192
     the peripheral works correctly whichever type of interrupt is used.
3193
 
3194
          Note: Until an interrupt is cleared, all subsequent
3195
          interrupts are ignored with a warning.
3196
 
3197
 
3198 19 jeremybenn

3199 104 jeremybenn
File: or1ksim.info,  Node: Internal Debugging,  Next: Regression Testing,  Prev: Concepts,  Up: Code Internals
3200 19 jeremybenn
 
3201
6.4 Internal Debugging
3202
======================
3203
 
3204
The function `debug' is like `printf', but with an extra first
3205 82 jeremybenn
argument, which is the debug level.  If the debug level specified in
3206
the simulator configuration (*note Simulator Behavior: Simulator
3207
Behavior.) is greater than or equal to this value, the remaining
3208
arguments are printed to the current output stream (*note Output
3209
Redirection: Output Redirection.).
3210 19 jeremybenn
 
3211

3212 104 jeremybenn
File: or1ksim.info,  Node: Regression Testing,  Prev: Internal Debugging,  Up: Code Internals
3213
 
3214
6.5 Regression Testing
3215
======================
3216
 
3217
Or1ksim now includes a regression test suite for both standalone and
3218
library usage as described earlier (*note Building and Installing:
3219
Build and Install.).  Running the tests requires that the OpenRISC
3220
toolchain and DejaGNU are both installed.
3221
 
3222
Tests are written using `expect', a derivative of TCL.  Documentation
3223
of DejaGnu, `expect' and TCL are freely available on the Web.  The
3224
Embecosm Application Note 8, `Howto: Using DejaGnu for Testing: A
3225
Simple Introduction' (`http://www.embecosm.com/download/ean8.html')
3226
provides a concise introduction.
3227
 
3228
All test code is found in the `testsuite' directory.  The key files and
3229
directories used are as follows.
3230
 
3231
`global-conf.exp'
3232
     This is the global DejaGNU configuration file used to set up
3233
     parameters common to all tests.  If the user has the environment
3234
     varialbe `DEJAGNU' defined, it will be used instead, but this is
3235
     not recommended.
3236
 
3237
`Makefile.am'
3238
     This is the top level `automake' file for the testsuite.  The only
3239
     changes likely to be needed here is additional local cleanup of
3240
     files created by new tests.
3241
 
3242
`README'
3243
     This contains details of all the tests
3244
 
3245
`config'
3246
     This contains DejaGnu board configurations.  Since the tests are
3247
     generally run on a Unix host, this should just contain `Unix.exp'.
3248
 
3249
`lib'
3250
     This contains DejaGnu tool specific configurations.  "Tool" has a
3251
     specific meaning in DejaGNU, referring just to a grouping of
3252
     tests.  In this case there are two such "tools", "or1ksim" and
3253
     "libsim" for tests of the standalone tool and tests of the library.
3254
 
3255
     Corresponding to this, there are two tool specific configuration
3256
     files, `or1ksim.exp' and `libsim.exp'.  These contain `expect'/TCL
3257
     procedures for common use among the tests.
3258
 
3259
`libsim.tests'
3260
`or1ksim.tests'
3261
     These are the directories of tests of the Or1ksim library.  They
3262
     also include Or1ksim configuration files and each has a
3263
     `Makefile.am' file.  `Makefile.am' should be updated whenever
3264
     files are added to this directory, to ensure they are included in
3265
     the distribution.
3266
 
3267
`test-code'
3268
     These are all the test programs to be compiled on the host (each
3269
     in its own directory).  In general these are programs to support
3270
     testing of the library, and build various programs linking in the
3271
     library.
3272
 
3273
`test-code'
3274
     These are all the test programs to be compiled with the OpenRISC
3275
     tool chain to run with either standalone Or1ksim or the library.
3276
     This directory includes its own `configure.ac', since it must set
3277
     up a separate tool chain based on the target, not the host.
3278
 
3279
 
3280
To add a new test needs the following steps.
3281
 
3282 346 jeremybenn
   * Put new host C code in its own directory within `test-code'.  Add
3283 104 jeremybenn
     the directory to the existing `Makefile.am' in the `test-code'
3284
     directory and create a `Makefile.am' in the new directory to drive
3285 346 jeremybenn
     building the test program(s).  Don't forget to add the new
3286 104 jeremybenn
     `Makefile' to the top level `configure.ac' so it gets generated.
3287
     Not all tests require code here.
3288
 
3289 346 jeremybenn
   * Put new target C code in its own directory within `test-code-or1k'.
3290
     Once again modify & create `Makefile.am'.  This time modify the
3291
     `configure.ac' in the `test-code-or1k' so the `Makefile' gets
3292
     generated.  The existing programs provide examples to start from,
3293
     including custom linker scripts where needed.
3294 104 jeremybenn
 
3295
   * Add one or more tests and configuration files to the relevant
3296 346 jeremybenn
     "tool" test directory.  Use the existing tests as templates.  They
3297 104 jeremybenn
     make heavy use of the `expect'/TCL procedures in the `config'
3298
     directory to facilitate driving the tests.
3299
 
3300
 
3301

3302 19 jeremybenn
File: or1ksim.info,  Node: GNU Free Documentation License,  Next: Index,  Prev: Code Internals,  Up: Top
3303
 
3304
7 GNU Free Documentation License
3305
********************************
3306
 
3307
                      Version 1.2, November 2002
3308
 
3309
     Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
3310
     51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
3311
 
3312
     Everyone is permitted to copy and distribute verbatim copies
3313
     of this license document, but changing it is not allowed.
3314
 
3315
  0. PREAMBLE
3316
 
3317
     The purpose of this License is to make a manual, textbook, or other
3318
     functional and useful document "free" in the sense of freedom: to
3319
     assure everyone the effective freedom to copy and redistribute it,
3320
     with or without modifying it, either commercially or
3321
     noncommercially.  Secondarily, this License preserves for the
3322
     author and publisher a way to get credit for their work, while not
3323
     being considered responsible for modifications made by others.
3324
 
3325
     This License is a kind of "copyleft", which means that derivative
3326
     works of the document must themselves be free in the same sense.
3327
     It complements the GNU General Public License, which is a copyleft
3328
     license designed for free software.
3329
 
3330
     We have designed this License in order to use it for manuals for
3331
     free software, because free software needs free documentation: a
3332
     free program should come with manuals providing the same freedoms
3333
     that the software does.  But this License is not limited to
3334
     software manuals; it can be used for any textual work, regardless
3335
     of subject matter or whether it is published as a printed book.
3336
     We recommend this License principally for works whose purpose is
3337
     instruction or reference.
3338
 
3339
  1. APPLICABILITY AND DEFINITIONS
3340
 
3341
     This License applies to any manual or other work, in any medium,
3342
     that contains a notice placed by the copyright holder saying it
3343
     can be distributed under the terms of this License.  Such a notice
3344
     grants a world-wide, royalty-free license, unlimited in duration,
3345
     to use that work under the conditions stated herein.  The
3346
     "Document", below, refers to any such manual or work.  Any member
3347
     of the public is a licensee, and is addressed as "you".  You
3348
     accept the license if you copy, modify or distribute the work in a
3349
     way requiring permission under copyright law.
3350
 
3351
     A "Modified Version" of the Document means any work containing the
3352
     Document or a portion of it, either copied verbatim, or with
3353
     modifications and/or translated into another language.
3354
 
3355
     A "Secondary Section" is a named appendix or a front-matter section
3356
     of the Document that deals exclusively with the relationship of the
3357
     publishers or authors of the Document to the Document's overall
3358
     subject (or to related matters) and contains nothing that could
3359
     fall directly within that overall subject.  (Thus, if the Document
3360
     is in part a textbook of mathematics, a Secondary Section may not
3361
     explain any mathematics.)  The relationship could be a matter of
3362
     historical connection with the subject or with related matters, or
3363
     of legal, commercial, philosophical, ethical or political position
3364
     regarding them.
3365
 
3366
     The "Invariant Sections" are certain Secondary Sections whose
3367
     titles are designated, as being those of Invariant Sections, in
3368
     the notice that says that the Document is released under this
3369
     License.  If a section does not fit the above definition of
3370
     Secondary then it is not allowed to be designated as Invariant.
3371
     The Document may contain zero Invariant Sections.  If the Document
3372
     does not identify any Invariant Sections then there are none.
3373
 
3374
     The "Cover Texts" are certain short passages of text that are
3375
     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
3376
     that says that the Document is released under this License.  A
3377
     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
3378
     be at most 25 words.
3379
 
3380
     A "Transparent" copy of the Document means a machine-readable copy,
3381
     represented in a format whose specification is available to the
3382
     general public, that is suitable for revising the document
3383
     straightforwardly with generic text editors or (for images
3384
     composed of pixels) generic paint programs or (for drawings) some
3385
     widely available drawing editor, and that is suitable for input to
3386
     text formatters or for automatic translation to a variety of
3387
     formats suitable for input to text formatters.  A copy made in an
3388
     otherwise Transparent file format whose markup, or absence of
3389
     markup, has been arranged to thwart or discourage subsequent
3390
     modification by readers is not Transparent.  An image format is
3391
     not Transparent if used for any substantial amount of text.  A
3392
     copy that is not "Transparent" is called "Opaque".
3393
 
3394
     Examples of suitable formats for Transparent copies include plain
3395
     ASCII without markup, Texinfo input format, LaTeX input format,
3396
     SGML or XML using a publicly available DTD, and
3397
     standard-conforming simple HTML, PostScript or PDF designed for
3398
     human modification.  Examples of transparent image formats include
3399
     PNG, XCF and JPG.  Opaque formats include proprietary formats that
3400
     can be read and edited only by proprietary word processors, SGML or
3401
     XML for which the DTD and/or processing tools are not generally
3402
     available, and the machine-generated HTML, PostScript or PDF
3403
     produced by some word processors for output purposes only.
3404
 
3405
     The "Title Page" means, for a printed book, the title page itself,
3406
     plus such following pages as are needed to hold, legibly, the
3407
     material this License requires to appear in the title page.  For
3408
     works in formats which do not have any title page as such, "Title
3409
     Page" means the text near the most prominent appearance of the
3410
     work's title, preceding the beginning of the body of the text.
3411
 
3412
     A section "Entitled XYZ" means a named subunit of the Document
3413
     whose title either is precisely XYZ or contains XYZ in parentheses
3414
     following text that translates XYZ in another language.  (Here XYZ
3415
     stands for a specific section name mentioned below, such as
3416
     "Acknowledgements", "Dedications", "Endorsements", or "History".)
3417
     To "Preserve the Title" of such a section when you modify the
3418
     Document means that it remains a section "Entitled XYZ" according
3419
     to this definition.
3420
 
3421
     The Document may include Warranty Disclaimers next to the notice
3422
     which states that this License applies to the Document.  These
3423
     Warranty Disclaimers are considered to be included by reference in
3424
     this License, but only as regards disclaiming warranties: any other
3425
     implication that these Warranty Disclaimers may have is void and
3426
     has no effect on the meaning of this License.
3427
 
3428
  2. VERBATIM COPYING
3429
 
3430
     You may copy and distribute the Document in any medium, either
3431
     commercially or noncommercially, provided that this License, the
3432
     copyright notices, and the license notice saying this License
3433
     applies to the Document are reproduced in all copies, and that you
3434
     add no other conditions whatsoever to those of this License.  You
3435
     may not use technical measures to obstruct or control the reading
3436
     or further copying of the copies you make or distribute.  However,
3437
     you may accept compensation in exchange for copies.  If you
3438
     distribute a large enough number of copies you must also follow
3439
     the conditions in section 3.
3440
 
3441
     You may also lend copies, under the same conditions stated above,
3442
     and you may publicly display copies.
3443
 
3444
  3. COPYING IN QUANTITY
3445
 
3446
     If you publish printed copies (or copies in media that commonly
3447
     have printed covers) of the Document, numbering more than 100, and
3448
     the Document's license notice requires Cover Texts, you must
3449
     enclose the copies in covers that carry, clearly and legibly, all
3450
     these Cover Texts: Front-Cover Texts on the front cover, and
3451
     Back-Cover Texts on the back cover.  Both covers must also clearly
3452
     and legibly identify you as the publisher of these copies.  The
3453
     front cover must present the full title with all words of the
3454
     title equally prominent and visible.  You may add other material
3455
     on the covers in addition.  Copying with changes limited to the
3456
     covers, as long as they preserve the title of the Document and
3457
     satisfy these conditions, can be treated as verbatim copying in
3458
     other respects.
3459
 
3460
     If the required texts for either cover are too voluminous to fit
3461
     legibly, you should put the first ones listed (as many as fit
3462
     reasonably) on the actual cover, and continue the rest onto
3463
     adjacent pages.
3464
 
3465
     If you publish or distribute Opaque copies of the Document
3466
     numbering more than 100, you must either include a
3467
     machine-readable Transparent copy along with each Opaque copy, or
3468
     state in or with each Opaque copy a computer-network location from
3469
     which the general network-using public has access to download
3470
     using public-standard network protocols a complete Transparent
3471
     copy of the Document, free of added material.  If you use the
3472
     latter option, you must take reasonably prudent steps, when you
3473
     begin distribution of Opaque copies in quantity, to ensure that
3474
     this Transparent copy will remain thus accessible at the stated
3475
     location until at least one year after the last time you
3476
     distribute an Opaque copy (directly or through your agents or
3477
     retailers) of that edition to the public.
3478
 
3479
     It is requested, but not required, that you contact the authors of
3480
     the Document well before redistributing any large number of
3481
     copies, to give them a chance to provide you with an updated
3482
     version of the Document.
3483
 
3484
  4. MODIFICATIONS
3485
 
3486
     You may copy and distribute a Modified Version of the Document
3487
     under the conditions of sections 2 and 3 above, provided that you
3488
     release the Modified Version under precisely this License, with
3489
     the Modified Version filling the role of the Document, thus
3490
     licensing distribution and modification of the Modified Version to
3491
     whoever possesses a copy of it.  In addition, you must do these
3492
     things in the Modified Version:
3493
 
3494
       A. Use in the Title Page (and on the covers, if any) a title
3495
          distinct from that of the Document, and from those of
3496
          previous versions (which should, if there were any, be listed
3497
          in the History section of the Document).  You may use the
3498
          same title as a previous version if the original publisher of
3499
          that version gives permission.
3500
 
3501
       B. List on the Title Page, as authors, one or more persons or
3502
          entities responsible for authorship of the modifications in
3503
          the Modified Version, together with at least five of the
3504
          principal authors of the Document (all of its principal
3505
          authors, if it has fewer than five), unless they release you
3506
          from this requirement.
3507
 
3508
       C. State on the Title page the name of the publisher of the
3509
          Modified Version, as the publisher.
3510
 
3511
       D. Preserve all the copyright notices of the Document.
3512
 
3513
       E. Add an appropriate copyright notice for your modifications
3514
          adjacent to the other copyright notices.
3515
 
3516
       F. Include, immediately after the copyright notices, a license
3517
          notice giving the public permission to use the Modified
3518
          Version under the terms of this License, in the form shown in
3519
          the Addendum below.
3520
 
3521
       G. Preserve in that license notice the full lists of Invariant
3522
          Sections and required Cover Texts given in the Document's
3523
          license notice.
3524
 
3525
       H. Include an unaltered copy of this License.
3526
 
3527
       I. Preserve the section Entitled "History", Preserve its Title,
3528
          and add to it an item stating at least the title, year, new
3529
          authors, and publisher of the Modified Version as given on
3530
          the Title Page.  If there is no section Entitled "History" in
3531
          the Document, create one stating the title, year, authors,
3532
          and publisher of the Document as given on its Title Page,
3533
          then add an item describing the Modified Version as stated in
3534
          the previous sentence.
3535
 
3536
       J. Preserve the network location, if any, given in the Document
3537
          for public access to a Transparent copy of the Document, and
3538
          likewise the network locations given in the Document for
3539
          previous versions it was based on.  These may be placed in
3540
          the "History" section.  You may omit a network location for a
3541
          work that was published at least four years before the
3542
          Document itself, or if the original publisher of the version
3543
          it refers to gives permission.
3544
 
3545
       K. For any section Entitled "Acknowledgements" or "Dedications",
3546
          Preserve the Title of the section, and preserve in the
3547
          section all the substance and tone of each of the contributor
3548
          acknowledgements and/or dedications given therein.
3549
 
3550
       L. Preserve all the Invariant Sections of the Document,
3551
          unaltered in their text and in their titles.  Section numbers
3552
          or the equivalent are not considered part of the section
3553
          titles.
3554
 
3555
       M. Delete any section Entitled "Endorsements".  Such a section
3556
          may not be included in the Modified Version.
3557
 
3558
       N. Do not retitle any existing section to be Entitled
3559
          "Endorsements" or to conflict in title with any Invariant
3560
          Section.
3561
 
3562
       O. Preserve any Warranty Disclaimers.
3563
 
3564
     If the Modified Version includes new front-matter sections or
3565
     appendices that qualify as Secondary Sections and contain no
3566
     material copied from the Document, you may at your option
3567
     designate some or all of these sections as invariant.  To do this,
3568
     add their titles to the list of Invariant Sections in the Modified
3569
     Version's license notice.  These titles must be distinct from any
3570
     other section titles.
3571
 
3572
     You may add a section Entitled "Endorsements", provided it contains
3573
     nothing but endorsements of your Modified Version by various
3574
     parties--for example, statements of peer review or that the text
3575
     has been approved by an organization as the authoritative
3576
     definition of a standard.
3577
 
3578
     You may add a passage of up to five words as a Front-Cover Text,
3579
     and a passage of up to 25 words as a Back-Cover Text, to the end
3580
     of the list of Cover Texts in the Modified Version.  Only one
3581
     passage of Front-Cover Text and one of Back-Cover Text may be
3582
     added by (or through arrangements made by) any one entity.  If the
3583
     Document already includes a cover text for the same cover,
3584
     previously added by you or by arrangement made by the same entity
3585
     you are acting on behalf of, you may not add another; but you may
3586
     replace the old one, on explicit permission from the previous
3587
     publisher that added the old one.
3588
 
3589
     The author(s) and publisher(s) of the Document do not by this
3590
     License give permission to use their names for publicity for or to
3591
     assert or imply endorsement of any Modified Version.
3592
 
3593
  5. COMBINING DOCUMENTS
3594
 
3595
     You may combine the Document with other documents released under
3596
     this License, under the terms defined in section 4 above for
3597
     modified versions, provided that you include in the combination
3598
     all of the Invariant Sections of all of the original documents,
3599
     unmodified, and list them all as Invariant Sections of your
3600
     combined work in its license notice, and that you preserve all
3601
     their Warranty Disclaimers.
3602
 
3603
     The combined work need only contain one copy of this License, and
3604
     multiple identical Invariant Sections may be replaced with a single
3605
     copy.  If there are multiple Invariant Sections with the same name
3606
     but different contents, make the title of each such section unique
3607
     by adding at the end of it, in parentheses, the name of the
3608
     original author or publisher of that section if known, or else a
3609
     unique number.  Make the same adjustment to the section titles in
3610
     the list of Invariant Sections in the license notice of the
3611
     combined work.
3612
 
3613
     In the combination, you must combine any sections Entitled
3614
     "History" in the various original documents, forming one section
3615
     Entitled "History"; likewise combine any sections Entitled
3616
     "Acknowledgements", and any sections Entitled "Dedications".  You
3617
     must delete all sections Entitled "Endorsements."
3618
 
3619
  6. COLLECTIONS OF DOCUMENTS
3620
 
3621
     You may make a collection consisting of the Document and other
3622
     documents released under this License, and replace the individual
3623
     copies of this License in the various documents with a single copy
3624
     that is included in the collection, provided that you follow the
3625
     rules of this License for verbatim copying of each of the
3626
     documents in all other respects.
3627
 
3628
     You may extract a single document from such a collection, and
3629
     distribute it individually under this License, provided you insert
3630
     a copy of this License into the extracted document, and follow
3631
     this License in all other respects regarding verbatim copying of
3632
     that document.
3633
 
3634
  7. AGGREGATION WITH INDEPENDENT WORKS
3635
 
3636
     A compilation of the Document or its derivatives with other
3637
     separate and independent documents or works, in or on a volume of
3638
     a storage or distribution medium, is called an "aggregate" if the
3639
     copyright resulting from the compilation is not used to limit the
3640
     legal rights of the compilation's users beyond what the individual
3641
     works permit.  When the Document is included in an aggregate, this
3642
     License does not apply to the other works in the aggregate which
3643
     are not themselves derivative works of the Document.
3644
 
3645
     If the Cover Text requirement of section 3 is applicable to these
3646
     copies of the Document, then if the Document is less than one half
3647
     of the entire aggregate, the Document's Cover Texts may be placed
3648
     on covers that bracket the Document within the aggregate, or the
3649
     electronic equivalent of covers if the Document is in electronic
3650
     form.  Otherwise they must appear on printed covers that bracket
3651
     the whole aggregate.
3652
 
3653
  8. TRANSLATION
3654
 
3655
     Translation is considered a kind of modification, so you may
3656
     distribute translations of the Document under the terms of section
3657
     4.  Replacing Invariant Sections with translations requires special
3658
     permission from their copyright holders, but you may include
3659
     translations of some or all Invariant Sections in addition to the
3660
     original versions of these Invariant Sections.  You may include a
3661
     translation of this License, and all the license notices in the
3662
     Document, and any Warranty Disclaimers, provided that you also
3663
     include the original English version of this License and the
3664
     original versions of those notices and disclaimers.  In case of a
3665
     disagreement between the translation and the original version of
3666
     this License or a notice or disclaimer, the original version will
3667
     prevail.
3668
 
3669
     If a section in the Document is Entitled "Acknowledgements",
3670
     "Dedications", or "History", the requirement (section 4) to
3671
     Preserve its Title (section 1) will typically require changing the
3672
     actual title.
3673
 
3674
  9. TERMINATION
3675
 
3676
     You may not copy, modify, sublicense, or distribute the Document
3677
     except as expressly provided for under this License.  Any other
3678
     attempt to copy, modify, sublicense or distribute the Document is
3679
     void, and will automatically terminate your rights under this
3680
     License.  However, parties who have received copies, or rights,
3681
     from you under this License will not have their licenses
3682
     terminated so long as such parties remain in full compliance.
3683
 
3684
 10. FUTURE REVISIONS OF THIS LICENSE
3685
 
3686
     The Free Software Foundation may publish new, revised versions of
3687
     the GNU Free Documentation License from time to time.  Such new
3688
     versions will be similar in spirit to the present version, but may
3689
     differ in detail to address new problems or concerns.  See
3690
     `http://www.gnu.org/copyleft/'.
3691
 
3692
     Each version of the License is given a distinguishing version
3693
     number.  If the Document specifies that a particular numbered
3694
     version of this License "or any later version" applies to it, you
3695
     have the option of following the terms and conditions either of
3696
     that specified version or of any later version that has been
3697
     published (not as a draft) by the Free Software Foundation.  If
3698
     the Document does not specify a version number of this License,
3699
     you may choose any version ever published (not as a draft) by the
3700
     Free Software Foundation.
3701
 
3702
ADDENDUM: How to use this License for your documents
3703
====================================================
3704
 
3705
To use this License in a document you have written, include a copy of
3706
the License in the document and put the following copyright and license
3707
notices just after the title page:
3708
 
3709
       Copyright (C)  YEAR  YOUR NAME.
3710
       Permission is granted to copy, distribute and/or modify this document
3711
       under the terms of the GNU Free Documentation License, Version 1.2
3712
       or any later version published by the Free Software Foundation;
3713
       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
3714
       Texts.  A copy of the license is included in the section entitled ``GNU
3715
       Free Documentation License''.
3716
 
3717
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
3718
replace the "with...Texts." line with this:
3719
 
3720
         with the Invariant Sections being LIST THEIR TITLES, with
3721
         the Front-Cover Texts being LIST, and with the Back-Cover Texts
3722
         being LIST.
3723
 
3724
If you have Invariant Sections without Cover Texts, or some other
3725
combination of the three, merge those two alternatives to suit the
3726
situation.
3727
 
3728
If your document contains nontrivial examples of program code, we
3729
recommend releasing these examples in parallel under your choice of
3730
free software license, such as the GNU General Public License, to
3731
permit their use in free software.
3732
 
3733

3734
File: or1ksim.info,  Node: Index,  Prev: GNU Free Documentation License,  Up: Top
3735
 
3736
Index
3737
*****
3738
 
3739
 
3740
* Menu:
3741
3742
* --cumulative:                          Profiling Utility.   (line  26)
3743
* --debug-config:                        Standalone Simulator.
3744 385 jeremybenn
                                                              (line  86)
3745 82 jeremybenn
* --disable-all-tests:                   Configuring the Build.
3746 127 jeremybenn
                                                              (line 105)
3747 19 jeremybenn
* --disable-arith-flag:                  Configuring the Build.
3748 127 jeremybenn
                                                              (line 118)
3749 124 jeremybenn
* --disable-debug:                       Configuring the Build.
3750 127 jeremybenn
                                                              (line  98)
3751 19 jeremybenn
* --disable-ethphy:                      Configuring the Build.
3752 104 jeremybenn
                                                              (line  59)
3753 19 jeremybenn
* --disable-ov-flag:                     Configuring the Build.
3754 127 jeremybenn
                                                              (line 133)
3755 19 jeremybenn
* --disable-profiling:                   Configuring the Build.
3756 104 jeremybenn
                                                              (line  30)
3757 19 jeremybenn
* --disable-range-stats:                 Configuring the Build.
3758 127 jeremybenn
                                                              (line  92)
3759
* --disable-unsigned-xori:               Configuring the Build.
3760 104 jeremybenn
                                                              (line  69)
3761 82 jeremybenn
* --enable-all-tests:                    Configuring the Build.
3762 127 jeremybenn
                                                              (line 104)
3763 19 jeremybenn
* --enable-arith-flag:                   Configuring the Build.
3764 127 jeremybenn
                                                              (line 117)
3765 124 jeremybenn
* --enable-debug:                        Configuring the Build.
3766 127 jeremybenn
                                                              (line  97)
3767 19 jeremybenn
* --enable-ethphy:                       Configuring the Build.
3768 104 jeremybenn
                                                              (line  58)
3769 19 jeremybenn
* --enable-execution:                    Configuring the Build.
3770 104 jeremybenn
                                                              (line  37)
3771 19 jeremybenn
* --enable-mprofile:                     Standalone Simulator.
3772 385 jeremybenn
                                                              (line 120)
3773 19 jeremybenn
* --enable-ov-flag:                      Configuring the Build.
3774 127 jeremybenn
                                                              (line 132)
3775 19 jeremybenn
* --enable-profile:                      Standalone Simulator.
3776 385 jeremybenn
                                                              (line 117)
3777 19 jeremybenn
* --enable-profiling:                    Configuring the Build.
3778 104 jeremybenn
                                                              (line  29)
3779 19 jeremybenn
* --enable-range-stats:                  Configuring the Build.
3780 127 jeremybenn
                                                              (line  91)
3781
* --enable-unsigned-xori:                Configuring the Build.
3782 104 jeremybenn
                                                              (line  68)
3783 19 jeremybenn
* --file:                                Standalone Simulator.
3784 385 jeremybenn
                                                              (line  44)
3785 19 jeremybenn
* --filename:                            Memory Profiling Utility.
3786
                                                              (line  51)
3787
* --generate:                            Profiling Utility.   (line  34)
3788
* --group:                               Memory Profiling Utility.
3789
                                                              (line  47)
3790
* --help:                                Standalone Simulator.
3791 346 jeremybenn
                                                              (line  21)
3792 19 jeremybenn
* --help (memory profiling utility):     Memory Profiling Utility.
3793
                                                              (line  22)
3794
* --help (profiling utility):            Profiling Utility.   (line  22)
3795
* --interactive:                         Standalone Simulator.
3796 346 jeremybenn
                                                              (line  25)
3797
* --memory:                              Standalone Simulator.
3798 385 jeremybenn
                                                              (line  70)
3799 19 jeremybenn
* --mode:                                Memory Profiling Utility.
3800
                                                              (line  26)
3801
* --nosrv:                               Standalone Simulator.
3802 385 jeremybenn
                                                              (line  52)
3803 346 jeremybenn
* --quiet <1>:                           Profiling Utility.   (line  30)
3804
* --quiet:                               Standalone Simulator.
3805
                                                              (line  29)
3806
* --report-memory-errors:                Standalone Simulator.
3807 385 jeremybenn
                                                              (line  91)
3808 19 jeremybenn
* --srv:                                 Standalone Simulator.
3809 385 jeremybenn
                                                              (line  60)
3810 19 jeremybenn
* --strict-npc:                          Standalone Simulator.
3811 385 jeremybenn
                                                              (line 100)
3812 420 jeremybenn
* --trace:                               Standalone Simulator.
3813
                                                              (line  39)
3814 346 jeremybenn
* --verbose:                             Standalone Simulator.
3815
                                                              (line  33)
3816 19 jeremybenn
* --version:                             Standalone Simulator.
3817 346 jeremybenn
                                                              (line  17)
3818 19 jeremybenn
* --version (memory profiling utility):  Memory Profiling Utility.
3819
                                                              (line  17)
3820
* --version (profiling utility):         Profiling Utility.   (line  17)
3821
* -c:                                    Profiling Utility.   (line  26)
3822
* -d:                                    Standalone Simulator.
3823 385 jeremybenn
                                                              (line  86)
3824 19 jeremybenn
* -f <1>:                                Memory Profiling Utility.
3825
                                                              (line  51)
3826
* -f:                                    Standalone Simulator.
3827 385 jeremybenn
                                                              (line  44)
3828 346 jeremybenn
* -g <1>:                                Memory Profiling Utility.
3829 19 jeremybenn
                                                              (line  47)
3830 346 jeremybenn
* -g:                                    Profiling Utility.   (line  34)
3831 19 jeremybenn
* -h:                                    Standalone Simulator.
3832 346 jeremybenn
                                                              (line  21)
3833 19 jeremybenn
* -h (memory profiling utility):         Memory Profiling Utility.
3834
                                                              (line  22)
3835
* -h (profiling utility):                Profiling Utility.   (line  22)
3836
* -i:                                    Standalone Simulator.
3837 346 jeremybenn
                                                              (line  25)
3838
* -m <1>:                                Memory Profiling Utility.
3839 19 jeremybenn
                                                              (line  26)
3840 346 jeremybenn
* -m:                                    Standalone Simulator.
3841 385 jeremybenn
                                                              (line  70)
3842 346 jeremybenn
* -q <1>:                                Profiling Utility.   (line  30)
3843
* -q:                                    Standalone Simulator.
3844
                                                              (line  29)
3845 420 jeremybenn
* -t:                                    Standalone Simulator.
3846
                                                              (line  39)
3847 346 jeremybenn
* -V:                                    Standalone Simulator.
3848
                                                              (line  33)
3849 19 jeremybenn
* -v:                                    Standalone Simulator.
3850 346 jeremybenn
                                                              (line  17)
3851 19 jeremybenn
* -v (memory profiling utility):         Memory Profiling Utility.
3852
                                                              (line  17)
3853
* -v (profiling utility):                Profiling Utility.   (line  17)
3854
* 0x00 UART VAPI sub-command (UART verification): Verification API.
3855
                                                              (line  49)
3856
* 0x01 UART VAPI sub-command (UART verification): Verification API.
3857
                                                              (line  55)
3858
* 0x02 UART VAPI sub-command (UART verification): Verification API.
3859
                                                              (line  59)
3860
* 0x03 UART VAPI sub-command (UART verification): Verification API.
3861
                                                              (line  62)
3862
* 0x04 UART VAPI sub-command (UART verification): Verification API.
3863
                                                              (line  66)
3864
* 16550 (UART configuration):            UART Configuration.  (line  73)
3865 82 jeremybenn
* all tests enabled:                     Configuring the Build.
3866 127 jeremybenn
                                                              (line 105)
3867 19 jeremybenn
* Argtable2 debugging:                   Configuring the Build.
3868 127 jeremybenn
                                                              (line  98)
3869 19 jeremybenn
* ATA/ATAPI configuration:               Disc Interface Configuration.
3870
                                                              (line   6)
3871
* ATA/ATAPI device configuration:        Disc Interface Configuration.
3872 385 jeremybenn
                                                              (line  92)
3873 19 jeremybenn
* base_vapi_id (GPIO configuration - deprecated): GPIO Configuration.
3874
                                                              (line  32)
3875
* baseaddr (ATA/ATAPI configuration):    Disc Interface Configuration.
3876 385 jeremybenn
                                                              (line  26)
3877 19 jeremybenn
* baseaddr (DMA configuration):          DMA Configuration.   (line  24)
3878
* baseaddr (Ethernet configuration):     Ethernet Configuration.
3879 440 jeremybenn
                                                              (line  23)
3880 19 jeremybenn
* baseaddr (frame buffer configuration): Frame Buffer Configuration.
3881
                                                              (line  20)
3882
* baseaddr (generic peripheral configuration): Generic Peripheral Configuration.
3883
                                                              (line  22)
3884
* baseaddr (GPIO configuration):         GPIO Configuration.  (line  21)
3885
* baseaddr (keyboard configuration):     Keyboard Configuration.
3886
                                                              (line  36)
3887
* baseaddr (memory configuration):       Memory Configuration.
3888 418 julius
                                                              (line  94)
3889 19 jeremybenn
* baseaddr (memory controller configuration): Memory Controller Configuration.
3890 385 jeremybenn
                                                              (line  55)
3891 19 jeremybenn
* baseaddr (UART configuration):         UART Configuration.  (line  22)
3892
* baseaddr (VGA configuration):          Display Interface Configuration.
3893
                                                              (line  26)
3894
* blocksize (cache configuration):       Cache Configuration. (line  29)
3895
* BPB configuration:                     Branch Prediction Configuration.
3896
                                                              (line   6)
3897
* branch prediction configuration:       Branch Prediction Configuration.
3898
                                                              (line   6)
3899
* break (Interactive CLI):               Interactive Command Line.
3900
                                                              (line  57)
3901
* breakpoint list (Interactive CLI):     Interactive Command Line.
3902
                                                              (line  60)
3903
* breakpoint set/clear (Interactive CLI): Interactive Command Line.
3904
                                                              (line  57)
3905
* breaks (Interactive CLI):              Interactive Command Line.
3906
                                                              (line  60)
3907 440 jeremybenn
* bridge setup:                          Establishing a Bridge.
3908
                                                              (line   6)
3909 19 jeremybenn
* btic (branch prediction configuration): Branch Prediction Configuration.
3910
                                                              (line  19)
3911 440 jeremybenn
* BusyBox and Ethernet:                  Networking from OpenRISC Linux and BusyBox.
3912
                                                              (line   6)
3913 19 jeremybenn
* byte_enabled (generic peripheral configuration): Generic Peripheral Configuration.
3914
                                                              (line  48)
3915
* cache configuration:                   Cache Configuration. (line   6)
3916 346 jeremybenn
* calling_convention (CUC configuration): CUC Configuration.  (line  37)
3917 19 jeremybenn
* ce (memory configuration):             Memory Configuration.
3918 418 julius
                                                              (line 124)
3919 19 jeremybenn
* cfgr (CPU configuration):              CPU Configuration.   (line  47)
3920
* channel (UART configuration):          UART Configuration.  (line  29)
3921
* clear breakpoint (Interactive CLI):    Interactive Command Line.
3922
                                                              (line  57)
3923 432 jeremybenn
* clear_interrupt:                       Concepts.            (line  20)
3924 202 julius
* clkcycle (simulator configuration):    Simulator Behavior.  (line 115)
3925 19 jeremybenn
* cm (Interactive CLI):                  Interactive Command Line.
3926
                                                              (line  54)
3927
* command line for Or1ksim standalone use: Standalone Simulator.
3928
                                                              (line   6)
3929
* complex model:                         Configuring the Build.
3930 104 jeremybenn
                                                              (line  37)
3931 19 jeremybenn
* config:                                Global Data Structures.
3932
                                                              (line   7)
3933
* config.bpb:                            Global Data Structures.
3934
                                                              (line  37)
3935
* config.cpu:                            Global Data Structures.
3936
                                                              (line  22)
3937
* config.cuc:                            Global Data Structures.
3938
                                                              (line  18)
3939
* config.dc:                             Global Data Structures.
3940
                                                              (line  25)
3941
* config.debug:                          Global Data Structures.
3942
                                                              (line  40)
3943
* config.pic:                            Global Data Structures.
3944
                                                              (line  33)
3945
* config.pm:                             Global Data Structures.
3946
                                                              (line  29)
3947
* config.sim:                            Global Data Structures.
3948
                                                              (line  11)
3949
* config.vapi:                           Global Data Structures.
3950
                                                              (line  14)
3951
* configuration dynamic structure:       Global Data Structures.
3952
                                                              (line  49)
3953
* configuration file structure:          Configuration File Format.
3954
                                                              (line   6)
3955
* configuration global structure:        Global Data Structures.
3956
                                                              (line   7)
3957
* configuration info (Interactive CLI):  Interactive Command Line.
3958
                                                              (line 119)
3959
* configuration of generic peripherals:  Generic Peripheral Configuration.
3960
                                                              (line   6)
3961
* configuration parameter setting (Interactive CLI): Interactive Command Line.
3962
                                                              (line 146)
3963
* configuring branch prediction:         Branch Prediction Configuration.
3964
                                                              (line   6)
3965
* configuring data & instruction caches: Cache Configuration. (line   6)
3966
* configuring data & instruction MMUs:   Memory Management Configuration.
3967
                                                              (line   6)
3968
* configuring DMA:                       DMA Configuration.   (line   6)
3969
* configuring memory:                    Memory Configuration.
3970
                                                              (line   6)
3971
* configuring Or1ksim:                   Configuration.       (line   6)
3972
* configuring power management:          Power Management Configuration.
3973
                                                              (line   6)
3974
* configuring the ATA/ATAPI interfaces:  Disc Interface Configuration.
3975
                                                              (line   6)
3976
* configuring the behavior of Or1ksim:   Simulator Behavior.  (line   6)
3977
* configuring the CPU:                   CPU Configuration.   (line   6)
3978
* configuring the Custom Unit Compiler (CUC): CUC Configuration.
3979
                                                              (line   6)
3980
* configuring the debug unit and interface to external debuggers: Debug Interface Configuration.
3981
                                                              (line   6)
3982
* configuring the Ethernet interface:    Ethernet Configuration.
3983
                                                              (line   6)
3984 440 jeremybenn
* configuring the Ethernet TUN/TAP interface: Ethernet TUN/TAP Interface.
3985
                                                              (line   6)
3986 19 jeremybenn
* configuring the frame buffer:          Frame Buffer Configuration.
3987
                                                              (line   6)
3988
* configuring the GPIO:                  GPIO Configuration.  (line   6)
3989
* configuring the interrupt controller:  Interrupt Configuration.
3990
                                                              (line   6)
3991
* configuring the keyboard interface:    Keyboard Configuration.
3992
                                                              (line   6)
3993
* configuring the memory controller:     Memory Controller Configuration.
3994
                                                              (line   6)
3995
* configuring the processor:             CPU Configuration.   (line   6)
3996
* configuring the PS2 interface:         Keyboard Configuration.
3997
                                                              (line   6)
3998
* configuring the UART:                  UART Configuration.  (line   6)
3999
* configuring the Verification API (VAPI): Verification API Configuration.
4000
                                                              (line   6)
4001
* configuring the VGA interface:         Display Interface Configuration.
4002
                                                              (line   6)
4003
* copying memory (Interactive CLI):      Interactive Command Line.
4004
                                                              (line  54)
4005
* CPU configuration:                     CPU Configuration.   (line   6)
4006
* CUC configuration:                     CUC Configuration.   (line   6)
4007
* Custom Unit Compiler (Interactive CLI): Interactive Command Line.
4008
                                                              (line 162)
4009
* Custom Unit Compiler Configuration:    CUC Configuration.   (line   6)
4010
* data cache configuration:              Cache Configuration. (line   6)
4011
* data MMU configuration:                Memory Management Configuration.
4012
                                                              (line   6)
4013
* DCGE (power management register):      Power Management Configuration.
4014
                                                              (line  21)
4015
* debug (Interactive CLI):               Interactive Command Line.
4016 346 jeremybenn
                                                              (line 151)
4017 19 jeremybenn
* debug (simulator configuration):       Simulator Behavior.  (line  13)
4018
* debug channel toggle (Interactive CLI): Interactive Command Line.
4019
                                                              (line 141)
4020
* debug interface configuration:         Debug Interface Configuration.
4021
                                                              (line   6)
4022
* debug mode toggle (Interactive CLI):   Interactive Command Line.
4023
                                                              (line 151)
4024
* debug unit configuration:              Debug Interface Configuration.
4025
                                                              (line   6)
4026
* Debug Unit verification (VAPI):        Verification API.    (line  34)
4027
* debugging enabled (Argtable2):         Configuring the Build.
4028 127 jeremybenn
                                                              (line  98)
4029 104 jeremybenn
* DejaGnu board configurations:          Regression Testing.  (line  35)
4030
* DejaGnu configuration:                 Regression Testing.  (line  21)
4031
* DejaGNU tests directories:             Regression Testing.  (line  50)
4032
* DejaGnu tool specific configuration:   Regression Testing.  (line  39)
4033 19 jeremybenn
* delayr (memory configuration):         Memory Configuration.
4034 418 julius
                                                              (line 144)
4035 19 jeremybenn
* delayw (memory configuration):         Memory Configuration.
4036 418 julius
                                                              (line 150)
4037 98 jeremybenn
* dependstats (CPU configuration):       CPU Configuration.   (line  89)
4038 19 jeremybenn
* dev_id (ATA/ATAPI configuration):      Disc Interface Configuration.
4039 385 jeremybenn
                                                              (line  40)
4040 19 jeremybenn
* disassemble (Interactive CLI):         Interactive Command Line.
4041
                                                              (line  41)
4042
* disc interface configuration:          Disc Interface Configuration.
4043
                                                              (line   6)
4044
* disc interface device configuration:   Disc Interface Configuration.
4045 385 jeremybenn
                                                              (line  92)
4046 19 jeremybenn
* display interface configuration:       Display Interface Configuration.
4047
                                                              (line   6)
4048
* displaying memory (Interactive CLI):   Interactive Command Line.
4049
                                                              (line  31)
4050
* displaying registers (Interactive CLI): Interactive Command Line.
4051
                                                              (line  14)
4052
* dm (Interactive CLI):                  Interactive Command Line.
4053
                                                              (line  31)
4054
* dma (Ethernet configuration):          Ethernet Configuration.
4055 440 jeremybenn
                                                              (line  34)
4056 19 jeremybenn
* DMA configuration:                     DMA Configuration.   (line   6)
4057
* DMA verification (VAPI):               Verification API.    (line  73)
4058
* dma_mode0_td (ATA/ATAPI configuration): Disc Interface Configuration.
4059 385 jeremybenn
                                                              (line  74)
4060 19 jeremybenn
* dma_mode0_teoc (ATA/ATAPI configuration): Disc Interface Configuration.
4061 385 jeremybenn
                                                              (line  75)
4062 19 jeremybenn
* dma_mode0_tm (ATA/ATAPI configuration): Disc Interface Configuration.
4063 385 jeremybenn
                                                              (line  73)
4064 19 jeremybenn
* DME (power management register):       Power Management Configuration.
4065
                                                              (line  15)
4066
* DMMU configuration:                    Memory Management Configuration.
4067
                                                              (line   6)
4068
* doze mode (power management register): Power Management Configuration.
4069
                                                              (line  15)
4070
* dv (Interactive CLI):                  Interactive Command Line.
4071
                                                              (line 124)
4072
* dynamic clock gating (power management register): Power Management Configuration.
4073
                                                              (line  21)
4074
* dynamic model:                         Configuring the Build.
4075 104 jeremybenn
                                                              (line  37)
4076 19 jeremybenn
* dynamic ports, use of:                 Verification API Configuration.
4077
                                                              (line  23)
4078
* edge_trigger (interrupt controller):   Interrupt Configuration.
4079
                                                              (line  16)
4080 346 jeremybenn
* enable_bursts (CUC configuration):     CUC Configuration.   (line  41)
4081 19 jeremybenn
* enabled (ATA/ATAPI configuration):     Disc Interface Configuration.
4082 385 jeremybenn
                                                              (line  22)
4083 19 jeremybenn
* enabled (branch prediction configuration): Branch Prediction Configuration.
4084
                                                              (line  15)
4085
* enabled (cache configuration):         Cache Configuration. (line  11)
4086
* enabled (debug interface configuration): Debug Interface Configuration.
4087
                                                              (line  11)
4088
* enabled (DMA configuration):           DMA Configuration.   (line  20)
4089
* enabled (Ethernet configuration):      Ethernet Configuration.
4090 440 jeremybenn
                                                              (line  19)
4091 19 jeremybenn
* enabled (frame buffer configuration):  Frame Buffer Configuration.
4092
                                                              (line  16)
4093
* enabled (generic peripheral configuration): Generic Peripheral Configuration.
4094
                                                              (line  18)
4095
* enabled (GPIO configuration):          GPIO Configuration.  (line  17)
4096
* enabled (interrupt controller):        Interrupt Configuration.
4097
                                                              (line  12)
4098
* enabled (keyboard configuration):      Keyboard Configuration.
4099
                                                              (line  32)
4100
* enabled (memory controller configuration): Memory Controller Configuration.
4101 385 jeremybenn
                                                              (line  44)
4102 19 jeremybenn
* enabled (MMU configuration):           Memory Management Configuration.
4103
                                                              (line  12)
4104
* enabled (power management configuration): Power Management Configuration.
4105
                                                              (line  35)
4106
* enabled (UART configuration):          UART Configuration.  (line  18)
4107
* enabled (verification API configuration): Verification API Configuration.
4108
                                                              (line  15)
4109
* enabled (VGA configuration):           Display Interface Configuration.
4110
                                                              (line  22)
4111
* enabling Ethernet via socket:          Configuring the Build.
4112 104 jeremybenn
                                                              (line  59)
4113 19 jeremybenn
* entrysize (MMU configuration):         Memory Management Configuration.
4114
                                                              (line  32)
4115
* ETH_VAPI_CTRL (Ethernet verification): Verification API.    (line  86)
4116
* ETH_VAPI_DATA (Ethernet verification): Verification API.    (line  84)
4117 440 jeremybenn
* Ethernet bridge setup:                 Establishing a Bridge.
4118
                                                              (line   6)
4119 19 jeremybenn
* Ethernet configuration:                Ethernet Configuration.
4120
                                                              (line   6)
4121
* Ethernet verification (VAPI):          Verification API.    (line  78)
4122
* Ethernet via socket, enabling:         Configuring the Build.
4123 104 jeremybenn
                                                              (line  59)
4124 127 jeremybenn
* exclusive-OR immediate operand:        Configuring the Build.
4125
                                                              (line  69)
4126 202 julius
* exe_bin_insn_log (simulator configuration): Simulator Behavior.
4127
                                                              (line 103)
4128
* exe_bin_insn_log_file (simulator configuration): Simulator Behavior.
4129
                                                              (line 111)
4130 82 jeremybenn
* exe_log (simulator configuration):     Simulator Behavior.  (line  49)
4131
* exe_log_end (simulator configuration): Simulator Behavior.  (line  89)
4132
* exe_log_file (simulator configuration): Simulator Behavior. (line  97)
4133 19 jeremybenn
* exe_log_fn (simulator configuration - deprecated): Simulator Behavior.
4134 82 jeremybenn
                                                              (line  97)
4135 19 jeremybenn
* exe_log_marker (simulator configuration): Simulator Behavior.
4136 82 jeremybenn
                                                              (line  93)
4137 19 jeremybenn
* exe_log_start (simulator configuration): Simulator Behavior.
4138 82 jeremybenn
                                                              (line  86)
4139
* exe_log_type (simulator configuration): Simulator Behavior. (line  55)
4140 19 jeremybenn
* exe_log_type=default (simulator configuration): Simulator Behavior.
4141 82 jeremybenn
                                                              (line  58)
4142 19 jeremybenn
* exe_log_type=hardware (simulator configuration): Simulator Behavior.
4143 82 jeremybenn
                                                              (line  62)
4144 19 jeremybenn
* exe_log_type=simple (simulator configuration): Simulator Behavior.
4145 82 jeremybenn
                                                              (line  69)
4146 19 jeremybenn
* exe_log_type=software (simulator configuration): Simulator Behavior.
4147 82 jeremybenn
                                                              (line  74)
4148 19 jeremybenn
* executing code (Interactive CLI):      Interactive Command Line.
4149
                                                              (line  23)
4150
* execution history (Interactive CLI):   Interactive Command Line.
4151
                                                              (line  67)
4152
* file (ATA/ATAPI device configuration): Disc Interface Configuration.
4153 385 jeremybenn
                                                              (line 108)
4154 19 jeremybenn
* file (keyboard configuration):         Keyboard Configuration.
4155
                                                              (line  51)
4156
* filename (frame buffer configuration - deprecated): Frame Buffer Configuration.
4157 82 jeremybenn
                                                              (line  36)
4158 19 jeremybenn
* filename (VGA configuration - deprecated): Display Interface Configuration.
4159
                                                              (line  47)
4160 440 jeremybenn
* firewall with Ethernet bridge and TAP/TUN: Opening the Firewall.
4161
                                                              (line   6)
4162 19 jeremybenn
* firmware (ATA/ATAPI device configuration): Disc Interface Configuration.
4163 385 jeremybenn
                                                              (line 121)
4164 19 jeremybenn
* flag setting by instructions:          Configuring the Build.
4165 127 jeremybenn
                                                              (line 118)
4166 19 jeremybenn
* frame buffer configuration:            Frame Buffer Configuration.
4167
                                                              (line   6)
4168
* generic peripheral configuration:      Generic Peripheral Configuration.
4169
                                                              (line   6)
4170
* GPIO configuration:                    GPIO Configuration.  (line   6)
4171
* GPIO verification (VAPI):              Verification API.    (line  88)
4172
* GPIO_VAPI_AUX (GPIO verification):     Verification API.    (line 100)
4173
* GPIO_VAPI_CLOCK (GPIO verification):   Verification API.    (line 103)
4174
* GPIO_VAPI_CTRL (GPIO verification):    Verification API.    (line 119)
4175
* GPIO_VAPI_DATA (GPIO verification):    Verification API.    (line  97)
4176
* GPIO_VAPI_INTE (GPIO verification):    Verification API.    (line 110)
4177
* GPIO_VAPI_PTRIG (GPIO verification):   Verification API.    (line 113)
4178
* GPIO_VAPI_RGPIO (GPIO verification):   Verification API.    (line 107)
4179 100 julius
* hardfloat (CPU configuration):         CPU Configuration.   (line 110)
4180 98 jeremybenn
* hazards (CPU configuration):           CPU Configuration.   (line  74)
4181 19 jeremybenn
* heads (ATA/ATAPI device configuration): Disc Interface Configuration.
4182 385 jeremybenn
                                                              (line 125)
4183 19 jeremybenn
* help (Interactive CLI):                Interactive Command Line.
4184
                                                              (line 170)
4185
* hexadecimal memory dump (Interactive CLI): Interactive Command Line.
4186
                                                              (line 133)
4187
* hide_device_id (verification API configuration): Verification API Configuration.
4188
                                                              (line  36)
4189
* hist (Interactive CLI):                Interactive Command Line.
4190
                                                              (line  67)
4191 82 jeremybenn
* history (simulator configuration):     Simulator Behavior.  (line  40)
4192 19 jeremybenn
* history of execution (Interactive CLI): Interactive Command Line.
4193
                                                              (line  67)
4194
* hitdelay (branch prediction configuration): Branch Prediction Configuration.
4195
                                                              (line  33)
4196
* hitdelay (instruction cache configuration): Cache Configuration.
4197
                                                              (line  38)
4198
* hitdelay (MMU configuration):          Memory Management Configuration.
4199
                                                              (line  51)
4200 104 jeremybenn
* host test code:                        Regression Testing.  (line  57)
4201 19 jeremybenn
* hw_enabled (generic peripheral configuration): Generic Peripheral Configuration.
4202
                                                              (line  49)
4203
* IMMU configuration:                    Memory Management Configuration.
4204
                                                              (line   6)
4205
* index (memory controller configuration): Memory Controller Configuration.
4206 385 jeremybenn
                                                              (line  77)
4207 19 jeremybenn
* info (Interactive CLI):                Interactive Command Line.
4208
                                                              (line 119)
4209
* installing Or1ksim:                    Installation.        (line   6)
4210
* instruction cache configuration:       Cache Configuration. (line   6)
4211
* instruction MMU configuration:         Memory Management Configuration.
4212
                                                              (line   6)
4213
* instruction profiling for Or1ksim:     Profiling Utility.   (line   6)
4214
* instruction profiling utility (Interactive CLI): Interactive Command Line.
4215
                                                              (line 178)
4216
* internal debugging:                    Internal Debugging.  (line   6)
4217
* interrupt controller configuration:    Interrupt Configuration.
4218
                                                              (line   6)
4219 432 jeremybenn
* interrupts:                            Concepts.            (line  20)
4220 19 jeremybenn
* irq (ATA/ATAPI configuration):         Disc Interface Configuration.
4221 385 jeremybenn
                                                              (line  36)
4222 19 jeremybenn
* irq (DMA configuration):               DMA Configuration.   (line  34)
4223
* irq (GPIO configuration):              GPIO Configuration.  (line  29)
4224
* irq (keyboard configuration):          Keyboard Configuration.
4225
                                                              (line  47)
4226
* irq (UART configuration):              UART Configuration.  (line  70)
4227
* irq (VGA configuration):               Display Interface Configuration.
4228
                                                              (line  37)
4229
* jitter (UART configuration):           UART Configuration.  (line  78)
4230
* keyboard configuration:                Keyboard Configuration.
4231
                                                              (line   6)
4232
* library version of Or1ksim:            Simulator Library.   (line   6)
4233
* license for Or1ksim:                   GNU Free Documentation License.
4234
                                                              (line   6)
4235 440 jeremybenn
* Linux (OpenRISC) and Ethernet:         Networking from OpenRISC Linux and BusyBox.
4236
                                                              (line   6)
4237 19 jeremybenn
* list breakpoints (Interactive CLI):    Interactive Command Line.
4238
                                                              (line  60)
4239
* load_hitdelay (data cache configuration): Cache Configuration.
4240
                                                              (line  46)
4241
* load_missdelay (data cache configuration): Cache Configuration.
4242
                                                              (line  50)
4243
* log (memory configuration):            Memory Configuration.
4244 418 julius
                                                              (line 156)
4245 19 jeremybenn
* log_enabled (verification API configuration): Verification API Configuration.
4246
                                                              (line  28)
4247 432 jeremybenn
* long:                                  Simulator Library.   (line  94)
4248 104 jeremybenn
* make file for tests:                   Regression Testing.  (line  27)
4249 19 jeremybenn
* mc (memory configuration):             Memory Configuration.
4250 418 julius
                                                              (line 133)
4251 19 jeremybenn
* memory configuration:                  Memory Configuration.
4252
                                                              (line   6)
4253
* memory controller configuration:       Memory Controller Configuration.
4254
                                                              (line   6)
4255
* memory copying (Interactive CLI):      Interactive Command Line.
4256
                                                              (line  54)
4257
* memory display (Interactive CLI):      Interactive Command Line.
4258
                                                              (line  31)
4259
* memory dump, hexadecimal (Interactive CLI): Interactive Command Line.
4260
                                                              (line 133)
4261
* memory dump, Verilog (Interactive CLI): Interactive Command Line.
4262
                                                              (line 124)
4263
* memory patching (Interactive CLI):     Interactive Command Line.
4264
                                                              (line  48)
4265
* memory profiling end address:          Memory Profiling Utility.
4266
                                                              (line  56)
4267
* memory profiling start address:        Memory Profiling Utility.
4268
                                                              (line  56)
4269
* memory profiling utility (Interactive CLI): Interactive Command Line.
4270
                                                              (line 173)
4271
* memory profiling version of Or1ksim:   Memory Profiling Utility.
4272
                                                              (line   6)
4273
* memory_order (CUC configuration):      CUC Configuration.   (line  15)
4274 346 jeremybenn
* memory_order=exact (CUC configuration): CUC Configuration.  (line  30)
4275 19 jeremybenn
* memory_order=none (CUC configuration): CUC Configuration.   (line  18)
4276 346 jeremybenn
* memory_order=strong (CUC configuration): CUC Configuration. (line  27)
4277
* memory_order=weak (CUC configuration): CUC Configuration.   (line  22)
4278 19 jeremybenn
* missdelay (branch prediction configuration): Branch Prediction Configuration.
4279
                                                              (line  37)
4280
* missdelay (instruction cache configuration): Cache Configuration.
4281
                                                              (line  42)
4282
* missdelay (MMU configuration):         Memory Management Configuration.
4283
                                                              (line  55)
4284
* MMU configuration:                     Memory Management Configuration.
4285
                                                              (line   6)
4286 82 jeremybenn
* mprof_file (simulator configuration):  Simulator Behavior.  (line  34)
4287 19 jeremybenn
* mprof_fn (simulator configuration - deprecated): Simulator Behavior.
4288 82 jeremybenn
                                                              (line  34)
4289 19 jeremybenn
* mprofile (Interactive CLI):            Interactive Command Line.
4290 346 jeremybenn
                                                              (line 173)
4291 82 jeremybenn
* mprofile (simulator configuration):    Simulator Behavior.  (line  29)
4292 432 jeremybenn
* mtspr:                                 Concepts.            (line  20)
4293 19 jeremybenn
* mwdma (ATA/ATAPI device configuration): Disc Interface Configuration.
4294 385 jeremybenn
                                                              (line 132)
4295 19 jeremybenn
* name (generic peripheral configuration): Generic Peripheral Configuration.
4296
                                                              (line  42)
4297
* name (memory configuration):           Memory Configuration.
4298 418 julius
                                                              (line 115)
4299 346 jeremybenn
* no_multicycle (CUC configuration):     CUC Configuration.   (line  45)
4300 19 jeremybenn
* nsets (cache configuration):           Cache Configuration. (line  15)
4301
* nsets (MMU configuration):             Memory Management Configuration.
4302
                                                              (line  16)
4303
* nways (cache configuration):           Cache Configuration. (line  22)
4304
* nways (MMU configuration):             Memory Management Configuration.
4305
                                                              (line  22)
4306 432 jeremybenn
* or1ksim_get_time_period:               Simulator Library.   (line  84)
4307
* or1ksim_init:                          Simulator Library.   (line  19)
4308
* or1ksim_interrupt:                     Simulator Library.   (line  99)
4309
* or1ksim_interrupt_clear:               Simulator Library.   (line 121)
4310
* or1ksim_interrupt_set:                 Simulator Library.   (line 110)
4311
* or1ksim_is_le:                         Simulator Library.   (line  89)
4312
* or1ksim_jtag_reset:                    Simulator Library.   (line 130)
4313
* or1ksim_jtag_shift_dr:                 Simulator Library.   (line 152)
4314
* or1ksim_jtag_shift_ir:                 Simulator Library.   (line 139)
4315
* or1ksim_read_mem:                      Simulator Library.   (line 165)
4316
* or1ksim_read_reg:                      Simulator Library.   (line 197)
4317 346 jeremybenn
* or1ksim_read_spr:                      Simulator Library.   (line 181)
4318 432 jeremybenn
* or1ksim_reset_duration:                Simulator Library.   (line  69)
4319
* or1ksim_run:                           Simulator Library.   (line  58)
4320
* or1ksim_set_stall_state:               Simulator Library.   (line 212)
4321
* or1ksim_set_time_point:                Simulator Library.   (line  80)
4322
* or1ksim_write_mem:                     Simulator Library.   (line 173)
4323
* or1ksim_write_reg:                     Simulator Library.   (line 205)
4324
* or1ksim_write_spr:                     Simulator Library.   (line 189)
4325 19 jeremybenn
* output rediretion:                     Concepts.            (line   7)
4326
* overflow flag setting by instructions: Configuring the Build.
4327 127 jeremybenn
                                                              (line 133)
4328 19 jeremybenn
* packet (ATA/ATAPI device configuration): Disc Interface Configuration.
4329 385 jeremybenn
                                                              (line 117)
4330 19 jeremybenn
* pagesize (MMU configuration):          Memory Management Configuration.
4331
                                                              (line  27)
4332
* patching memory (Interactive CLI):     Interactive Command Line.
4333
                                                              (line  48)
4334
* patching registers (Interactive CLI):  Interactive Command Line.
4335
                                                              (line  28)
4336
* patching the program counter (Interactive CLI): Interactive Command Line.
4337
                                                              (line  51)
4338
* pattern (memory configuration):        Memory Configuration.
4339 418 julius
                                                              (line  82)
4340 19 jeremybenn
* pc (Interactive CLI):                  Interactive Command Line.
4341
                                                              (line  51)
4342 440 jeremybenn
* persistent TAP device creation:        Setting Up a Persistent TAP device.
4343
                                                              (line   6)
4344 429 julius
* phy_addr:                              Ethernet Configuration.
4345 440 jeremybenn
                                                              (line 105)
4346 19 jeremybenn
* PIC configuration:                     Interrupt Configuration.
4347
                                                              (line   6)
4348
* pio (ATA/ATAPI device configuration):  Disc Interface Configuration.
4349 385 jeremybenn
                                                              (line 136)
4350 19 jeremybenn
* pio_mode0_t1 (ATA/ATAPI configuration): Disc Interface Configuration.
4351 385 jeremybenn
                                                              (line  55)
4352 19 jeremybenn
* pio_mode0_t2 (ATA/ATAPI configuration): Disc Interface Configuration.
4353 385 jeremybenn
                                                              (line  56)
4354 19 jeremybenn
* pio_mode0_t4 (ATA/ATAPI configuration): Disc Interface Configuration.
4355 385 jeremybenn
                                                              (line  57)
4356 19 jeremybenn
* pio_mode0_teoc (ATA/ATAPI configuration): Disc Interface Configuration.
4357 385 jeremybenn
                                                              (line  58)
4358 19 jeremybenn
* pm (Interactive CLI):                  Interactive Command Line.
4359
                                                              (line  48)
4360
* PMR - DGCE:                            Power Management Configuration.
4361
                                                              (line  21)
4362
* PMR - DME:                             Power Management Configuration.
4363
                                                              (line  15)
4364
* PMR - SDF:                             Power Management Configuration.
4365
                                                              (line  12)
4366
* PMR - SME:                             Power Management Configuration.
4367
                                                              (line  16)
4368
* PMR - SUME:                            Power Management Configuration.
4369
                                                              (line  24)
4370
* PMU configuration:                     Power Management Configuration.
4371
                                                              (line   6)
4372
* poc (memory controller configuration): Memory Controller Configuration.
4373 385 jeremybenn
                                                              (line  64)
4374 19 jeremybenn
* port range for TCP/IP:                 Verification API Configuration.
4375
                                                              (line  23)
4376
* power management configuration:        Power Management Configuration.
4377
                                                              (line   6)
4378
* power management register, DGCE:       Power Management Configuration.
4379
                                                              (line  21)
4380
* power management register, DME:        Power Management Configuration.
4381
                                                              (line  15)
4382
* power management register, SDF:        Power Management Configuration.
4383
                                                              (line  12)
4384
* power management register, SME:        Power Management Configuration.
4385
                                                              (line  16)
4386
* power management register, SUME:       Power Management Configuration.
4387
                                                              (line  24)
4388
* pr (Interactive CLI):                  Interactive Command Line.
4389
                                                              (line  28)
4390
* private ports, use of:                 Verification API Configuration.
4391
                                                              (line  23)
4392
* processor configuration:               CPU Configuration.   (line   6)
4393
* processor stall (Interactive CLI):     Interactive Command Line.
4394
                                                              (line  72)
4395
* processor unstall (Interactive CLI):   Interactive Command Line.
4396
                                                              (line  78)
4397
* prof_file (simulator configuration):   Simulator Behavior.  (line  23)
4398
* prof_fn (simulator configuration - deprecated): Simulator Behavior.
4399
                                                              (line  23)
4400
* profile (simulator configuration):     Simulator Behavior.  (line  19)
4401
* profiling for Or1ksim:                 Profiling Utility.   (line   6)
4402
* profiling utility (Interactive CLI):   Interactive Command Line.
4403
                                                              (line 178)
4404
* program counter patching (Interactive CLI): Interactive Command Line.
4405
                                                              (line  51)
4406
* programmable interrupt controller configuration: Interrupt Configuration.
4407
                                                              (line   6)
4408
* PS2 configuration:                     Keyboard Configuration.
4409
                                                              (line   6)
4410
* q (Interactive CLI):                   Interactive Command Line.
4411
                                                              (line  11)
4412
* quitting (Interactive CLI):            Interactive Command Line.
4413
                                                              (line  11)
4414
* r (Interactive CLI):                   Interactive Command Line.
4415
                                                              (line  14)
4416
* random_seed (memory configuration):    Memory Configuration.
4417 418 julius
                                                              (line  72)
4418 19 jeremybenn
* refresh_rate (frame buffer configuration): Frame Buffer Configuration.
4419 82 jeremybenn
                                                              (line  30)
4420 19 jeremybenn
* refresh_rate (VGA configuration):      Display Interface Configuration.
4421
                                                              (line  41)
4422
* reg_sim_reset:                         Concepts.            (line  13)
4423
* register display (Interactive CLI):    Interactive Command Line.
4424
                                                              (line  14)
4425
* register over time statistics:         Configuring the Build.
4426 127 jeremybenn
                                                              (line  92)
4427 19 jeremybenn
* register patching (Interactive CLI):   Interactive Command Line.
4428
                                                              (line  28)
4429 104 jeremybenn
* regression testing:                    Regression Testing.  (line   6)
4430 19 jeremybenn
* Remote Serial Protocol:                Debug Interface Configuration.
4431
                                                              (line  20)
4432 235 jeremybenn
* Remote Serial Protocol, --nosrv:       Standalone Simulator.
4433 385 jeremybenn
                                                              (line  52)
4434 235 jeremybenn
* Remote Serial Protocol, --srv:         Standalone Simulator.
4435 385 jeremybenn
                                                              (line  60)
4436 432 jeremybenn
* report_interrupt:                      Concepts.            (line  20)
4437 19 jeremybenn
* reset (Interactive CLI):               Interactive Command Line.
4438
                                                              (line  63)
4439
* reset hooks:                           Concepts.            (line  13)
4440
* reset the simulator (Interactive CLI): Interactive Command Line.
4441
                                                              (line  63)
4442
* rev (ATA/ATAPI configuration):         Disc Interface Configuration.
4443 385 jeremybenn
                                                              (line  48)
4444 19 jeremybenn
* rev (CPU configuration):               CPU Configuration.   (line  15)
4445
* rsp_enabled (debug interface configuration): Debug Interface Configuration.
4446
                                                              (line  20)
4447
* rsp_port (debug interface configuration): Debug Interface Configuration.
4448 235 jeremybenn
                                                              (line  32)
4449 19 jeremybenn
* rtx_type (Ethernet configuration):     Ethernet Configuration.
4450 440 jeremybenn
                                                              (line  47)
4451 19 jeremybenn
* run (Interactive CLI):                 Interactive Command Line.
4452
                                                              (line  23)
4453
* running code (Interactive CLI):        Interactive Command Line.
4454
                                                              (line  23)
4455
* running Or1ksim:                       Usage.               (line   6)
4456
* runtime:                               Global Data Structures.
4457
                                                              (line  58)
4458
* runtime global structure:              Global Data Structures.
4459
                                                              (line  58)
4460
* runtime.cpu:                           Global Data Structures.
4461
                                                              (line  62)
4462
* runtime.cpu.fout:                      Concepts.            (line   7)
4463
* runtime.cuc:                           Global Data Structures.
4464
                                                              (line  62)
4465
* runtime.vapi:                          Global Data Structures.
4466
                                                              (line  62)
4467
* rx_channel (Ethernet configuration):   Ethernet Configuration.
4468 440 jeremybenn
                                                              (line  67)
4469 19 jeremybenn
* rxfile (Ethernet configuration):       Ethernet Configuration.
4470 440 jeremybenn
                                                              (line  76)
4471 19 jeremybenn
* sbp_bf_fwd (branch prediction configuration): Branch Prediction Configuration.
4472
                                                              (line  23)
4473
* sbp_bnf_fwd (branch prediction configuration): Branch Prediction Configuration.
4474
                                                              (line  28)
4475 98 jeremybenn
* sbuf_len (CPU configuration):          CPU Configuration.   (line 101)
4476 19 jeremybenn
* SDF (power management register):       Power Management Configuration.
4477
                                                              (line  12)
4478
* section ata:                           Disc Interface Configuration.
4479
                                                              (line   6)
4480
* section bpb:                           Branch Prediction Configuration.
4481
                                                              (line   6)
4482
* section cpio:                          GPIO Configuration.  (line   6)
4483
* section cpu:                           CPU Configuration.   (line   6)
4484
* section cuc:                           CUC Configuration.   (line   6)
4485
* section dc:                            Cache Configuration. (line   6)
4486
* section debug:                         Debug Interface Configuration.
4487
                                                              (line   6)
4488
* section dma:                           DMA Configuration.   (line   6)
4489
* section dmmu:                          Memory Management Configuration.
4490
                                                              (line   6)
4491
* section ethernet:                      Ethernet Configuration.
4492
                                                              (line   6)
4493
* section fb:                            Frame Buffer Configuration.
4494
                                                              (line   6)
4495
* section generic:                       Generic Peripheral Configuration.
4496
                                                              (line   6)
4497
* section ic:                            Cache Configuration. (line   6)
4498
* section immu:                          Memory Management Configuration.
4499
                                                              (line   6)
4500
* section kb:                            Keyboard Configuration.
4501
                                                              (line   6)
4502
* section mc:                            Memory Controller Configuration.
4503
                                                              (line   6)
4504
* section memory:                        Memory Configuration.
4505
                                                              (line   6)
4506
* section pic:                           Interrupt Configuration.
4507
                                                              (line   6)
4508
* section pmu:                           Power Management Configuration.
4509
                                                              (line   6)
4510
* section sim:                           Simulator Behavior.  (line   6)
4511
* section uart:                          UART Configuration.  (line   6)
4512
* section vapi:                          Verification API Configuration.
4513
                                                              (line   6)
4514
* section vga:                           Display Interface Configuration.
4515
                                                              (line   6)
4516
* sections:                              Global Data Structures.
4517
                                                              (line  49)
4518
* sectors (ATA/ATAPI device configuration): Disc Interface Configuration.
4519 385 jeremybenn
                                                              (line 129)
4520 19 jeremybenn
* server_port (verification API configuration): Verification API Configuration.
4521
                                                              (line  19)
4522
* set (Interactive CLI):                 Interactive Command Line.
4523
                                                              (line 146)
4524
* set breakpoint (Interactive CLI):      Interactive Command Line.
4525
                                                              (line  57)
4526
* setdbch (Interactive CLI):             Interactive Command Line.
4527
                                                              (line 141)
4528
* simple model:                          Configuring the Build.
4529 104 jeremybenn
                                                              (line  37)
4530 19 jeremybenn
* simulator configuration:               Simulator Behavior.  (line   6)
4531
* simulator configuration info (Interactive CLI): Interactive Command Line.
4532
                                                              (line 119)
4533
* simulator reset (Interactive CLI):     Interactive Command Line.
4534
                                                              (line  63)
4535
* simulator statistics (Interactive CLI): Interactive Command Line.
4536
                                                              (line  83)
4537
* size (ATA/ATAPI device configuration): Disc Interface Configuration.
4538 385 jeremybenn
                                                              (line 113)
4539 19 jeremybenn
* size (generic peripheral configuration): Generic Peripheral Configuration.
4540
                                                              (line  30)
4541
* size (memory configuration):           Memory Configuration.
4542 418 julius
                                                              (line  99)
4543 19 jeremybenn
* sleep mode (power management register): Power Management Configuration.
4544
                                                              (line  16)
4545
* slow down factor (power management register): Power Management Configuration.
4546
                                                              (line  12)
4547
* SME (power management register):       Power Management Configuration.
4548
                                                              (line  16)
4549
* sr (CPU configuration):                CPU Configuration.   (line  53)
4550
* stall (Interactive CLI):               Interactive Command Line.
4551
                                                              (line  72)
4552
* stall the processor (Interactive CLI): Interactive Command Line.
4553
                                                              (line  72)
4554
* statistics, register over time:        Configuring the Build.
4555 127 jeremybenn
                                                              (line  92)
4556 19 jeremybenn
* statistics, simulation (Interactive CLI): Interactive Command Line.
4557
                                                              (line  83)
4558
* stats (Interactive CLI):               Interactive Command Line.
4559
                                                              (line  83)
4560
* stepping code (Interactive CLI):       Interactive Command Line.
4561
                                                              (line  19)
4562
* store_hitdelay (data cache configuration): Cache Configuration.
4563
                                                              (line  54)
4564
* store_missdelay (data cache configuration): Cache Configuration.
4565
                                                              (line  58)
4566
* SUME (power management register):      Power Management Configuration.
4567
                                                              (line  24)
4568 98 jeremybenn
* superscalar (CPU configuration):       CPU Configuration.   (line  63)
4569 19 jeremybenn
* suspend mode (power management register): Power Management Configuration.
4570
                                                              (line  24)
4571
* t (Interactive CLI):                   Interactive Command Line.
4572
                                                              (line  19)
4573 440 jeremybenn
* TAP device creation:                   Setting Up a Persistent TAP device.
4574
                                                              (line   6)
4575
* tap_dev (Ethernet configuration):      Ethernet Configuration.
4576
                                                              (line  93)
4577 104 jeremybenn
* target test code:                      Regression Testing.  (line  63)
4578 19 jeremybenn
* TCP/IP port range:                     Verification API Configuration.
4579
                                                              (line  23)
4580
* TCP/IP port range for or1ksim-rsp service: Debug Interface Configuration.
4581 235 jeremybenn
                                                              (line  37)
4582 104 jeremybenn
* test code for host:                    Regression Testing.  (line  57)
4583
* test code for target:                  Regression Testing.  (line  63)
4584
* test make file:                        Regression Testing.  (line  27)
4585
* test README:                           Regression Testing.  (line  32)
4586
* testing:                               Regression Testing.  (line   6)
4587 82 jeremybenn
* tests, all enabled.:                   Configuring the Build.
4588 127 jeremybenn
                                                              (line 105)
4589 346 jeremybenn
* timings_file (CUC configuration):      CUC Configuration.   (line  49)
4590 19 jeremybenn
* timings_fn (CUC configuration - deprecated): CUC Configuration.
4591 346 jeremybenn
                                                              (line  49)
4592 19 jeremybenn
* toggle breakpoint (Interactive CLI):   Interactive Command Line.
4593
                                                              (line  57)
4594
* toggle debug channels (Interactive CLI): Interactive Command Line.
4595
                                                              (line 141)
4596
* toggle debug mode (Interactive CLI):   Interactive Command Line.
4597
                                                              (line 151)
4598
* tx_channel (Ethernet configuration):   Ethernet Configuration.
4599 440 jeremybenn
                                                              (line  68)
4600 19 jeremybenn
* txfile (Ethernet configuration):       Ethernet Configuration.
4601 440 jeremybenn
                                                              (line  77)
4602 19 jeremybenn
* txfile (frame buffer configuration):   Frame Buffer Configuration.
4603 82 jeremybenn
                                                              (line  36)
4604 19 jeremybenn
* txfile (VGA configuration):            Display Interface Configuration.
4605
                                                              (line  47)
4606
* type (ATA/ATAPI device configuration): Disc Interface Configuration.
4607 385 jeremybenn
                                                              (line 103)
4608 19 jeremybenn
* type (memory configuration):           Memory Configuration.
4609 385 jeremybenn
                                                              (line  37)
4610 418 julius
* type=exitnops (memory configuration):  Memory Configuration.
4611 420 jeremybenn
                                                              (line  66)
4612 19 jeremybenn
* type=pattern (memory configuration):   Memory Configuration.
4613 385 jeremybenn
                                                              (line  47)
4614 19 jeremybenn
* type=random (memory configuration):    Memory Configuration.
4615 385 jeremybenn
                                                              (line  41)
4616 19 jeremybenn
* type=unknown (memory configuration):   Memory Configuration.
4617 385 jeremybenn
                                                              (line  51)
4618 19 jeremybenn
* type=zero (memory configuration):      Memory Configuration.
4619 385 jeremybenn
                                                              (line  56)
4620 19 jeremybenn
* UART configuration:                    UART Configuration.  (line   6)
4621
* UART I/O from/to a physical serial port: UART Configuration.
4622
                                                              (line  62)
4623
* UART I/O from/to an xterm:             UART Configuration.  (line  38)
4624
* UART I/O from/to files:                UART Configuration.  (line  33)
4625
* UART I/O from/to open file descriptors: UART Configuration. (line  58)
4626
* UART I/O from/to TCP/IP:               UART Configuration.  (line  45)
4627
* UART verification (VAPI):              Verification API.    (line  41)
4628
* unstall (Interactive CLI):             Interactive Command Line.
4629
                                                              (line  78)
4630
* unstall the processor (Interactive CLI): Interactive Command Line.
4631
                                                              (line  78)
4632
* upr (CPU configuration):               CPU Configuration.   (line  21)
4633 432 jeremybenn
* use_nmi (interrupt controller):        Interrupt Configuration.
4634
                                                              (line  30)
4635 19 jeremybenn
* ustates (cache configuration):         Cache Configuration. (line  33)
4636
* ustates (MMU configuration):           Memory Management Configuration.
4637
                                                              (line  41)
4638
* VAPI configuration:                    Verification API Configuration.
4639
                                                              (line   6)
4640
* VAPI for Debug Unit:                   Verification API.    (line  34)
4641
* VAPI for DMA:                          Verification API.    (line  73)
4642
* VAPI for Ethernet:                     Verification API.    (line  78)
4643
* VAPI for GPIO:                         Verification API.    (line  88)
4644
* VAPI for UART:                         Verification API.    (line  41)
4645
* vapi_id (debug interface configuration): Debug Interface Configuration.
4646 235 jeremybenn
                                                              (line  43)
4647 346 jeremybenn
* vapi_id (DMA configuration) <1>:       Ethernet Configuration.
4648 440 jeremybenn
                                                              (line  99)
4649 346 jeremybenn
* vapi_id (DMA configuration):           DMA Configuration.   (line  38)
4650 19 jeremybenn
* vapi_id (GPIO configuration):          GPIO Configuration.  (line  32)
4651
* vapi_id (UART configuration):          UART Configuration.  (line  85)
4652
* vapi_log_file (verification API configuration): Verification API Configuration.
4653
                                                              (line  41)
4654
* vapi_log_fn (verification API configuration - deprecated): Verification API Configuration.
4655
                                                              (line  41)
4656
* ver (CPU configuration):               CPU Configuration.   (line  15)
4657
* verbose (simulator configuration):     Simulator Behavior.  (line  10)
4658
* Verification API configuration:        Verification API Configuration.
4659
                                                              (line   6)
4660
* Verilog memory dump (Interactive CLI): Interactive Command Line.
4661
                                                              (line 124)
4662
* VGA configuration:                     Display Interface Configuration.
4663
 
4664
 
4665
                                                              (line  50)
4666
4667
4668

4669
Tag Table:
4670 440 jeremybenn
Node: Top814
4671
Node: Installation1224
4672
Node: Preparation1471
4673
Node: Configuring the Build1766
4674
Node: Build and Install7910
4675
Node: Known Issues8688
4676
Node: Usage9743
4677
Node: Standalone Simulator9988
4678
Node: Profiling Utility14552
4679
Node: Memory Profiling Utility15462
4680
Node: Simulator Library16827
4681
Node: Ethernet TUN/TAP Interface27267
4682
Node: Setting Up a Persistent TAP device28350
4683
Node: Establishing a Bridge29025
4684
Node: Opening the Firewall30708
4685
Node: Disabling Ethernet Filtering31199
4686
Node: Networking from OpenRISC Linux and BusyBox31824
4687
Node: Tearing Down a Bridge33486
4688
Node: Configuration34229
4689
Node: Configuration File Format34841
4690
Node: Configuration File Preprocessing35226
4691
Node: Configuration File Syntax35523
4692
Node: Simulator Configuration38308
4693
Node: Simulator Behavior38599
4694
Node: Verification API Configuration43180
4695
Node: CUC Configuration45120
4696
Node: Core OpenRISC Configuration47112
4697
Node: CPU Configuration47614
4698
Node: Memory Configuration51733
4699
Node: Memory Management Configuration58455
4700
Node: Cache Configuration60832
4701
Node: Interrupt Configuration63218
4702
Node: Power Management Configuration65051
4703
Node: Branch Prediction Configuration66328
4704
Node: Debug Interface Configuration67688
4705
Node: Peripheral Configuration70031
4706
Node: Memory Controller Configuration70657
4707
Node: UART Configuration74437
4708
Node: DMA Configuration77956
4709
Node: Ethernet Configuration79823
4710
Node: GPIO Configuration84468
4711
Node: Display Interface Configuration86101
4712
Node: Frame Buffer Configuration88410
4713
Node: Keyboard Configuration90274
4714
Node: Disc Interface Configuration92512
4715
Node: Generic Peripheral Configuration97616
4716
Node: Interactive Command Line99911
4717
Node: Verification API106885
4718
Node: Code Internals111315
4719
Node: Coding Conventions111898
4720
Node: Global Data Structures116325
4721
Node: Concepts118982
4722
Ref: Output Redirection119127
4723
Ref: Interrupts Internal119665
4724
Node: Internal Debugging120818
4725
Node: Regression Testing121342
4726
Node: GNU Free Documentation License125131

powered by: WebSVN 2.1.0

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