| 1 |
112 |
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 |
112 |
jeremybenn |
tar jxf or1ksim-2010-06-09.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 |
112 |
jeremybenn |
../or1ksim-2010-06-09/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 |
104 |
jeremybenn |
For testing (using `make check'), the `--target' parameter _must_ be
|
| 92 |
|
|
specified, to allow the target tool chain to be selected. If the tools
|
| 93 |
|
|
have been installed using the standard OpenRISC script, then this
|
| 94 |
|
|
should be set to `or32-elf'.
|
| 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 |
|
|
`--enable-range-stats'
|
| 139 |
|
|
`--disable-range-stats'
|
| 140 |
|
|
If enabled, this option allows statistics to be collected to
|
| 141 |
82 |
jeremybenn |
analyse register access over time. The default is for this to be
|
| 142 |
19 |
jeremybenn |
disabled.
|
| 143 |
|
|
|
| 144 |
|
|
`--enable-arith-flag'
|
| 145 |
|
|
`--disable-arith-flag'
|
| 146 |
|
|
If enabled, this option causes instructions to set the flag (`F'
|
| 147 |
82 |
jeremybenn |
bit) in the supervision register. The instructions affected by
|
| 148 |
19 |
jeremybenn |
this are `l.add', `l.addc', `l.addi', `l.and' and `l.andi'.
|
| 149 |
|
|
|
| 150 |
|
|
The default is for this to be disabled.
|
| 151 |
|
|
|
| 152 |
|
|
Caution: As with `--enable-ov-flag', this appears another
|
| 153 |
|
|
very dangerous option, to the extent of arguably being a bug.
|
| 154 |
|
|
It also appears to be only partially implemented--why only
|
| 155 |
|
|
the instructions early in the alphabet?
|
| 156 |
|
|
|
| 157 |
|
|
Whether or not flags are set is part of the OpenRISC 1000
|
| 158 |
82 |
jeremybenn |
architectural specification. The only flags which should set
|
| 159 |
19 |
jeremybenn |
this are the "set flag" instructions: `l.sfeq', `l.sfeqi',
|
| 160 |
|
|
`l.sfges', `l.sfgesi', `l.sfgeu', `l.sfgeui', `l.sfgts',
|
| 161 |
|
|
`l.sfgtsi', `l.sfgtu', `l.sfgtui', `l.sfles', `l.sflesi',
|
| 162 |
|
|
`l.sfleu', `l.sfleui', `l.sflts', `l.sfltsi', `l.sfltu',
|
| 163 |
|
|
`l.sfltui', `l.sfne' and `l.sfnei'.
|
| 164 |
|
|
|
| 165 |
|
|
The flags are correctly set (irrespective of
|
| 166 |
|
|
`--enable-arith_flag').
|
| 167 |
|
|
|
| 168 |
|
|
Correct behavior is thus achieved if this flag is not set.
|
| 169 |
|
|
`--enable-arith-flag' should never be used.
|
| 170 |
|
|
|
| 171 |
|
|
|
| 172 |
|
|
`--enable-debug'
|
| 173 |
|
|
`--disable-debug'
|
| 174 |
|
|
This is a feature of the Argtable2 package used to process
|
| 175 |
82 |
jeremybenn |
arguments. If enabled, some debugging features are turned on in
|
| 176 |
|
|
Argtable2. It is provided for completeness, but there is no
|
| 177 |
|
|
reason why this feature should ever be needed by any Or1ksim user.
|
| 178 |
19 |
jeremybenn |
|
| 179 |
82 |
jeremybenn |
`--enable-all-tests'
|
| 180 |
|
|
`--disable-all-tests'
|
| 181 |
|
|
Some of the tests (at the time of writing just one) will not
|
| 182 |
|
|
compile without error. If enabled with this flag, all test
|
| 183 |
|
|
programs will be compiled with `make check'.
|
| 184 |
19 |
jeremybenn |
|
| 185 |
82 |
jeremybenn |
This flag is intended for those working on the test package, who
|
| 186 |
|
|
wish to get the missing test(s) working.
|
| 187 |
|
|
|
| 188 |
|
|
|
| 189 |
112 |
jeremybenn |
A number of configuration flags have been removed since version 0.3.0,
|
| 190 |
|
|
because they led to invalid behavior of Or1ksim. Those removed include
|
| 191 |
|
|
|
| 192 |
|
|
`--enable-ov-flag'
|
| 193 |
|
|
`--disable-ov-flag'
|
| 194 |
|
|
This flag used to cause certain instructions to set the overflow
|
| 195 |
|
|
flag. If not, those instructions would not set the overflow flat.
|
| 196 |
|
|
The instructions affected by this were `l.add', `l.addc',
|
| 197 |
|
|
`l.addi', `l.and', `l.andi', `l.div', `l.divu', `l.mul', `l.muli',
|
| 198 |
|
|
`l.or', `l.ori', `l.sll', `l.slli', `l.srl', `l.srli', `l.sra',
|
| 199 |
|
|
`l.srai', `l.sub', `l.xor' and `l.xori'.
|
| 200 |
|
|
|
| 201 |
|
|
This guaranteed incorrect behavior. The OpenRISC 1000 architecture
|
| 202 |
|
|
specification defines which flags are set by which instructions.
|
| 203 |
|
|
|
| 204 |
|
|
Within the above list, the arithmetic instructions (`l.add',
|
| 205 |
|
|
`l.addc', `l.addi', `l.div', `l.divu', `l.mul', `l.muli' and
|
| 206 |
|
|
`l.sub'), together with `l.addic' which is missed out, set the
|
| 207 |
|
|
overflow flag. All the others (`l.and', `l.andi', `l.or',
|
| 208 |
|
|
`l.ori', `l.sll', `l.slli', `l.srl', `l.srli', `l.sra', `l.srai',
|
| 209 |
|
|
`l.xor' and `l.xori') do not.
|
| 210 |
|
|
|
| 211 |
|
|
|
| 212 |
19 |
jeremybenn |
|
| 213 |
|
|
File: or1ksim.info, Node: Build and Install, Next: Known Issues, Prev: Configuring the Build, Up: Installation
|
| 214 |
|
|
|
| 215 |
|
|
1.3 Building and Installing
|
| 216 |
|
|
===========================
|
| 217 |
|
|
|
| 218 |
82 |
jeremybenn |
Build the tool with:
|
| 219 |
19 |
jeremybenn |
|
| 220 |
|
|
make all
|
| 221 |
82 |
jeremybenn |
|
| 222 |
|
|
If you have the OpenRISC tool chain and DejaGNU installed, you can
|
| 223 |
|
|
verify the tool as follows (otherwise omit this step):
|
| 224 |
|
|
|
| 225 |
|
|
make check
|
| 226 |
|
|
|
| 227 |
|
|
Install the tool with:
|
| 228 |
|
|
|
| 229 |
19 |
jeremybenn |
make install
|
| 230 |
|
|
|
| 231 |
|
|
This will install the three variations of the Or1ksim tool,
|
| 232 |
|
|
`or32-uclinux-sim', `or32-uclinux-psim' and `or32-uclinux-mpsim', the
|
| 233 |
|
|
Or1ksim library, `libsim', the header file, `or1ksim.h' and this
|
| 234 |
|
|
documentation in `info' format.
|
| 235 |
|
|
|
| 236 |
|
|
Note: Testing Or1ksim with `make check' is not yet supported.
|
| 237 |
|
|
|
| 238 |
|
|
The documentation may be created and installed in alternative formats
|
| 239 |
|
|
(PDF, Postscript, DVI, HTML) with for example:
|
| 240 |
|
|
|
| 241 |
|
|
make pdf
|
| 242 |
|
|
make install-pdf
|
| 243 |
|
|
|
| 244 |
|
|
|
| 245 |
|
|
File: or1ksim.info, Node: Known Issues, Prev: Build and Install, Up: Installation
|
| 246 |
|
|
|
| 247 |
|
|
1.4 Known Problems and Issues
|
| 248 |
|
|
=============================
|
| 249 |
|
|
|
| 250 |
82 |
jeremybenn |
The following problems and issues are known about with Or1ksim
|
| 251 |
112 |
jeremybenn |
2010-06-09. The OpenRISC tracker may be used to see the current state
|
| 252 |
107 |
jeremybenn |
of these issues and to raise new problems and feature requests. It may
|
| 253 |
|
|
be found at `http://www.opencores.org/ptracker.cgi/view/or1k/398'.
|
| 254 |
19 |
jeremybenn |
|
| 255 |
|
|
* The Supervision Register Little Endian Enable (LEE) bit is
|
| 256 |
82 |
jeremybenn |
ignored. Or1ksim can be built for either little endian or big
|
| 257 |
19 |
jeremybenn |
endian use, but that behavior cannot be changed dynamically.
|
| 258 |
|
|
|
| 259 |
|
|
* The NPC is a read/write register, but after being written it
|
| 260 |
82 |
jeremybenn |
clears the pipeline. This means that if the processor is stalled,
|
| 261 |
19 |
jeremybenn |
the value should subsequently read back as 0, until the processor
|
| 262 |
82 |
jeremybenn |
is unstalled and able to refill its pipeline. By default Or1ksim
|
| 263 |
19 |
jeremybenn |
always reports back the value of NPC, even when it has been
|
| 264 |
|
|
written while stalled.
|
| 265 |
|
|
|
| 266 |
|
|
There is now an option, `--strict-npc', which will enforce this
|
| 267 |
82 |
jeremybenn |
behavior. At some stage in the future it will become the default
|
| 268 |
19 |
jeremybenn |
behavior, but for now it is an option, since its use will break
|
| 269 |
|
|
GDB.
|
| 270 |
|
|
|
| 271 |
|
|
* The memory components are given names in the configuration file.
|
| 272 |
|
|
However there is currently no way for Or1ksim to report that name
|
| 273 |
|
|
back to the user (for example to identify which memory block
|
| 274 |
|
|
corresponds to a particular access).
|
| 275 |
|
|
|
| 276 |
|
|
* Or1ksim allows the processor to be stalled (from the command
|
| 277 |
82 |
jeremybenn |
line), even if there is no debugger present. This seems to be a
|
| 278 |
19 |
jeremybenn |
meaningless operation.
|
| 279 |
|
|
|
| 280 |
|
|
* Or1ksim is not reentrant, so a program cannot instantiate multiple
|
| 281 |
82 |
jeremybenn |
instances using the library. This is clearly a problem when
|
| 282 |
|
|
considering multi-core applications. However it stems from the
|
| 283 |
|
|
original design, and can only be fixed by a complete rewrite. The
|
| 284 |
19 |
jeremybenn |
entire source code uses static global constants liberally!
|
| 285 |
|
|
|
| 286 |
104 |
jeremybenn |
* There is no support for single precision floating point
|
| 287 |
|
|
instructions in Or1ksim if configured in the CPU (*note CPU
|
| 288 |
|
|
Configuration: CPU Configuration.). These are implemented using
|
| 289 |
|
|
the floating point support in the host C library, which will
|
| 290 |
|
|
usually be IEEE 745 compliant. There is at present no support for
|
| 291 |
|
|
double precision floating point instructions, since these are
|
| 292 |
|
|
meaningless with 32-bit registers.
|
| 293 |
19 |
jeremybenn |
|
| 294 |
104 |
jeremybenn |
Floating point support within OpenRISC is intended to follow IEEE
|
| 295 |
|
|
745, which offers a degree of configurability. However at present
|
| 296 |
|
|
the FPSCR register is not supported, so there is no mechanism for
|
| 297 |
|
|
configuring floating point behavior. Thus the default
|
| 298 |
|
|
functionality of the host C library will be used.
|
| 299 |
19 |
jeremybenn |
|
| 300 |
104 |
jeremybenn |
* The single precision floating point multiply and add instruction,
|
| 301 |
|
|
`lf.madd.s', is not clearly specified in the original architectural
|
| 302 |
|
|
manual. User should consult the `OpenRISC 1200 version 2
|
| 303 |
|
|
Supplementary Programmer's Reference Manual' for a specification
|
| 304 |
|
|
of the functionality implemented.
|
| 305 |
|
|
|
| 306 |
|
|
|
| 307 |
19 |
jeremybenn |
|
| 308 |
|
|
File: or1ksim.info, Node: Usage, Next: Configuration, Prev: Installation, Up: Top
|
| 309 |
|
|
|
| 310 |
|
|
2 Usage
|
| 311 |
|
|
*******
|
| 312 |
|
|
|
| 313 |
|
|
* Menu:
|
| 314 |
|
|
|
| 315 |
|
|
* Standalone Simulator::
|
| 316 |
|
|
* Profiling Utility::
|
| 317 |
|
|
* Memory Profiling Utility::
|
| 318 |
|
|
* Simulator Library::
|
| 319 |
|
|
|
| 320 |
|
|
|
| 321 |
|
|
File: or1ksim.info, Node: Standalone Simulator, Next: Profiling Utility, Up: Usage
|
| 322 |
|
|
|
| 323 |
|
|
2.1 Standalone Simulator
|
| 324 |
|
|
========================
|
| 325 |
|
|
|
| 326 |
|
|
The general form the standalone command is:
|
| 327 |
|
|
|
| 328 |
|
|
or32-uclinux-sim [-vhi] [-f FILE] [--nosrv] [--srv=[N]] [-d STR]
|
| 329 |
|
|
[--enable-profile] [--enable-mprofile] [FILE]
|
| 330 |
|
|
|
| 331 |
82 |
jeremybenn |
Many of the options have both a short and a long form. For example
|
| 332 |
|
|
`-h' or `--help'.
|
| 333 |
19 |
jeremybenn |
|
| 334 |
|
|
`-v'
|
| 335 |
|
|
`--version'
|
| 336 |
|
|
Print out the version and copyright notice for Or1ksim and exit.
|
| 337 |
|
|
|
| 338 |
|
|
`-h'
|
| 339 |
|
|
`--help'
|
| 340 |
|
|
Print out help about the command line options and what they mean.
|
| 341 |
|
|
|
| 342 |
|
|
`-f FILE'
|
| 343 |
|
|
`--file FILE'
|
| 344 |
|
|
Read configuration commands from the specified file, looking first
|
| 345 |
|
|
in the current directory, and otherwise in the `$HOME/.or1k'
|
| 346 |
82 |
jeremybenn |
directory. If this argument is not specified, the file `sim.cfg'
|
| 347 |
|
|
in those two locations is used. Failure to find the file is a
|
| 348 |
|
|
fatal error. *Note Configuration: Configuration, for detailed
|
| 349 |
|
|
information on configuring Or1ksim.
|
| 350 |
19 |
jeremybenn |
|
| 351 |
|
|
`--nosrv'
|
| 352 |
82 |
jeremybenn |
Do not start up the debug server. This overrides any setting
|
| 353 |
|
|
specified in the configuration file. This option may not be
|
| 354 |
|
|
specified with `--srv'. If it is, a rude message is printed and
|
| 355 |
|
|
the `--nosrv' option is ignored.
|
| 356 |
19 |
jeremybenn |
|
| 357 |
|
|
`--srv'
|
| 358 |
|
|
|
| 359 |
|
|
`--srv=N'
|
| 360 |
82 |
jeremybenn |
Start up the debug server. If the parameter, N, is specified, use
|
| 361 |
19 |
jeremybenn |
that as the TCP/IP port for the server, otherwise a random value
|
| 362 |
82 |
jeremybenn |
from the private port range (41920-65535) will be used. This
|
| 363 |
|
|
option may not be specified with `--nosrv'. If it is, a rude
|
| 364 |
|
|
message is printed and the `--nosrv' option is ignored.
|
| 365 |
19 |
jeremybenn |
|
| 366 |
|
|
`-d=CONFIG_STRING'
|
| 367 |
|
|
`--debug-config=CONFIG_STRING'
|
| 368 |
82 |
jeremybenn |
Enable selected debug messages in Or1ksim. This parameter is for
|
| 369 |
|
|
use by developers only, and is not covered further here. See the
|
| 370 |
19 |
jeremybenn |
source code for more details.
|
| 371 |
|
|
|
| 372 |
|
|
`-i'
|
| 373 |
|
|
`--interactive'
|
| 374 |
|
|
After starting, drop into the Or1ksim interactive command shell.
|
| 375 |
|
|
|
| 376 |
|
|
`--strict-npc'
|
| 377 |
|
|
In real hardware, setting the next program counter (NPC, SPR 16),
|
| 378 |
82 |
jeremybenn |
flushes the processor pipeline. The consequence of this is that
|
| 379 |
|
|
until the pipeline refills, reading the NPC will return zero.
|
| 380 |
|
|
This is typically the case when debugging, since the processor is
|
| 381 |
19 |
jeremybenn |
stalled.
|
| 382 |
|
|
|
| 383 |
|
|
Historically, Or1ksim has always returned the value of the NPC,
|
| 384 |
82 |
jeremybenn |
irrespective of when it is changed. If the `--strict-npc' option
|
| 385 |
|
|
is used, then Or1ksim will mirror real hardware more accurately.
|
| 386 |
|
|
If the NPC is changed while the processor is stalled, subsequent
|
| 387 |
19 |
jeremybenn |
reads of its value will return 0 until the processor is unstalled.
|
| 388 |
|
|
|
| 389 |
|
|
This is not currently the default behavior, since tools such as
|
| 390 |
|
|
GDB have been implemented assuming the historic Or1ksim behavior.
|
| 391 |
|
|
However at some time in the future it will become the default.
|
| 392 |
|
|
|
| 393 |
|
|
`--enable-profile'
|
| 394 |
|
|
Enable instruction profiling.
|
| 395 |
|
|
|
| 396 |
|
|
`--enable-mprofile'
|
| 397 |
|
|
Enable memory profiling.
|
| 398 |
|
|
|
| 399 |
|
|
|
| 400 |
|
|
|
| 401 |
|
|
File: or1ksim.info, Node: Profiling Utility, Next: Memory Profiling Utility, Prev: Standalone Simulator, Up: Usage
|
| 402 |
|
|
|
| 403 |
|
|
2.2 Profiling Utility
|
| 404 |
|
|
=====================
|
| 405 |
|
|
|
| 406 |
82 |
jeremybenn |
This utility analyses instruction profile data generated by Or1ksim.
|
| 407 |
|
|
It may be invoked as a standalone command, or from the Or1ksim CLI.
|
| 408 |
|
|
The general form the standalone command is:
|
| 409 |
19 |
jeremybenn |
|
| 410 |
|
|
or32-uclinux-profile [-vhcq] [-g=FILE]
|
| 411 |
|
|
|
| 412 |
82 |
jeremybenn |
Many of the options have both a short and a long form. For example
|
| 413 |
|
|
`-h' or `--help'.
|
| 414 |
19 |
jeremybenn |
|
| 415 |
|
|
`-v'
|
| 416 |
|
|
`--version'
|
| 417 |
|
|
Print out the version and copyright notice for the Or1ksim
|
| 418 |
|
|
profiling utility and exit.
|
| 419 |
|
|
|
| 420 |
|
|
`-h'
|
| 421 |
|
|
`--help'
|
| 422 |
|
|
Print out help about the command line options and what they mean.
|
| 423 |
|
|
|
| 424 |
|
|
`-c'
|
| 425 |
|
|
`--cumulative'
|
| 426 |
|
|
Show cumulative sum of cycles in functions
|
| 427 |
|
|
|
| 428 |
|
|
`-q'
|
| 429 |
|
|
`--quiet'
|
| 430 |
|
|
Suppress messages
|
| 431 |
|
|
|
| 432 |
|
|
`-g=FILE'
|
| 433 |
|
|
`--generate=FILE'
|
| 434 |
82 |
jeremybenn |
The data file to analyse. If omitted, the default file,
|
| 435 |
19 |
jeremybenn |
`sim.profile' is used.
|
| 436 |
|
|
|
| 437 |
|
|
|
| 438 |
|
|
|
| 439 |
|
|
File: or1ksim.info, Node: Memory Profiling Utility, Next: Simulator Library, Prev: Profiling Utility, Up: Usage
|
| 440 |
|
|
|
| 441 |
|
|
2.3 Memory Profiling Utility
|
| 442 |
|
|
============================
|
| 443 |
|
|
|
| 444 |
82 |
jeremybenn |
This utility analyses memory profile data generated by Or1ksim. It may
|
| 445 |
|
|
be invoked as a standalone command, or from the Or1ksim CLI. The
|
| 446 |
19 |
jeremybenn |
general form the standalone command is:
|
| 447 |
|
|
|
| 448 |
|
|
or32-uclinux-mprofile [-vh] [-m=M] [-g=N] [-f=FILE] FROM TO
|
| 449 |
|
|
|
| 450 |
82 |
jeremybenn |
Many of the options have both a short and a long form. For example
|
| 451 |
|
|
`-h' or `--help'.
|
| 452 |
19 |
jeremybenn |
|
| 453 |
|
|
`-v'
|
| 454 |
|
|
`--version'
|
| 455 |
|
|
Print out the version and copyright notice for the Or1ksim memory
|
| 456 |
|
|
profiling utility and exit.
|
| 457 |
|
|
|
| 458 |
|
|
`-h'
|
| 459 |
|
|
`--help'
|
| 460 |
|
|
Print out help about the command line options and what they mean.
|
| 461 |
|
|
|
| 462 |
|
|
`-m=M'
|
| 463 |
|
|
`--mode=M'
|
| 464 |
82 |
jeremybenn |
Specify the mode out output. Permitted options are
|
| 465 |
19 |
jeremybenn |
|
| 466 |
|
|
`detailed'
|
| 467 |
|
|
`d'
|
| 468 |
82 |
jeremybenn |
Detailed output. This is the default if no mode is specified.
|
| 469 |
19 |
jeremybenn |
|
| 470 |
|
|
`pretty'
|
| 471 |
|
|
`p'
|
| 472 |
|
|
Pretty printed output.
|
| 473 |
|
|
|
| 474 |
|
|
`access'
|
| 475 |
|
|
`a'
|
| 476 |
|
|
Memory accesses only.
|
| 477 |
|
|
|
| 478 |
|
|
`width'
|
| 479 |
|
|
`w'
|
| 480 |
|
|
Access width only.
|
| 481 |
|
|
|
| 482 |
|
|
|
| 483 |
|
|
`-g=N'
|
| 484 |
|
|
`--group=N'
|
| 485 |
|
|
Group 2^n bits of successive addresses together.
|
| 486 |
|
|
|
| 487 |
|
|
`-f=FILE'
|
| 488 |
|
|
`--filename=FILE'
|
| 489 |
82 |
jeremybenn |
The data file to analyse. If not specified, the default,
|
| 490 |
19 |
jeremybenn |
`sim.profile' is used.
|
| 491 |
|
|
|
| 492 |
|
|
`FROM'
|
| 493 |
|
|
`TO'
|
| 494 |
|
|
FROM and TO are respectively the start and end address of the
|
| 495 |
|
|
region of memory to be analysed.
|
| 496 |
|
|
|
| 497 |
|
|
|
| 498 |
|
|
|
| 499 |
|
|
File: or1ksim.info, Node: Simulator Library, Prev: Memory Profiling Utility, Up: Usage
|
| 500 |
|
|
|
| 501 |
|
|
2.4 Simulator Library
|
| 502 |
|
|
=====================
|
| 503 |
|
|
|
| 504 |
|
|
Or1ksim may be used as a static of dynamic library, `libsim.a' or
|
| 505 |
82 |
jeremybenn |
`libsim.so'. When compiling with the static library, the flag, `-lsim'
|
| 506 |
19 |
jeremybenn |
should be added to the link command.
|
| 507 |
|
|
|
| 508 |
|
|
The header file `or1ksim.h' contains appropriate declarations of the
|
| 509 |
82 |
jeremybenn |
functions exported by the Or1ksim library. These are:
|
| 510 |
19 |
jeremybenn |
|
| 511 |
93 |
jeremybenn |
-- `or1ksim.h': int or1ksim_init (const char
|
| 512 |
|
|
*CONFIG_FILE, const char *IMAGE_FILE, void *CLASS_PTR, int
|
| 513 |
|
|
(*UPR)(void *CLASS_PTR, unsigned long int ADDR, unsigned char
|
| 514 |
|
|
MASK[], unsigned char RDATA[], int DATA_LEN), int (*UPW)(void
|
| 515 |
|
|
*CLASS_PTR, unsigned long int ADDR, unsigned char MASK[], unsigned
|
| 516 |
|
|
char WDATA[], int DATA_LEN))
|
| 517 |
|
|
|
| 518 |
19 |
jeremybenn |
The initialization function is supplied with the name of a
|
| 519 |
|
|
configuration file, CONFIG_FILE, an executable image, IMAGE_FILE,
|
| 520 |
|
|
a pointer to the calling class, CLASS_PTR (since the library may
|
| 521 |
|
|
be used from C++) and two up-call functions, one for reads, UPR,
|
| 522 |
|
|
and one for writes, UPW.
|
| 523 |
|
|
|
| 524 |
|
|
*Note Configuration: Configuration, for detailed information on
|
| 525 |
|
|
configuring Or1ksim and the format of the configuration file.
|
| 526 |
|
|
|
| 527 |
|
|
UPW is called for any write to an address external to the model
|
| 528 |
82 |
jeremybenn |
(determined by a `generic' section in the configuration file).
|
| 529 |
|
|
UPR is called for any reads to an external address. The CLASS_PTR
|
| 530 |
|
|
is passed back with these upcalls, allowing the function to
|
| 531 |
|
|
associate the call with the class which originally initialized the
|
| 532 |
93 |
jeremybenn |
library. Both UPW and UPR should return zero on success and
|
| 533 |
|
|
non-zero otherwise. At the present time the meaning of non-zero
|
| 534 |
|
|
values is not defined but this may change in the future.
|
| 535 |
19 |
jeremybenn |
|
| 536 |
93 |
jeremybenn |
MASK indicates which bytes in the data are to be written or read.
|
| 537 |
82 |
jeremybenn |
Bytes to be read/written should have 0xff set in MASK. Otherwise
|
| 538 |
93 |
jeremybenn |
the byte should be zero. The adddress, ADDR, is the _full_
|
| 539 |
|
|
address, since the upcall function must handle all generic
|
| 540 |
|
|
devices, using the full address for decoding.
|
| 541 |
19 |
jeremybenn |
|
| 542 |
93 |
jeremybenn |
Endianness is not completely transparent, since Or1ksim is
|
| 543 |
|
|
transferring byte vectors, not multi-byte values.
|
| 544 |
19 |
jeremybenn |
|
| 545 |
93 |
jeremybenn |
Caution: This is a change from version 0.3.0. It simplifies
|
| 546 |
|
|
the interface, and makes Or1ksim more consistent with payload
|
| 547 |
|
|
representation in SystemC TLM 2.0.
|
| 548 |
19 |
jeremybenn |
|
| 549 |
93 |
jeremybenn |
Note: The current implementation of Or1ksim always transfers
|
| 550 |
|
|
single words (4 bytes), using masks if smaller values are
|
| 551 |
|
|
required. In this it mimcs the behavior of the WishBone bus.
|
| 552 |
|
|
|
| 553 |
|
|
|
| 554 |
19 |
jeremybenn |
-- `or1ksim.h': int or1ksim_run (double DURATION)
|
| 555 |
|
|
Run the simulator for the simulated duration specified (in
|
| 556 |
|
|
seconds).
|
| 557 |
|
|
|
| 558 |
|
|
|
| 559 |
|
|
-- `or1ksim.h': void or1ksim_reset_duration (double DURATION)
|
| 560 |
|
|
Change the duration of a run specified in an earlier call to
|
| 561 |
82 |
jeremybenn |
`or1ksim_run'. Typically this is called from an upcall, which
|
| 562 |
19 |
jeremybenn |
realizes it needs to change the duration of the run specified in
|
| 563 |
|
|
the call to `or1ksim_run' that has been interrupted by the upcall.
|
| 564 |
|
|
|
| 565 |
|
|
The time specified is the amount of time that the run must continue
|
| 566 |
|
|
for (i.e the duration from _now_, not the duration from the
|
| 567 |
|
|
original call to `or1ksim_run').
|
| 568 |
|
|
|
| 569 |
|
|
|
| 570 |
|
|
-- `or1ksim.h': void or1ksim_set_time_point ()
|
| 571 |
82 |
jeremybenn |
Set a timing point. For use with `or1ksim_get_time_period'.
|
| 572 |
19 |
jeremybenn |
|
| 573 |
|
|
|
| 574 |
|
|
-- `or1ksim.h': double or1ksim_get_time_period ()
|
| 575 |
|
|
Return the simulated time (in seconds) that has elapsed since the
|
| 576 |
|
|
last call to `or1ksim_set_time_point'.
|
| 577 |
|
|
|
| 578 |
|
|
|
| 579 |
|
|
-- `or1ksim.h': int or1ksim_is_le ()
|
| 580 |
|
|
Return 1 (logical true) if the Or1ksim simulation is
|
| 581 |
|
|
little-endian, 0 otherwise.
|
| 582 |
|
|
|
| 583 |
|
|
|
| 584 |
|
|
-- `or1ksim.h': unsigned long int or1ksim_clock_rate ()
|
| 585 |
82 |
jeremybenn |
Return the Or1ksim clock rate (in Hz). This is the value
|
| 586 |
|
|
specified in the configuration file.
|
| 587 |
19 |
jeremybenn |
|
| 588 |
|
|
|
| 589 |
|
|
-- `or1ksim.h': void or1ksim_interrupt (int I)
|
| 590 |
82 |
jeremybenn |
Generate an edge-triggered interrupt on interrupt line I. The
|
| 591 |
|
|
interrupt is then immediately cleared automatically. A warning
|
| 592 |
19 |
jeremybenn |
will be generated and the interrupt request ignored if level
|
| 593 |
|
|
sensitive interrupts have been configured with the programmable
|
| 594 |
|
|
interrupt controller (*note Interrupt Configuration: Interrupt
|
| 595 |
|
|
Configuration.).
|
| 596 |
|
|
|
| 597 |
|
|
|
| 598 |
|
|
-- `or1ksim.h': void or1ksim_interrupt_set (int I)
|
| 599 |
82 |
jeremybenn |
Assert a level-triggered interrupt on interrupt line I. The
|
| 600 |
19 |
jeremybenn |
interrupt must be cleared separately by an explicit call to
|
| 601 |
82 |
jeremybenn |
`or1ksim_interrupt_clear'. A warning will be generated, and the
|
| 602 |
19 |
jeremybenn |
interrupt request ignored if edge sensitive interrupts have been
|
| 603 |
|
|
configured with the programmable interrupt controller (*note
|
| 604 |
|
|
Interrupt Configuration: Interrupt Configuration.).
|
| 605 |
|
|
|
| 606 |
|
|
|
| 607 |
|
|
-- `or1ksim.h': void or1ksim_interrupt_clear (int I)
|
| 608 |
|
|
Clear a level-triggered interrupt on interrupt line I, which was
|
| 609 |
82 |
jeremybenn |
previously asserted by a call to `or1ksim_interrupt_set'. A
|
| 610 |
19 |
jeremybenn |
warning will be generated, and the interrupt request ignored if
|
| 611 |
|
|
edge sensitive interrupts have been configured with the
|
| 612 |
|
|
programmable interrupt controller (*note Interrupt Configuration:
|
| 613 |
|
|
Interrupt Configuration.).
|
| 614 |
|
|
|
| 615 |
|
|
|
| 616 |
104 |
jeremybenn |
-- `or1ksim.h': double or1ksim_jtag_reset ()
|
| 617 |
|
|
Drive a reset sequence through the JTAG interface. Return the
|
| 618 |
|
|
(model) time taken for this action. Remember that the JTAG has
|
| 619 |
|
|
its own clock, which can be an order of magnitude slower than the
|
| 620 |
|
|
main clock, so even a reset (5 JTAG cycles) could take 50
|
| 621 |
|
|
processor clock cycles to complete.
|
| 622 |
|
|
|
| 623 |
|
|
|
| 624 |
|
|
-- `or1ksim.h': double or1ksim_jtag_shift_ir (unsigned
|
| 625 |
|
|
char *JREG, int NUM_BITS)
|
| 626 |
|
|
|
| 627 |
|
|
Shift the supplied register through the JTAG instruction register.
|
| 628 |
|
|
Return the (model) time taken for this action. The register is
|
| 629 |
|
|
supplied as a byte vector, with the least significant bits in the
|
| 630 |
|
|
least significant byte. If the total number of bits is not an
|
| 631 |
|
|
exact number of bytes, then the odd bits are found in the least
|
| 632 |
|
|
significant end of the highest numbered byte.
|
| 633 |
|
|
|
| 634 |
|
|
For example a 12-bit register would have bits 0-7 in byte 0 and
|
| 635 |
|
|
bits 11-8 in the least significant 4 bits of byte 1.
|
| 636 |
|
|
|
| 637 |
|
|
|
| 638 |
|
|
-- `or1ksim.h': double or1ksim_jtag_shift_dr (unsigned
|
| 639 |
|
|
char *JREG, int NUM_BITS)
|
| 640 |
|
|
|
| 641 |
|
|
Shift the supplied register through the JTAG data register.
|
| 642 |
|
|
Return the (model) time taken for this action. The register is
|
| 643 |
|
|
supplied as a byte vector, with the least significant bits in the
|
| 644 |
|
|
least significant byte. If the total number of bits is not an
|
| 645 |
|
|
exact number of bytes, then the odd bits are found in the least
|
| 646 |
|
|
significant end of the highest numbered byte.
|
| 647 |
|
|
|
| 648 |
|
|
For example a 12-bit register would have bits 0-7 in byte 0 and
|
| 649 |
|
|
bits 11-8 in the least significant 4 bits of byte 1.
|
| 650 |
|
|
|
| 651 |
|
|
|
| 652 |
19 |
jeremybenn |
The libraries will be installed in the `lib' sub-directory of the main
|
| 653 |
|
|
installation directory (as specified with the `--prefix' option to the
|
| 654 |
|
|
`configure' script).
|
| 655 |
|
|
|
| 656 |
|
|
For example if the main installation directory is `/opt/or1ksim', the
|
| 657 |
82 |
jeremybenn |
library will be found in the `/opt/or1ksim/lib' directory. It is
|
| 658 |
19 |
jeremybenn |
available as both a static library (`libsim.a') and a shared object
|
| 659 |
|
|
(`libsim.so').
|
| 660 |
|
|
|
| 661 |
|
|
To link against the library add the `-lsim' flag when linking and do
|
| 662 |
|
|
one of the following:
|
| 663 |
|
|
|
| 664 |
|
|
* Add the library directory to the `LD_LIBRARY_PATH' environment
|
| 665 |
82 |
jeremybenn |
variable during execution. For example:
|
| 666 |
19 |
jeremybenn |
|
| 667 |
|
|
export LD_LIBRARY_PATH=/opt/or1ksim/lib:$LD_LIBRARY_PATH
|
| 668 |
|
|
|
| 669 |
|
|
* Add the library directory to the `LD_RUN_PATH' environment
|
| 670 |
82 |
jeremybenn |
variable during linking. For example:
|
| 671 |
19 |
jeremybenn |
|
| 672 |
|
|
export LD_RUN_PATH=/opt/or1ksim/lib:$LD_RUN_PATH
|
| 673 |
|
|
|
| 674 |
|
|
* Use the linker `--rpath' option and specify the library directory
|
| 675 |
82 |
jeremybenn |
when linking your program. For example
|
| 676 |
19 |
jeremybenn |
|
| 677 |
82 |
jeremybenn |
gcc ... -Wl,--rpath -Wl,/opt/or1ksim/lib ...
|
| 678 |
19 |
jeremybenn |
|
| 679 |
|
|
* Add the library directory to `/etc/ld.so.conf'
|
| 680 |
|
|
|
| 681 |
|
|
|
| 682 |
|
|
|
| 683 |
|
|
File: or1ksim.info, Node: Configuration, Next: Interactive Command Line, Prev: Usage, Up: Top
|
| 684 |
|
|
|
| 685 |
|
|
3 Configuration
|
| 686 |
|
|
***************
|
| 687 |
|
|
|
| 688 |
82 |
jeremybenn |
Or1ksim is configured through a configuration file. This is specified
|
| 689 |
19 |
jeremybenn |
through the `-f' parameter to the Or1ksim command, or passed as a
|
| 690 |
82 |
jeremybenn |
string when initializing the Or1ksim library. If no file is specified,
|
| 691 |
|
|
the default `sim.cfg' is used. The file is looked for first in the
|
| 692 |
19 |
jeremybenn |
current directory, then in the `$HOME/.or1k' directory of the user.
|
| 693 |
|
|
|
| 694 |
|
|
* Menu:
|
| 695 |
|
|
|
| 696 |
|
|
* Configuration File Format::
|
| 697 |
|
|
* Simulator Configuration::
|
| 698 |
|
|
* Core OpenRISC Configuration::
|
| 699 |
|
|
* Peripheral Configuration::
|
| 700 |
|
|
|
| 701 |
|
|
|
| 702 |
|
|
File: or1ksim.info, Node: Configuration File Format, Next: Simulator Configuration, Up: Configuration
|
| 703 |
|
|
|
| 704 |
|
|
3.1 Configuration File Format
|
| 705 |
|
|
=============================
|
| 706 |
|
|
|
| 707 |
|
|
The configuration file is a plain text file.
|
| 708 |
|
|
|
| 709 |
|
|
* Menu:
|
| 710 |
|
|
|
| 711 |
|
|
* Configuration File Preprocessing::
|
| 712 |
|
|
* Configuration File Syntax::
|
| 713 |
|
|
|
| 714 |
|
|
|
| 715 |
|
|
File: or1ksim.info, Node: Configuration File Preprocessing, Next: Configuration File Syntax, Up: Configuration File Format
|
| 716 |
|
|
|
| 717 |
|
|
3.1.1 Configuration File Preprocessing
|
| 718 |
|
|
--------------------------------------
|
| 719 |
|
|
|
| 720 |
82 |
jeremybenn |
The configuration file may include C style comments (i.e. delimited by
|
| 721 |
19 |
jeremybenn |
`/*' and `*/').
|
| 722 |
|
|
|
| 723 |
|
|
Configure files may be included, using
|
| 724 |
|
|
|
| 725 |
|
|
include FILENAME_TO_INCLUDE
|
| 726 |
|
|
|
| 727 |
|
|
|
| 728 |
|
|
File: or1ksim.info, Node: Configuration File Syntax, Prev: Configuration File Preprocessing, Up: Configuration File Format
|
| 729 |
|
|
|
| 730 |
|
|
3.1.2 Configuration File Syntax
|
| 731 |
|
|
-------------------------------
|
| 732 |
|
|
|
| 733 |
|
|
The configuration file is divided into a series of sections, with the
|
| 734 |
|
|
general form:
|
| 735 |
|
|
|
| 736 |
|
|
section SECTION_NAME
|
| 737 |
|
|
|
| 738 |
|
|
...
|
| 739 |
|
|
|
| 740 |
|
|
end
|
| 741 |
|
|
|
| 742 |
|
|
Sections may also have sub-sections within them (currently only the
|
| 743 |
|
|
ATA/ATAPI disc interface uses this).
|
| 744 |
|
|
|
| 745 |
|
|
Within a section, or sub-section are a series of parameter assignments,
|
| 746 |
|
|
one per line, withe the general form
|
| 747 |
|
|
|
| 748 |
|
|
PARAMETER = VALUE
|
| 749 |
|
|
|
| 750 |
|
|
Depending on the parameter, the value may be a named value (an
|
| 751 |
|
|
enumeration), an integer (specified in any format acceptable in C) or a
|
| 752 |
82 |
jeremybenn |
string in doubple quotes. For flag parameters, the value 1 is used to
|
| 753 |
|
|
mean "true" or "on" and the value "0" to mean "false" or "off". An
|
| 754 |
19 |
jeremybenn |
example from a memory section shows each of these
|
| 755 |
|
|
|
| 756 |
|
|
section memory
|
| 757 |
|
|
type = random
|
| 758 |
|
|
pattern = 0x00
|
| 759 |
|
|
name = "FLASH"
|
| 760 |
|
|
...
|
| 761 |
|
|
end
|
| 762 |
|
|
|
| 763 |
|
|
Many parameters are optional and take reasonable default values if not
|
| 764 |
82 |
jeremybenn |
specified. However there are some parameters (for example the `ce'
|
| 765 |
19 |
jeremybenn |
parameter in `section memory') _must_ be specified.
|
| 766 |
|
|
|
| 767 |
|
|
Subsections are introduced by a keyword, with a parameter value (no `='
|
| 768 |
82 |
jeremybenn |
sign), and end with the same keyword prefixed by `end'. Thus the
|
| 769 |
19 |
jeremybenn |
ATA/ATAPI inteface (`section ata') has a `device' subsection, thus:
|
| 770 |
|
|
|
| 771 |
|
|
section ata
|
| 772 |
|
|
...
|
| 773 |
|
|
device 0
|
| 774 |
|
|
type = 1
|
| 775 |
|
|
file = "FILENAME"
|
| 776 |
|
|
...
|
| 777 |
|
|
enddevice
|
| 778 |
|
|
...
|
| 779 |
|
|
end
|
| 780 |
|
|
|
| 781 |
|
|
Some sections (for example `section sim') should appear only once.
|
| 782 |
|
|
Others (for example `section memory' may appear multiple times.
|
| 783 |
|
|
|
| 784 |
|
|
Sections may be omitted, _unless they contain parameters which are
|
| 785 |
82 |
jeremybenn |
non-optional_. If the section describes a part of the simulator which
|
| 786 |
19 |
jeremybenn |
is optional (for example whether it has a UART), then that
|
| 787 |
82 |
jeremybenn |
functionality will not be provided. If the section describes a part of
|
| 788 |
19 |
jeremybenn |
the simulator which is not optional (for example the CPU), then all the
|
| 789 |
|
|
parameters of that section will take their default values.
|
| 790 |
|
|
|
| 791 |
|
|
All optional parts of the functionality are always described by
|
| 792 |
|
|
sections including a `enabled' parameter, which can be set to 0 to
|
| 793 |
|
|
ensure that functionality is explicitly omitted.
|
| 794 |
|
|
|
| 795 |
|
|
Even if a section is disabled, all its parameters will be read and
|
| 796 |
82 |
jeremybenn |
stored. This is helpful if the section is subsequently enabled from
|
| 797 |
|
|
the Or1ksim command line (*note Interactive Command Line: Interactive
|
| 798 |
19 |
jeremybenn |
Command Line.).
|
| 799 |
|
|
|
| 800 |
|
|
Tip: It generally clearer to have sections describing _all_
|
| 801 |
|
|
components, with omitted functionality explicitly indicated by
|
| 802 |
|
|
setting the `enabled' parameter to 0
|
| 803 |
|
|
|
| 804 |
|
|
The following sections describe the various configuration sections and
|
| 805 |
|
|
the parameters which may be set in each.
|
| 806 |
|
|
|
| 807 |
|
|
|
| 808 |
|
|
File: or1ksim.info, Node: Simulator Configuration, Next: Core OpenRISC Configuration, Prev: Configuration File Format, Up: Configuration
|
| 809 |
|
|
|
| 810 |
|
|
3.2 Simulator Configuration
|
| 811 |
|
|
===========================
|
| 812 |
|
|
|
| 813 |
|
|
* Menu:
|
| 814 |
|
|
|
| 815 |
|
|
* Simulator Behavior::
|
| 816 |
|
|
* Verification API Configuration::
|
| 817 |
|
|
* CUC Configuration::
|
| 818 |
|
|
|
| 819 |
|
|
|
| 820 |
|
|
File: or1ksim.info, Node: Simulator Behavior, Next: Verification API Configuration, Up: Simulator Configuration
|
| 821 |
|
|
|
| 822 |
|
|
3.2.1 Simulator Behavior
|
| 823 |
|
|
------------------------
|
| 824 |
|
|
|
| 825 |
82 |
jeremybenn |
Simulator behavior is described in `section sim'. This section should
|
| 826 |
|
|
appear only once. The following parameters may be specified.
|
| 827 |
19 |
jeremybenn |
|
| 828 |
|
|
`verbose = 0|1'
|
| 829 |
82 |
jeremybenn |
If 1 (true), print extra messages. Default 0.
|
| 830 |
19 |
jeremybenn |
|
| 831 |
|
|
`debug = 0-9'
|
| 832 |
82 |
jeremybenn |
|
| 833 |
|
|
higher the value the greater the number of messages. Default 0.
|
| 834 |
|
|
Negative values will be treated as 0 (with a warning). Values
|
| 835 |
|
|
that are too large will be treated as 9 (with a warning).
|
| 836 |
19 |
jeremybenn |
|
| 837 |
|
|
`profile = 0|1'
|
| 838 |
|
|
If 1 (true) generate a profiling file using the file specified in
|
| 839 |
82 |
jeremybenn |
the `prof_file' parameter or otherwise `sim.profile'. Default 0.
|
| 840 |
19 |
jeremybenn |
|
| 841 |
|
|
`prof_file = ``FILENAME'''
|
| 842 |
82 |
jeremybenn |
Specifies the file to be used with the `profile' parameter.
|
| 843 |
|
|
Default `sim.profile'. For backwards compatibility, the
|
| 844 |
|
|
alternative name `prof_fn' is supported for this parameter, but
|
| 845 |
|
|
deprecated.
|
| 846 |
19 |
jeremybenn |
|
| 847 |
|
|
`mprofile = 0|1'
|
| 848 |
|
|
If 1 (true) generate a memory profiling file using the file
|
| 849 |
|
|
specified in the `mprof_file' parameter or otherwise
|
| 850 |
82 |
jeremybenn |
`sim.mprofile'. Default 0.
|
| 851 |
19 |
jeremybenn |
|
| 852 |
|
|
`mprof_fn = ``FILENAME'''
|
| 853 |
|
|
Specifies the file to be used with the `mprofile' parameter.
|
| 854 |
82 |
jeremybenn |
Default `sim.mprofile'. For backwards compatibility, the
|
| 855 |
19 |
jeremybenn |
alternative name `mprof_fn' is supported for this parameter, but
|
| 856 |
|
|
deprecated.
|
| 857 |
|
|
|
| 858 |
|
|
`history = 0|1'
|
| 859 |
82 |
jeremybenn |
If 1 (true) track execution flow. Default 0.
|
| 860 |
19 |
jeremybenn |
|
| 861 |
|
|
Note: Setting this parameter seriously degrades performance.
|
| 862 |
|
|
|
| 863 |
|
|
Note: If this execution flow tracking is enabled, then
|
| 864 |
|
|
`dependstats' must be enabled in the CPU configuration
|
| 865 |
|
|
section (*note CPU Configuration: CPU Configuration.).
|
| 866 |
|
|
|
| 867 |
|
|
`exe_log = 0|1'
|
| 868 |
82 |
jeremybenn |
If 1 (true), generate an execution log. Log is written to the
|
| 869 |
|
|
file specified in parameter `exe_log_file'. Default 0.
|
| 870 |
19 |
jeremybenn |
|
| 871 |
|
|
Note: Setting this parameter seriously degrades performance.
|
| 872 |
|
|
|
| 873 |
|
|
`exe_log_type = default|hardware|simple|software'
|
| 874 |
|
|
Type of execution log to produce.
|
| 875 |
|
|
|
| 876 |
|
|
`default'
|
| 877 |
82 |
jeremybenn |
Produce default output for the execution log. In the current
|
| 878 |
19 |
jeremybenn |
implementation this is the equivalent of `hardware'.
|
| 879 |
|
|
|
| 880 |
|
|
`hardware'
|
| 881 |
|
|
After each instruction execution, log the number of
|
| 882 |
|
|
instructions executed so far, the next instruction to execute
|
| 883 |
|
|
(in hex), the general purpose registers (GPRs), status
|
| 884 |
|
|
register, exception program counter, exception, effective
|
| 885 |
|
|
address register and exception status register.
|
| 886 |
|
|
|
| 887 |
|
|
`simple'
|
| 888 |
|
|
After each instruction execution, log the number of
|
| 889 |
|
|
instructions executed so far and the next instruction to
|
| 890 |
|
|
execute, symbolically disassembled.
|
| 891 |
|
|
|
| 892 |
|
|
`software'
|
| 893 |
|
|
After each instruction execution, log the number of
|
| 894 |
|
|
instructions executed so far and the next instruction to
|
| 895 |
82 |
jeremybenn |
execute, symbolically disassembled. Also show the value of
|
| 896 |
19 |
jeremybenn |
each operand to the instruction.
|
| 897 |
|
|
|
| 898 |
|
|
|
| 899 |
82 |
jeremybenn |
Default value `hardware'. Any unrecognized keyword (case
|
| 900 |
19 |
jeremybenn |
insensitive) will be treated as the default with a warning.
|
| 901 |
|
|
|
| 902 |
|
|
Note: Execution logs can be _very_ big.
|
| 903 |
|
|
|
| 904 |
|
|
`exe_log_start = VALUE'
|
| 905 |
82 |
jeremybenn |
Address of the first instruction to start logging. Default 0.
|
| 906 |
19 |
jeremybenn |
|
| 907 |
|
|
`exe_log_end = VALUE'
|
| 908 |
82 |
jeremybenn |
Address of the last instruction to log. Default no limit (i.e
|
| 909 |
|
|
once started logging will continue until the simulator exits).
|
| 910 |
19 |
jeremybenn |
|
| 911 |
|
|
`exe_log_marker = VALUE'
|
| 912 |
|
|
Specifies the number of instructions between printing horizontal
|
| 913 |
82 |
jeremybenn |
markers. Default is to produce no markers.
|
| 914 |
19 |
jeremybenn |
|
| 915 |
|
|
`exe_log_file = FILENAME'
|
| 916 |
|
|
Filename for the execution log filename if `exe_log' is enabled.
|
| 917 |
82 |
jeremybenn |
Default `executed.log'. For backwards compatibility, the
|
| 918 |
19 |
jeremybenn |
alternative name `exe_log_fn' is supported for this parameter, but
|
| 919 |
|
|
deprecated.
|
| 920 |
|
|
|
| 921 |
|
|
`clkcycle = VALUE[ps|ns|us|ms]'
|
| 922 |
82 |
jeremybenn |
Specify the time taken by one clock cycle. If no units are
|
| 923 |
|
|
specified, `ps' is assumed. Default 4000ps (250MHz).
|
| 924 |
19 |
jeremybenn |
|
| 925 |
|
|
|
| 926 |
|
|
|
| 927 |
|
|
File: or1ksim.info, Node: Verification API Configuration, Next: CUC Configuration, Prev: Simulator Behavior, Up: Simulator Configuration
|
| 928 |
|
|
|
| 929 |
|
|
3.2.2 Verification API (VAPI) Configuration
|
| 930 |
|
|
-------------------------------------------
|
| 931 |
|
|
|
| 932 |
|
|
The Verification API (VAPI) provides a TCP/IP interface to allow
|
| 933 |
82 |
jeremybenn |
components of the simulation to be controlled externally. *Note
|
| 934 |
19 |
jeremybenn |
Verification API: Verification API, for more details.
|
| 935 |
|
|
|
| 936 |
82 |
jeremybenn |
Verification API configuration is described in `section vapi'. This
|
| 937 |
|
|
section may appear at most once. The following parameters may be
|
| 938 |
19 |
jeremybenn |
specified.
|
| 939 |
|
|
|
| 940 |
|
|
`enabled = 0|1'
|
| 941 |
|
|
If 1 (true), verification API is enabled and its server started.
|
| 942 |
|
|
If 0 (the default), it is disabled.
|
| 943 |
|
|
|
| 944 |
|
|
`server_port = VALUE'
|
| 945 |
|
|
When VAPI is enabled, communication will be via TCP/IP on the port
|
| 946 |
82 |
jeremybenn |
specified by VALUE. The value must lie in the range 1 to 65535.
|
| 947 |
19 |
jeremybenn |
The default value is 50000.
|
| 948 |
|
|
|
| 949 |
82 |
jeremybenn |
Tip: There is no registered port for Or1ksim VAPI. Good
|
| 950 |
19 |
jeremybenn |
practice suggests users should adopt port values in the
|
| 951 |
82 |
jeremybenn |
"Dynamic" or "Private" port range, i.e. 49152-65535.
|
| 952 |
19 |
jeremybenn |
|
| 953 |
|
|
`log_enabled = 0|1'
|
| 954 |
|
|
If 1 (true), all VAPI requests and sent commands will be logged.
|
| 955 |
82 |
jeremybenn |
If 0 (the default), logging is diabled. Logs are written to the
|
| 956 |
19 |
jeremybenn |
file specified by the `vapi_log_file' field (see below).
|
| 957 |
|
|
|
| 958 |
|
|
Caution: This can generate a substantial amount of file I/O
|
| 959 |
|
|
and seriously degrade simulator performance.
|
| 960 |
|
|
|
| 961 |
|
|
`hide_device_id = 0|1'
|
| 962 |
82 |
jeremybenn |
If 1 (true) don't log the device ID. If 0 (the default), log the
|
| 963 |
|
|
device ID. This feature (when set to 1) is provided for backwards
|
| 964 |
19 |
jeremybenn |
compatibility with an old version of VAPI.
|
| 965 |
|
|
|
| 966 |
|
|
`vapi_log_file = "FILENAME"'
|
| 967 |
|
|
Use `filename' as the file for logged data is logging is enabled
|
| 968 |
82 |
jeremybenn |
(see `log_enabled' above). The default is `"vapi.log"'. For
|
| 969 |
19 |
jeremybenn |
backwards compatibility, the alternative name `vapi_log_fn' is
|
| 970 |
|
|
supported for this parameter, but deprecated.
|
| 971 |
|
|
|
| 972 |
|
|
|
| 973 |
|
|
|
| 974 |
|
|
File: or1ksim.info, Node: CUC Configuration, Prev: Verification API Configuration, Up: Simulator Configuration
|
| 975 |
|
|
|
| 976 |
|
|
3.2.3 Custom Unit Compiler (CUC) Configuration
|
| 977 |
|
|
----------------------------------------------
|
| 978 |
|
|
|
| 979 |
|
|
The Custom Unit Compiler (CUC) was a project by Marko Mlinar to generate
|
| 980 |
82 |
jeremybenn |
Verilog from ANSI C functions. The project seems to not have progressed
|
| 981 |
|
|
beyond the initial prototype phase. The configuration parameters are
|
| 982 |
19 |
jeremybenn |
described here for the record.
|
| 983 |
|
|
|
| 984 |
82 |
jeremybenn |
CUC configuration is described in `section cuc'. This section may
|
| 985 |
|
|
appear at most once. The following parameters may be specified.
|
| 986 |
19 |
jeremybenn |
|
| 987 |
|
|
`memory_order = none|weak|strong|exact'
|
| 988 |
|
|
This parameter specifies the memory ordering required:
|
| 989 |
|
|
|
| 990 |
|
|
`memory_order=none'
|
| 991 |
|
|
Different memory ordering, even if there are dependencies.
|
| 992 |
|
|
Bursts can be made, width can change.
|
| 993 |
|
|
|
| 994 |
82 |
jeremybenn |
Different memory ordering, even if there are dependencies. If
|
| 995 |
19 |
jeremybenn |
dependencies cannot occur, then bursts can be made, width can
|
| 996 |
|
|
change.
|
| 997 |
|
|
|
| 998 |
82 |
jeremybenn |
Same memory ordering. Bursts can be made, width can change.
|
| 999 |
19 |
jeremybenn |
|
| 1000 |
|
|
Exactly the same memory ordering and widths.
|
| 1001 |
|
|
|
| 1002 |
|
|
|
| 1003 |
82 |
jeremybenn |
The default value is `memory_order=exact'. Invalid memory
|
| 1004 |
19 |
jeremybenn |
orderings are ignored with a warning.
|
| 1005 |
|
|
|
| 1006 |
|
|
`calling_convention = 0|1'
|
| 1007 |
82 |
jeremybenn |
If 1 (true), programs follow OpenRISC calling conventions. If 0
|
| 1008 |
19 |
jeremybenn |
(the default), they may use other convenitions.
|
| 1009 |
|
|
|
| 1010 |
|
|
`enable_bursts = 0 | 1'
|
| 1011 |
82 |
jeremybenn |
If 1 (true), bursts are detected. If 0 (the default), bursts are
|
| 1012 |
19 |
jeremybenn |
not detected.
|
| 1013 |
|
|
|
| 1014 |
|
|
`no_multicycle = 0 | 1'
|
| 1015 |
82 |
jeremybenn |
If 1 (true), no multicycle logic paths will be generated. If 0
|
| 1016 |
|
|
(the default), multicycle logic paths will be generated.
|
| 1017 |
19 |
jeremybenn |
|
| 1018 |
|
|
`timings_file = "FILENAME"'
|
| 1019 |
82 |
jeremybenn |
FILENAME specifies a file containing timing information. The
|
| 1020 |
|
|
default value is `"virtex.tim"'. For backwards compatibility, the
|
| 1021 |
19 |
jeremybenn |
alternative name `timings_fn' is supported for this parameter, but
|
| 1022 |
|
|
deprecated.
|
| 1023 |
|
|
|
| 1024 |
|
|
|
| 1025 |
|
|
|
| 1026 |
|
|
File: or1ksim.info, Node: Core OpenRISC Configuration, Next: Peripheral Configuration, Prev: Simulator Configuration, Up: Configuration
|
| 1027 |
|
|
|
| 1028 |
|
|
3.3 Configuring the OpenRISC Architectural Components
|
| 1029 |
|
|
=====================================================
|
| 1030 |
|
|
|
| 1031 |
|
|
* Menu:
|
| 1032 |
|
|
|
| 1033 |
|
|
* CPU Configuration::
|
| 1034 |
|
|
* Memory Configuration::
|
| 1035 |
|
|
* Memory Management Configuration::
|
| 1036 |
|
|
* Cache Configuration::
|
| 1037 |
|
|
* Interrupt Configuration::
|
| 1038 |
|
|
* Power Management Configuration::
|
| 1039 |
|
|
* Branch Prediction Configuration::
|
| 1040 |
|
|
* Debug Interface Configuration::
|
| 1041 |
|
|
|
| 1042 |
|
|
|
| 1043 |
|
|
File: or1ksim.info, Node: CPU Configuration, Next: Memory Configuration, Up: Core OpenRISC Configuration
|
| 1044 |
|
|
|
| 1045 |
|
|
3.3.1 CPU Configuration
|
| 1046 |
|
|
-----------------------
|
| 1047 |
|
|
|
| 1048 |
82 |
jeremybenn |
CPU configuration is described in `section cpu'. This section should
|
| 1049 |
|
|
appear only once. At present Or1ksim does not model multi-CPU systems.
|
| 1050 |
19 |
jeremybenn |
The following parameters may be specified.
|
| 1051 |
|
|
|
| 1052 |
|
|
`ver = VALUE'
|
| 1053 |
|
|
|
| 1054 |
|
|
`cfg = VALUE'
|
| 1055 |
|
|
|
| 1056 |
|
|
`rev = VALUE'
|
| 1057 |
|
|
The values are used to form the corresponding fields in the `VR'
|
| 1058 |
82 |
jeremybenn |
Special Purpose Register (SPR 0). Default values 0. A warning is
|
| 1059 |
19 |
jeremybenn |
given and the value truncated if it is too large (8 bits for `ver'
|
| 1060 |
|
|
and `cfg', 6 bits for `rev').
|
| 1061 |
|
|
|
| 1062 |
|
|
`upr = VALUE'
|
| 1063 |
|
|
Used as the value of the Unit Present Register (UPR) Special
|
| 1064 |
82 |
jeremybenn |
Purpose Register (SPR 1) to VALUE. Default value is 0x0000075f,
|
| 1065 |
19 |
jeremybenn |
i.e.
|
| 1066 |
|
|
* UPR present (0x00000001)
|
| 1067 |
|
|
|
| 1068 |
|
|
* Data cache present (0x00000002)
|
| 1069 |
|
|
|
| 1070 |
|
|
* Instruction cache present (0x00000004)
|
| 1071 |
|
|
|
| 1072 |
|
|
* Data MMY present (0x00000008)
|
| 1073 |
|
|
|
| 1074 |
|
|
* Instruction MMU present (0x00000010)
|
| 1075 |
|
|
|
| 1076 |
|
|
* Debug unit present (0x00000040)
|
| 1077 |
|
|
|
| 1078 |
|
|
* Power management unit present (0x00000100)
|
| 1079 |
|
|
|
| 1080 |
|
|
* Programmable interrupt controller present (0x00000200)
|
| 1081 |
|
|
|
| 1082 |
|
|
* Tick timer present (0x00000400)
|
| 1083 |
|
|
|
| 1084 |
|
|
However, with the exection of the UPR present (0x00000001) and tick
|
| 1085 |
|
|
timer present, the various fields will be modified with the values
|
| 1086 |
|
|
specified in their corresponding configuration sections.
|
| 1087 |
|
|
|
| 1088 |
|
|
`cfgr = VALUE'
|
| 1089 |
|
|
Sets the CPU configuration register (Special Purpose Register 2) to
|
| 1090 |
82 |
jeremybenn |
VALUE. Default value is 0x00000020, i.e. support for the ORBIS32
|
| 1091 |
|
|
instruction set. Attempts to set any other value are accepted, but
|
| 1092 |
19 |
jeremybenn |
issue a warning that there is no support for the instruction set.
|
| 1093 |
|
|
|
| 1094 |
|
|
`sr = VALUE'
|
| 1095 |
|
|
Sets the supervision register Special Purpose Register (SPR 0x11)
|
| 1096 |
82 |
jeremybenn |
to VALUE. Default value is 0x00008001, i.e. start in supervision
|
| 1097 |
19 |
jeremybenn |
mode (0x00000001) and set the "Fixed One" bit (0x00008000).
|
| 1098 |
|
|
|
| 1099 |
98 |
jeremybenn |
Note: This is particularly useful when an image is held in
|
| 1100 |
|
|
Flash at high memory (0xf0000000). The EPH bit can be set,
|
| 1101 |
|
|
so that interrupt vectors are basedf at 0xf0000000, rather
|
| 1102 |
|
|
than 0x0.
|
| 1103 |
|
|
|
| 1104 |
19 |
jeremybenn |
`superscalar = 0|1'
|
| 1105 |
82 |
jeremybenn |
If 1, the processor operates in superscalar mode. Default value is
|
| 1106 |
19 |
jeremybenn |
0.
|
| 1107 |
|
|
|
| 1108 |
|
|
In the current simulator, the only functional effect of superscalar
|
| 1109 |
|
|
mode is to affect the calculation of the number of cycles taken to
|
| 1110 |
|
|
execute an instruction.
|
| 1111 |
|
|
|
| 1112 |
|
|
Caution: The code for this does not appear to be complete or
|
| 1113 |
|
|
well tested, so users are advised not to use this option.
|
| 1114 |
|
|
|
| 1115 |
|
|
`hazards = 0|1'
|
| 1116 |
82 |
jeremybenn |
If 1, data hazards are tracked in a superscalar CPU. Default
|
| 1117 |
|
|
value is 0.
|
| 1118 |
19 |
jeremybenn |
|
| 1119 |
|
|
In the current simulator, the only functional effect is to cause
|
| 1120 |
|
|
logging of hazard waiting information if the CPU is superscalar.
|
| 1121 |
|
|
However nowhere in the simulator is this data actually computed,
|
| 1122 |
|
|
so the net result is probably to have no effect.
|
| 1123 |
|
|
|
| 1124 |
|
|
if harzards are tracked, current hazards can be displayed using the
|
| 1125 |
|
|
simulator's `r' command.
|
| 1126 |
|
|
|
| 1127 |
|
|
Caution: The code for this does not appear to be complete or
|
| 1128 |
|
|
well tested, so users are advised not to use this option.
|
| 1129 |
|
|
|
| 1130 |
|
|
`dependstats = 0|1'
|
| 1131 |
82 |
jeremybenn |
If 1, inter-instruction dependencies are calculated. Default
|
| 1132 |
|
|
value 0.
|
| 1133 |
19 |
jeremybenn |
|
| 1134 |
|
|
If these values are calculated, the depencies can be displayed
|
| 1135 |
|
|
using the simulator's `stat' command.
|
| 1136 |
|
|
|
| 1137 |
|
|
Note: This field must be enabled, if execution execution flow
|
| 1138 |
|
|
tracking (field `history') has been requested in the simulator
|
| 1139 |
|
|
configuration section (*note Simulator Behavior: Simulator
|
| 1140 |
|
|
Behavior.).
|
| 1141 |
|
|
|
| 1142 |
|
|
`sbuf_len = VALUE'
|
| 1143 |
|
|
The length of the store buffer is set to VALUE, which must be no
|
| 1144 |
82 |
jeremybenn |
greater than 256. Larger values will be truncated to 256 with a
|
| 1145 |
|
|
warning. Negative values will be treated as 0 with a warning.
|
| 1146 |
|
|
Use 0 to disable the store buffer.
|
| 1147 |
19 |
jeremybenn |
|
| 1148 |
|
|
When the store buffer is active, stores are accumulated and
|
| 1149 |
|
|
committed when I/O is idle.
|
| 1150 |
|
|
|
| 1151 |
100 |
julius |
`hardfloat = 0|1'
|
| 1152 |
|
|
If 1, hardfloat instructions are enabled. Default value 0.
|
| 1153 |
19 |
jeremybenn |
|
| 1154 |
104 |
jeremybenn |
|
| 1155 |
19 |
jeremybenn |
|
| 1156 |
|
|
File: or1ksim.info, Node: Memory Configuration, Next: Memory Management Configuration, Prev: CPU Configuration, Up: Core OpenRISC Configuration
|
| 1157 |
|
|
|
| 1158 |
|
|
3.3.2 Memory Configuration
|
| 1159 |
|
|
--------------------------
|
| 1160 |
|
|
|
| 1161 |
82 |
jeremybenn |
Memory configuration is described in `section memory'. This section
|
| 1162 |
98 |
jeremybenn |
may appear multiple times, specifying multiple blocks of memory.
|
| 1163 |
19 |
jeremybenn |
|
| 1164 |
98 |
jeremybenn |
Caution: The user may choose whether or not to enable a memory
|
| 1165 |
|
|
controller. If a memory controller is enabled, then the standard
|
| 1166 |
|
|
OpenRISC C libraries will initialize it to expect 64MB memory
|
| 1167 |
|
|
blocks, and any memory declarations _must_ reflect this. The
|
| 1168 |
|
|
section describing memory controller configuration describes the
|
| 1169 |
|
|
steps necessary for using smaller or larger memory sections (*note
|
| 1170 |
|
|
Memory Controller Configuration: Memory Controller Configuration.).
|
| 1171 |
|
|
|
| 1172 |
|
|
If a memory controller is _not_ enabled, then the standard C
|
| 1173 |
|
|
library code will generate memory access errors. The solution is
|
| 1174 |
|
|
to declare an additional writable memory block, mimicing the memory
|
| 1175 |
|
|
controller's register bank as follows.
|
| 1176 |
|
|
|
| 1177 |
|
|
section memory
|
| 1178 |
|
|
pattern = 0x00
|
| 1179 |
|
|
type = unknown
|
| 1180 |
|
|
name = "MC shadow"
|
| 1181 |
|
|
baseaddr = 0x93000000
|
| 1182 |
|
|
size = 0x00000080
|
| 1183 |
|
|
delayr = 2
|
| 1184 |
|
|
delayw = 4
|
| 1185 |
|
|
end
|
| 1186 |
|
|
|
| 1187 |
|
|
|
| 1188 |
|
|
The following parameters may be specified.
|
| 1189 |
|
|
|
| 1190 |
19 |
jeremybenn |
`type=random|pattern|unknown|zero'
|
| 1191 |
82 |
jeremybenn |
Specifies the values to which memory should be initialized. The
|
| 1192 |
19 |
jeremybenn |
default value is `unknown'.
|
| 1193 |
|
|
|
| 1194 |
|
|
`random'
|
| 1195 |
82 |
jeremybenn |
Set the memory values to be a random value. A seed for the
|
| 1196 |
19 |
jeremybenn |
random generator may be set using the `random_seed' field in
|
| 1197 |
|
|
this section (see below), thus ensuring the same "random"
|
| 1198 |
|
|
values are used each time.
|
| 1199 |
|
|
|
| 1200 |
|
|
`pattern'
|
| 1201 |
|
|
Set the memory values to be a pattern value, which is set
|
| 1202 |
|
|
using the `pattern' field in this section (see below).
|
| 1203 |
|
|
|
| 1204 |
|
|
`unknown'
|
| 1205 |
82 |
jeremybenn |
The memory values are not initialized (i.e. left "unknown").
|
| 1206 |
19 |
jeremybenn |
This option will yield faster initialization of the simulator.
|
| 1207 |
|
|
|
| 1208 |
|
|
`zero'
|
| 1209 |
82 |
jeremybenn |
Set the memory values to be 0. This is the equivalent of
|
| 1210 |
19 |
jeremybenn |
`type=pattern' and a `pattern' value of 0, and implemented as
|
| 1211 |
|
|
such.
|
| 1212 |
|
|
|
| 1213 |
|
|
Note: As a consequence, if the `pattern' field is
|
| 1214 |
|
|
_subsequently_ specified in this section, the value in
|
| 1215 |
|
|
that field will be used instead of zero to initialize
|
| 1216 |
|
|
the memory.
|
| 1217 |
|
|
|
| 1218 |
|
|
|
| 1219 |
|
|
`random_seed = VALUE'
|
| 1220 |
82 |
jeremybenn |
Set the seed for the random number generator to VALUE. This only
|
| 1221 |
19 |
jeremybenn |
has any effect for memory type `random'.
|
| 1222 |
|
|
|
| 1223 |
|
|
The default value is -1, which means the seed will be set from a
|
| 1224 |
|
|
call to the `time' function, thus ensuring different random values
|
| 1225 |
82 |
jeremybenn |
are used on each run. The simulator prints out the seed used in
|
| 1226 |
19 |
jeremybenn |
this case, allowing repeat runs to regenerate the same random
|
| 1227 |
|
|
values used in any particular run.
|
| 1228 |
|
|
|
| 1229 |
|
|
`pattern = VALUE'
|
| 1230 |
82 |
jeremybenn |
Set the pattern to be used when initializing memory to VALUE. The
|
| 1231 |
|
|
default value is 0. This only has any effect for memory type
|
| 1232 |
|
|
`pattern'. The least significant 8 bits of this value is used to
|
| 1233 |
|
|
initialize each byte. More than 8 bits can be specified, but will
|
| 1234 |
19 |
jeremybenn |
ignored with a warning.
|
| 1235 |
|
|
|
| 1236 |
|
|
Tip: The default value, is equivalent to setting the memory
|
| 1237 |
82 |
jeremybenn |
`type' to be `zero'. If that is what is intended, then using
|
| 1238 |
19 |
jeremybenn |
`type=zero' explicitly is better than using `type=pattern'
|
| 1239 |
|
|
and not specifying a value for `pattern'.
|
| 1240 |
|
|
|
| 1241 |
|
|
`baseaddr = VALUE'
|
| 1242 |
82 |
jeremybenn |
Set the base address of the memory to VALUE. It should be aligned
|
| 1243 |
19 |
jeremybenn |
to a multiple of the memory size rounded up to the nearest 2^n.
|
| 1244 |
|
|
The default value is 0.
|
| 1245 |
|
|
|
| 1246 |
|
|
`size = VALUE'
|
| 1247 |
82 |
jeremybenn |
Set the size of the memory block to be VALUE bytes. This should
|
| 1248 |
|
|
be a multiple of 4 (i.e. word aligned). The default value is
|
| 1249 |
|
|
1024.
|
| 1250 |
19 |
jeremybenn |
|
| 1251 |
|
|
Note: When allocating memory, the simulator will allocate the
|
| 1252 |
|
|
nearest 2^n bytes greater than or equal to VALUE, and will not
|
| 1253 |
|
|
notice memory misses in any part of the memory between VALUE
|
| 1254 |
|
|
and the amount allocated.
|
| 1255 |
|
|
|
| 1256 |
|
|
As a consequence users are strongly recommended to specify
|
| 1257 |
82 |
jeremybenn |
memory sizes that are an exact power of 2. If some other
|
| 1258 |
19 |
jeremybenn |
amount of memory is required, it should be specified as
|
| 1259 |
|
|
separate, contiguous blocks, each of which is a power of 2 in
|
| 1260 |
|
|
size.
|
| 1261 |
|
|
|
| 1262 |
|
|
`name = "TEXT"'
|
| 1263 |
82 |
jeremybenn |
Name the block. Typically these describe the type of memory being
|
| 1264 |
|
|
modeled (thus `"SRAM"' or `"Flash"'. The default is
|
| 1265 |
19 |
jeremybenn |
`"anonymous memory block"'.
|
| 1266 |
|
|
|
| 1267 |
|
|
Note: It is not clear that this information is currently ever
|
| 1268 |
82 |
jeremybenn |
used in normal operation of the simulator. Even the `info'
|
| 1269 |
19 |
jeremybenn |
command of the simulator ignores it.
|
| 1270 |
|
|
|
| 1271 |
|
|
`ce = VALUE'
|
| 1272 |
82 |
jeremybenn |
Set the chip enable index of the memory instance. Each memory
|
| 1273 |
19 |
jeremybenn |
instance should have a unique chip enable index, which should be
|
| 1274 |
82 |
jeremybenn |
greater than or equal to zero. This is used by the memory
|
| 1275 |
19 |
jeremybenn |
controller when identifying different memory instances.
|
| 1276 |
|
|
|
| 1277 |
98 |
jeremybenn |
There is no requirement to set `ce' if a memory controller is not
|
| 1278 |
|
|
enabled. The default value is -1 (invalid).
|
| 1279 |
19 |
jeremybenn |
|
| 1280 |
|
|
`mc = VALUE'
|
| 1281 |
82 |
jeremybenn |
Specifies the memory controller this memory is connected to. It
|
| 1282 |
19 |
jeremybenn |
should correspond to the `index' field specified in a `section mc'
|
| 1283 |
|
|
for a memory controller (*note Memory Controller Configuration:
|
| 1284 |
|
|
Memory Controller Configuration.).
|
| 1285 |
|
|
|
| 1286 |
98 |
jeremybenn |
There is no requirement to set `mc' if a memory controller is not
|
| 1287 |
|
|
enabled. Default value is 0, which is also the default value of a
|
| 1288 |
|
|
memory controller `index' field. This is suitable therefore for
|
| 1289 |
|
|
designs with just one memory controller.
|
| 1290 |
19 |
jeremybenn |
|
| 1291 |
|
|
`delayr = VALUE'
|
| 1292 |
82 |
jeremybenn |
The number of cycles required for a read access. Set to -1 if the
|
| 1293 |
|
|
memory does not support reading. Default value 1. The simulator
|
| 1294 |
19 |
jeremybenn |
will add this number of cycles to the total instruction cycle
|
| 1295 |
|
|
count when reading from main memory.
|
| 1296 |
|
|
|
| 1297 |
|
|
`delayw = VALUE'
|
| 1298 |
82 |
jeremybenn |
The number of cycles required for a write access. Set to -1 if the
|
| 1299 |
|
|
memory does not support writing. Default value 1. The simulator
|
| 1300 |
19 |
jeremybenn |
will add this number of cycles to the total instruction cycle
|
| 1301 |
|
|
count when writing to main memory.
|
| 1302 |
|
|
|
| 1303 |
|
|
`log = "FILE"'
|
| 1304 |
|
|
If specified, `file' names a file for all memory accesses to be
|
| 1305 |
82 |
jeremybenn |
logged. If not specified, the default value, NULL is used, meaning
|
| 1306 |
19 |
jeremybenn |
that the memory is not logged.
|
| 1307 |
|
|
|
| 1308 |
|
|
|
| 1309 |
|
|
|
| 1310 |
|
|
File: or1ksim.info, Node: Memory Management Configuration, Next: Cache Configuration, Prev: Memory Configuration, Up: Core OpenRISC Configuration
|
| 1311 |
|
|
|
| 1312 |
|
|
3.3.3 Memory Management Configuration
|
| 1313 |
|
|
-------------------------------------
|
| 1314 |
|
|
|
| 1315 |
|
|
Memory Management Unit (MMU) configuration is described in `section
|
| 1316 |
|
|
dmmu' (for the data MMU) and `section immu' (for the instruction MMU).
|
| 1317 |
82 |
jeremybenn |
Each section should appear at most once. The following parameters may
|
| 1318 |
19 |
jeremybenn |
be specified.
|
| 1319 |
|
|
|
| 1320 |
|
|
`enabled = 0|1'
|
| 1321 |
|
|
If 1 (true), the data or instruction (as appropriate) MMU is
|
| 1322 |
82 |
jeremybenn |
enabled. If 0 (the default), it is disabled.
|
| 1323 |
19 |
jeremybenn |
|
| 1324 |
|
|
`nsets = VALUE'
|
| 1325 |
|
|
Sets the number of data or instruction (as appropriate) TLB sets to
|
| 1326 |
82 |
jeremybenn |
VALUE, which must be a power of two, not exceeding 128. Values
|
| 1327 |
|
|
which do not fit these criteria are ignored with a warning. The
|
| 1328 |
19 |
jeremybenn |
default value is 1.
|
| 1329 |
|
|
|
| 1330 |
|
|
`nways = VALUE'
|
| 1331 |
|
|
Sets the number of data or instruction (as appropriate) TLB ways to
|
| 1332 |
82 |
jeremybenn |
VALUE. The value must be in the range 1 to 4. Values outside
|
| 1333 |
|
|
this range are ignored with a warning. The default value is 1.
|
| 1334 |
19 |
jeremybenn |
|
| 1335 |
|
|
`pagesize = VALUE'
|
| 1336 |
|
|
The data or instruction (as appropriate) MMU page size is set to
|
| 1337 |
82 |
jeremybenn |
VALUE, which must be a power of 2. Values which are not a power
|
| 1338 |
|
|
of 2 are ignored with a warning. The default is 8192 (0x2000).
|
| 1339 |
19 |
jeremybenn |
|
| 1340 |
|
|
`entrysize = VALUE'
|
| 1341 |
|
|
The data or instruction (as appropriate) MMU entry size is set to
|
| 1342 |
82 |
jeremybenn |
VALUE, which must be a power of 2. Values which are not a power
|
| 1343 |
|
|
of 2 are ignored with a warning. The default value is 1.
|
| 1344 |
19 |
jeremybenn |
|
| 1345 |
|
|
Note: Or1ksim does not appear to use the `entrysize' parameter
|
| 1346 |
82 |
jeremybenn |
in its simulation of the MMUs. Thus setting this value does
|
| 1347 |
19 |
jeremybenn |
not seem to matter.
|
| 1348 |
|
|
|
| 1349 |
|
|
`ustates = VALUE'
|
| 1350 |
|
|
The number of instruction usage states for the data or instruction
|
| 1351 |
|
|
(as appropriate) MMU is set to VALUE, which must be 2, 3 or 4.
|
| 1352 |
82 |
jeremybenn |
Values outside this range are ignored with a warning. The default
|
| 1353 |
19 |
jeremybenn |
value is 2.
|
| 1354 |
|
|
|
| 1355 |
|
|
Note: Or1ksim does not appear to use the `ustates' parameter
|
| 1356 |
82 |
jeremybenn |
in its simulation of the MMUs. Thus setting this value does
|
| 1357 |
19 |
jeremybenn |
not seem to matter.
|
| 1358 |
|
|
|
| 1359 |
|
|
`hitdelay = VALUE'
|
| 1360 |
|
|
Set the number of cycles a data or instruction (as appropriate) MMU
|
| 1361 |
82 |
jeremybenn |
hit costs. Default value 1.
|
| 1362 |
19 |
jeremybenn |
|
| 1363 |
|
|
`missdelay = VALUE'
|
| 1364 |
|
|
Set the number of cycles a data or instruction (as appropriate) MMU
|
| 1365 |
82 |
jeremybenn |
miss costs. Default value 1.
|
| 1366 |
19 |
jeremybenn |
|
| 1367 |
|
|
|
| 1368 |
|
|
|
| 1369 |
|
|
File: or1ksim.info, Node: Cache Configuration, Next: Interrupt Configuration, Prev: Memory Management Configuration, Up: Core OpenRISC Configuration
|
| 1370 |
|
|
|
| 1371 |
|
|
3.3.4 Cache Configuration
|
| 1372 |
|
|
-------------------------
|
| 1373 |
|
|
|
| 1374 |
|
|
Cache configuration is described in `section dc' (for the data cache)
|
| 1375 |
82 |
jeremybenn |
and `seciton ic' (for the instruction cache). Each section should
|
| 1376 |
|
|
appear at most once. The following parameters may be specified.
|
| 1377 |
19 |
jeremybenn |
|
| 1378 |
|
|
`enabled = 0|1'
|
| 1379 |
|
|
If 1 (true), the data or instruction (as appropriate) cache is
|
| 1380 |
82 |
jeremybenn |
enabled. If 0 (the default), it is disabled.
|
| 1381 |
19 |
jeremybenn |
|
| 1382 |
|
|
`nsets = VALUE'
|
| 1383 |
|
|
Sets the number of data or instruction (as appropriate) cache sets
|
| 1384 |
|
|
to VALUE, which must be a power of two, not exceeding
|
| 1385 |
|
|
`MAX_DC_SETS' (for the data cache) or `MAX_IC_SETS' (for the
|
| 1386 |
82 |
jeremybenn |
instruction cache). At the time of writing, these constants are
|
| 1387 |
|
|
both defined in the code to be 1024). The default value is 1.
|
| 1388 |
19 |
jeremybenn |
|
| 1389 |
|
|
`nways = VALUE'
|
| 1390 |
|
|
Sets the number of data or instruction (as appropriate) cache ways
|
| 1391 |
|
|
to VALUE, which must be a power of two, not exceeding
|
| 1392 |
|
|
`MAX_DC_WAYS' (for the data cache) or `MAX_IC_WAYS' (for the
|
| 1393 |
82 |
jeremybenn |
instruction cache). At the time of writing, these constants are
|
| 1394 |
|
|
both defined in the code to be 32). The default value is 1.
|
| 1395 |
19 |
jeremybenn |
|
| 1396 |
|
|
`blocksize = VALUE'
|
| 1397 |
|
|
The data or instruction (as appropriate) cache block size is set to
|
| 1398 |
82 |
jeremybenn |
VALUE bytes, which must be either 16 or 32. The default is 16.
|
| 1399 |
19 |
jeremybenn |
|
| 1400 |
|
|
`ustates = VALUE'
|
| 1401 |
|
|
The number of instruction usage states for the data or instruction
|
| 1402 |
|
|
(as appropriate) cache is set to VALUE, which must be 2, 3 or 4.
|
| 1403 |
|
|
The default value is 2.
|
| 1404 |
|
|
|
| 1405 |
|
|
`hitdelay = VALUE'
|
| 1406 |
82 |
jeremybenn |
_Instruction cache only_. Set the number of cycles an instruction
|
| 1407 |
|
|
cache hit costs. Default value 1.
|
| 1408 |
19 |
jeremybenn |
|
| 1409 |
|
|
`missdelay = VALUE'
|
| 1410 |
82 |
jeremybenn |
_Instruction cache only_. Set the number of cycles an instruction
|
| 1411 |
|
|
cache miss costs. Default value 1.
|
| 1412 |
19 |
jeremybenn |
|
| 1413 |
|
|
`load_hitdelay = VALUE'
|
| 1414 |
82 |
jeremybenn |
_Data cache only_. Set the number of cycles a data load cache hit
|
| 1415 |
|
|
costs. Default value 2.
|
| 1416 |
19 |
jeremybenn |
|
| 1417 |
|
|
`load_missdelay = VALUE'
|
| 1418 |
82 |
jeremybenn |
_Data cache only_. Set the number of cycles a data load cache
|
| 1419 |
|
|
miss costs. Default value 2.
|
| 1420 |
19 |
jeremybenn |
|
| 1421 |
|
|
`store_hitdelay = VALUE'
|
| 1422 |
82 |
jeremybenn |
_Data cache only_. Set the number of cycles a data store cache hit
|
| 1423 |
|
|
costs. Default value 0.
|
| 1424 |
19 |
jeremybenn |
|
| 1425 |
|
|
`store_missdelay = VALUE'
|
| 1426 |
82 |
jeremybenn |
_Data cache only_. Set the number of cycles a data store cache
|
| 1427 |
|
|
miss costs. Default value 0.
|
| 1428 |
19 |
jeremybenn |
|
| 1429 |
|
|
|
| 1430 |
|
|
|
| 1431 |
|
|
File: or1ksim.info, Node: Interrupt Configuration, Next: Power Management Configuration, Prev: Cache Configuration, Up: Core OpenRISC Configuration
|
| 1432 |
|
|
|
| 1433 |
|
|
3.3.5 Interrupt Configuration
|
| 1434 |
|
|
-----------------------------
|
| 1435 |
|
|
|
| 1436 |
|
|
Programmable Interrupt Controller (PIC) configuration is described in
|
| 1437 |
82 |
jeremybenn |
`section pic'. This section may appear at most once--Or1ksim has no
|
| 1438 |
|
|
mechanism for handling multiple interrupt controllers. The following
|
| 1439 |
19 |
jeremybenn |
parameters may be specified.
|
| 1440 |
|
|
|
| 1441 |
|
|
`enabled = 0|1'
|
| 1442 |
82 |
jeremybenn |
If 1 (true), the programmable interrupt controller is enabled. If
|
| 1443 |
|
|
|
| 1444 |
19 |
jeremybenn |
|
| 1445 |
|
|
`edge_trigger = 0|1'
|
| 1446 |
|
|
If 1 (true, the default), the programmable interrupt controller is
|
| 1447 |
82 |
jeremybenn |
edge triggered. If 0 (false), it is level triggered.
|
| 1448 |
19 |
jeremybenn |
|
| 1449 |
|
|
|
| 1450 |
|
|
|
| 1451 |
|
|
File: or1ksim.info, Node: Power Management Configuration, Next: Branch Prediction Configuration, Prev: Interrupt Configuration, Up: Core OpenRISC Configuration
|
| 1452 |
|
|
|
| 1453 |
|
|
3.3.6 Power Management Configuration
|
| 1454 |
|
|
------------------------------------
|
| 1455 |
|
|
|
| 1456 |
82 |
jeremybenn |
Power management implementation is incomplete. At present the effect
|
| 1457 |
19 |
jeremybenn |
(which only happens when the power management unit is enabled) of
|
| 1458 |
|
|
setting the different bits in the power management Special Purpose
|
| 1459 |
|
|
Register (PMR, SPR 0x4000) is
|
| 1460 |
|
|
|
| 1461 |
|
|
`SDF (bit mask 0x0000000f)'
|
| 1462 |
|
|
No effect - these bits are ignored
|
| 1463 |
|
|
|
| 1464 |
|
|
`DME (bit mask 0x00000010)'
|
| 1465 |
|
|
`SME (bit mask 0x00000020)'
|
| 1466 |
|
|
Both these bits cause the processor to stop executing
|
| 1467 |
82 |
jeremybenn |
instructions. However all other functions (debug interaction, CLI,
|
| 1468 |
19 |
jeremybenn |
VAPI etc) carry on as normal.
|
| 1469 |
|
|
|
| 1470 |
|
|
`DCGE (bit mask 0x00000004)'
|
| 1471 |
|
|
No effect - this bit is ignored
|
| 1472 |
|
|
|
| 1473 |
|
|
`SUME (bit mask 0x00000008)'
|
| 1474 |
|
|
Enabling this bit causes a message to be printed, advising that the
|
| 1475 |
|
|
processor is suspending and the simulator exits.
|
| 1476 |
|
|
|
| 1477 |
|
|
|
| 1478 |
|
|
On reset all bits are cleared.
|
| 1479 |
|
|
|
| 1480 |
82 |
jeremybenn |
Power management configuration is described in `section pm'. This
|
| 1481 |
|
|
section may appear at most once. The following parameter may be
|
| 1482 |
19 |
jeremybenn |
specified.
|
| 1483 |
|
|
|
| 1484 |
|
|
`enabled = 0|1'
|
| 1485 |
82 |
jeremybenn |
If 1 (true), power management is enabled. If 0 (the default), it
|
| 1486 |
|
|
is disabled.
|
| 1487 |
19 |
jeremybenn |
|
| 1488 |
|
|
|
| 1489 |
|
|
|
| 1490 |
|
|
File: or1ksim.info, Node: Branch Prediction Configuration, Next: Debug Interface Configuration, Prev: Power Management Configuration, Up: Core OpenRISC Configuration
|
| 1491 |
|
|
|
| 1492 |
|
|
3.3.7 Branch Prediction Configuration
|
| 1493 |
|
|
-------------------------------------
|
| 1494 |
|
|
|
| 1495 |
|
|
From examining the code base, it seems the branch prediction function
|
| 1496 |
82 |
jeremybenn |
is not fully implemented. At present the functionality seems
|
| 1497 |
|
|
restricted to collection of statistics.
|
| 1498 |
19 |
jeremybenn |
|
| 1499 |
82 |
jeremybenn |
Branch prediction configuration is described in `section bpb'. This
|
| 1500 |
|
|
section may appear at most once. The following parameters may be
|
| 1501 |
19 |
jeremybenn |
specified.
|
| 1502 |
|
|
|
| 1503 |
|
|
`enabled = 0|1'
|
| 1504 |
82 |
jeremybenn |
If 1 (true), branch prediction is enabled. If 0 (the default), it
|
| 1505 |
19 |
jeremybenn |
is disabled.
|
| 1506 |
|
|
|
| 1507 |
|
|
`btic = 0|1'
|
| 1508 |
|
|
If 1 (true), the branch target instruction cache model is enabled.
|
| 1509 |
|
|
If 0 (the default), it is disabled.
|
| 1510 |
|
|
|
| 1511 |
|
|
`sbp_bf_fwd = 0|1'
|
| 1512 |
82 |
jeremybenn |
If 1 (true), use forward prediction for the `l.bf' instruction. If
|
| 1513 |
19 |
jeremybenn |
|
| 1514 |
|
|
instruction.
|
| 1515 |
|
|
|
| 1516 |
|
|
`sbp_bnf_fwd = 0|1'
|
| 1517 |
82 |
jeremybenn |
If 1 (true), use forward prediction for the `l.bnf' instruction.
|
| 1518 |
|
|
If 0 (the default), do not use forward prediction for this
|
| 1519 |
19 |
jeremybenn |
instruction.
|
| 1520 |
|
|
|
| 1521 |
|
|
`hitdelay = VALUE'
|
| 1522 |
82 |
jeremybenn |
Set the number of cycles a branch prediction hit costs. Default
|
| 1523 |
19 |
jeremybenn |
value 0.
|
| 1524 |
|
|
|
| 1525 |
|
|
`missdelay = VALUE'
|
| 1526 |
82 |
jeremybenn |
Set the number of cycles a branch prediction miss costs. Default
|
| 1527 |
19 |
jeremybenn |
value 0.
|
| 1528 |
|
|
|
| 1529 |
|
|
|
| 1530 |
|
|
|
| 1531 |
|
|
File: or1ksim.info, Node: Debug Interface Configuration, Prev: Branch Prediction Configuration, Up: Core OpenRISC Configuration
|
| 1532 |
|
|
|
| 1533 |
|
|
3.3.8 Debug Interface Configuration
|
| 1534 |
|
|
-----------------------------------
|
| 1535 |
|
|
|
| 1536 |
|
|
The debug unit and debug interface configuration is described in
|
| 1537 |
82 |
jeremybenn |
`section debug'. This section may appear at most once. The following
|
| 1538 |
19 |
jeremybenn |
parameters may be specified.
|
| 1539 |
|
|
|
| 1540 |
|
|
`enabled = 0|1'
|
| 1541 |
82 |
jeremybenn |
If 1 (true), the debug unit is enabled. If 0 (the default), it is
|
| 1542 |
19 |
jeremybenn |
disabled.
|
| 1543 |
|
|
|
| 1544 |
|
|
Note: This enables the functionality of the debug unit (its
|
| 1545 |
82 |
jeremybenn |
registers etc) within the mode. It does not provide any
|
| 1546 |
|
|
external interface to the debug unit. For that, see
|
| 1547 |
19 |
jeremybenn |
`gdb_enabled' and `rsp_enabled' below.
|
| 1548 |
|
|
|
| 1549 |
|
|
`rsp_enabled = 0|1'
|
| 1550 |
|
|
If 1 (true), the GDB "Remote Serial Protocol" server is started,
|
| 1551 |
|
|
provding an interface to an external GNU debugger, using the port
|
| 1552 |
|
|
specified in the `rsp_port' field (see below), or the
|
| 1553 |
82 |
jeremybenn |
`or1ksim-rsp' TCP/IP service. If 0 (the default), the server is
|
| 1554 |
19 |
jeremybenn |
not started, and no external interface is provided.
|
| 1555 |
|
|
|
| 1556 |
|
|
For more detailed information on the interface to the GNU Debugger
|
| 1557 |
|
|
see Embecosm Application Note 2, `Howto: Porting the GNU Debugger
|
| 1558 |
|
|
Practical Experience with the OpenRISC 1000 Architecture', by
|
| 1559 |
|
|
Jeremy Bennett, published by Embecosm Limited (`www.embecosm.com').
|
| 1560 |
|
|
|
| 1561 |
82 |
jeremybenn |
Note: `rsp_enabled' may not be enabled with `gdb_enabled' (see
|
| 1562 |
|
|
below). If both are enabled, a warning is issued and only
|
| 1563 |
|
|
the "Remote Serial Protocol" interface is enabled.
|
| 1564 |
19 |
jeremybenn |
|
| 1565 |
|
|
`rsp_port = VALUE'
|
| 1566 |
|
|
VALUE specifies the port to be used for the GDB "Remote Serial
|
| 1567 |
82 |
jeremybenn |
Protocol" interface to the GNU Debugger (GDB). Default value
|
| 1568 |
|
|
51000. If the value 0 is specified, Or1ksim will instead look for
|
| 1569 |
19 |
jeremybenn |
a TCP/IP service named `or1ksim-rsp'.
|
| 1570 |
|
|
|
| 1571 |
|
|
Tip: There is no registered port for Or1ksim "Remote Serial
|
| 1572 |
82 |
jeremybenn |
Protocol" service `or1ksim-rsp'. Good practice suggests
|
| 1573 |
|
|
users should adopt port values in the "Dynamic" or "Private"
|
| 1574 |
|
|
port range, i.e. 49152-65535.
|
| 1575 |
19 |
jeremybenn |
|
| 1576 |
|
|
`gdb_enabled = 0|1'
|
| 1577 |
|
|
If 1 (true), the OpenRISC Remote JTAG protocol server is started,
|
| 1578 |
|
|
provding an interface to an external GNU debugger, using the port
|
| 1579 |
|
|
specified in the `server_port' field (see below), or the `or1ksim'
|
| 1580 |
82 |
jeremybenn |
TCP/IP service. If 0 (the default), the server is not started,
|
| 1581 |
|
|
and no external interface is provided.
|
| 1582 |
19 |
jeremybenn |
|
| 1583 |
|
|
For more detailed information on the interface to the GNU Debugger
|
| 1584 |
|
|
see Embecosm Application Note 2, `Howto: Porting the GNU Debugger
|
| 1585 |
|
|
Practical Experience with the OpenRISC 1000 Architecture', by
|
| 1586 |
|
|
Jeremy Bennett, published by Embecosm Limited (`www.embecosm.com').
|
| 1587 |
|
|
|
| 1588 |
|
|
Note: The OpenRISC Remote JTAG protocol is unique to
|
| 1589 |
82 |
jeremybenn |
OpenRISC, and remains only for backward compatibility. New
|
| 1590 |
19 |
jeremybenn |
users should adopt the standard GDB "Remote Serial Protocol"
|
| 1591 |
|
|
interface (see `rsp_enabled' above) providing access to a
|
| 1592 |
|
|
wider range of GDB functionality.
|
| 1593 |
|
|
|
| 1594 |
82 |
jeremybenn |
Note: `gdb_enabled' may not be enabled with `rsp_enabled'.
|
| 1595 |
|
|
If both are enabled, a warning is issued and only the "Remote
|
| 1596 |
19 |
jeremybenn |
Serial Protocol" interface is enabled.
|
| 1597 |
|
|
|
| 1598 |
|
|
`server_port = VALUE'
|
| 1599 |
|
|
VALUE specifies the port to be used for the OpenRISC Rmote JTAG
|
| 1600 |
82 |
jeremybenn |
protocol interface to the GNU Debugger (GDB). Default value
|
| 1601 |
|
|
51000. If the value 0 is specified, Or1ksim will instead look for
|
| 1602 |
|
|
a TCP/IP service named `or1ksim'.
|
| 1603 |
19 |
jeremybenn |
|
| 1604 |
|
|
Tip: There is no registered port for Or1ksim Remote JTAG
|
| 1605 |
82 |
jeremybenn |
Interface or service `or1ksim'. Good practice suggests users
|
| 1606 |
19 |
jeremybenn |
should adopt port values in the "Dynamic" or "Private" port
|
| 1607 |
82 |
jeremybenn |
range, i.e. 49152-65535.
|
| 1608 |
19 |
jeremybenn |
|
| 1609 |
|
|
`vapi_id = VALUE'
|
| 1610 |
|
|
VALUE specifies the value of the Verification API (VAPI) base
|
| 1611 |
82 |
jeremybenn |
address to be used with the debug unit. *Note Verification API:
|
| 1612 |
19 |
jeremybenn |
Verification API, for more details.
|
| 1613 |
|
|
|
| 1614 |
|
|
If this is specified and VALUE is non-zero, all OpenRISC Remote
|
| 1615 |
|
|
JTAG protocol transactions will be logged to the VAPI log file, if
|
| 1616 |
82 |
jeremybenn |
enabled. This is the only functionality associated with VAPI for
|
| 1617 |
|
|
the debug unit. No VAPI commands are sent, nor requests handled.
|
| 1618 |
19 |
jeremybenn |
|
| 1619 |
|
|
|
| 1620 |
|
|
|
| 1621 |
|
|
File: or1ksim.info, Node: Peripheral Configuration, Prev: Core OpenRISC Configuration, Up: Configuration
|
| 1622 |
|
|
|
| 1623 |
|
|
3.4 Configuring Memory Mapped Peripherals
|
| 1624 |
|
|
=========================================
|
| 1625 |
|
|
|
| 1626 |
82 |
jeremybenn |
All peripheral components are optional. If they are specified, then
|
| 1627 |
19 |
jeremybenn |
(unlike other components) by default they are enabled.
|
| 1628 |
|
|
|
| 1629 |
|
|
* Menu:
|
| 1630 |
|
|
|
| 1631 |
|
|
* Memory Controller Configuration::
|
| 1632 |
|
|
* UART Configuration::
|
| 1633 |
|
|
* DMA Configuration::
|
| 1634 |
|
|
* Ethernet Configuration::
|
| 1635 |
|
|
* GPIO Configuration::
|
| 1636 |
|
|
* Display Interface Configuration::
|
| 1637 |
|
|
* Frame Buffer Configuration::
|
| 1638 |
|
|
* Keyboard Configuration::
|
| 1639 |
|
|
* Disc Interface Configuration::
|
| 1640 |
|
|
* Generic Peripheral Configuration::
|
| 1641 |
|
|
|
| 1642 |
|
|
|
| 1643 |
|
|
File: or1ksim.info, Node: Memory Controller Configuration, Next: UART Configuration, Up: Peripheral Configuration
|
| 1644 |
|
|
|
| 1645 |
|
|
3.4.1 Memory Controller Configuration
|
| 1646 |
|
|
-------------------------------------
|
| 1647 |
|
|
|
| 1648 |
|
|
The memory controller used in Or1ksim is the component implemented at
|
| 1649 |
98 |
jeremybenn |
OpenCores, and found in the top level SVN directory, `mem_ctrl'. It is
|
| 1650 |
19 |
jeremybenn |
described in the document `Memory Controller IP Core' by Rudolf
|
| 1651 |
82 |
jeremybenn |
Usselmann, which can be found in the `doc' subdirectory. It is a
|
| 1652 |
|
|
memory mapped component, which resides on the main OpenRISC Wishbone
|
| 1653 |
|
|
data bus.
|
| 1654 |
19 |
jeremybenn |
|
| 1655 |
82 |
jeremybenn |
The memory controller configuration is described in `section mc'. This
|
| 1656 |
19 |
jeremybenn |
section may appear multiple times, specifying multiple memory
|
| 1657 |
98 |
jeremybenn |
controllers.
|
| 1658 |
19 |
jeremybenn |
|
| 1659 |
98 |
jeremybenn |
Caution: The standard OpenRISC C libraries will initialize the
|
| 1660 |
|
|
memory controller to expect 64MB memory blocks, and any memory
|
| 1661 |
|
|
declarations _must_ reflect this.
|
| 1662 |
|
|
|
| 1663 |
|
|
If smaller memory blocks are declared with a memory controller,
|
| 1664 |
|
|
then sufficient memory will not be allocated by Or1ksim, but out of
|
| 1665 |
|
|
range memory accesses will not be trapped. For example declaring a
|
| 1666 |
|
|
memory section from 0-4MB with a memory controller enabled would
|
| 1667 |
|
|
mean that accesses between 4MB and 64MB would be permitted, but
|
| 1668 |
|
|
having no allocated memory would likely cause a segmentation fault.
|
| 1669 |
|
|
|
| 1670 |
|
|
If the user is determined to use smaller memories with the memory
|
| 1671 |
|
|
controller, then custom initialization code must be provided, to
|
| 1672 |
|
|
ensure the memory controller traps out-of-memory accesses.
|
| 1673 |
|
|
|
| 1674 |
|
|
The following parameters may be specified.
|
| 1675 |
|
|
|
| 1676 |
19 |
jeremybenn |
`enabled = 0|1'
|
| 1677 |
82 |
jeremybenn |
If 1 (true, the default), this memory controller is enabled. If
|
| 1678 |
|
|
0, it is disabled.
|
| 1679 |
19 |
jeremybenn |
|
| 1680 |
|
|
Note: The memory controller can effectively also be disabled
|
| 1681 |
|
|
by setting an appropriate power on control register value
|
| 1682 |
82 |
jeremybenn |
(see below). However this should only be used if it is
|
| 1683 |
19 |
jeremybenn |
desired to specifically model this behavior of the memory
|
| 1684 |
|
|
controller, not as a way of disabling the memory controller
|
| 1685 |
|
|
in general.
|
| 1686 |
|
|
|
| 1687 |
|
|
`baseaddr = VALUE'
|
| 1688 |
|
|
Set the base address of the memory controller's memory mapped
|
| 1689 |
82 |
jeremybenn |
registers to VALUE. The default is 0, which is probably not a
|
| 1690 |
19 |
jeremybenn |
sensible value.
|
| 1691 |
|
|
|
| 1692 |
|
|
The memory controller has a 7 bit address bus, with a total of 19
|
| 1693 |
|
|
32-bit registers, at addresses 0x00 through 0x4c (address 0x0c and
|
| 1694 |
|
|
addresses 0x50 through 0x7c are not used).
|
| 1695 |
|
|
|
| 1696 |
|
|
`poc = VALUE'
|
| 1697 |
|
|
Specifies the value of the power on control register, The least
|
| 1698 |
|
|
signficant two bits specify the bus width (use 0 for an 8-bit bus,
|
| 1699 |
|
|
1 for a 16-bit bus and 2 for a 32-bit bus) and the next two bits
|
| 1700 |
|
|
the type of memory connected (use 0 for a disabled interface, 1
|
| 1701 |
|
|
for SSRAM, 2 for asyncrhonous devices and 3 for synchronous
|
| 1702 |
|
|
devices).
|
| 1703 |
|
|
|
| 1704 |
|
|
If other bits are specified, they are ignored with a warning.
|
| 1705 |
|
|
|
| 1706 |
|
|
Caution: The default value, 0, corresponds to a disabled
|
| 1707 |
|
|
8-bit bus, and is likely not the most suitable value
|
| 1708 |
|
|
|
| 1709 |
|
|
`index = VALUE'
|
| 1710 |
|
|
Specify the index of this memory controller amongst all the memory
|
| 1711 |
82 |
jeremybenn |
controllers. This value should be unique for each memory
|
| 1712 |
19 |
jeremybenn |
controller, and is used to associate specific memories with the
|
| 1713 |
|
|
controller, through the `mc' field in the `section memory'
|
| 1714 |
|
|
configuration (*note Memory Configuration: Memory Configuration.).
|
| 1715 |
|
|
|
| 1716 |
|
|
The default value, 0, is suitable when there is only one memory
|
| 1717 |
|
|
controller.
|
| 1718 |
|
|
|
| 1719 |
|
|
|
| 1720 |
|
|
|
| 1721 |
|
|
File: or1ksim.info, Node: UART Configuration, Next: DMA Configuration, Prev: Memory Controller Configuration, Up: Peripheral Configuration
|
| 1722 |
|
|
|
| 1723 |
|
|
3.4.2 UART Configuration
|
| 1724 |
|
|
------------------------
|
| 1725 |
|
|
|
| 1726 |
|
|
The UART implemented in Or1ksim follows the specification of the
|
| 1727 |
82 |
jeremybenn |
National Semiconductor 16450 and 16550 parts. It is a memory mapped
|
| 1728 |
19 |
jeremybenn |
component, which resides on the main OpenRISC Wishbone data bus.
|
| 1729 |
|
|
|
| 1730 |
|
|
The component provides a number of interfaces to emulate the behavior
|
| 1731 |
|
|
of an external terminal connected to the UART.
|
| 1732 |
|
|
|
| 1733 |
82 |
jeremybenn |
UART configuration is described in `section uart'. This section may
|
| 1734 |
|
|
appear multiple times, specifying multiple UARTs. The following
|
| 1735 |
19 |
jeremybenn |
parameters may be specified.
|
| 1736 |
|
|
|
| 1737 |
|
|
`enabled = 0|1'
|
| 1738 |
82 |
jeremybenn |
If 1 (true, the default), this UART is enabled. If 0, it is
|
| 1739 |
19 |
jeremybenn |
disabled.
|
| 1740 |
|
|
|
| 1741 |
|
|
`baseaddr = VALUE'
|
| 1742 |
|
|
Set the base address of the UART's memory mapped registers to
|
| 1743 |
82 |
jeremybenn |
VALUE. The default is 0, which is probably not a sensible value.
|
| 1744 |
19 |
jeremybenn |
|
| 1745 |
|
|
The UART has a 3 bit address bus, with a total of 8 8-bit
|
| 1746 |
|
|
registers, at addresses 0x0 through 0x7.
|
| 1747 |
|
|
|
| 1748 |
|
|
`channel = "TYPE:ARGS"'
|
| 1749 |
|
|
Specify the channel representing the terminal connected to the UART
|
| 1750 |
|
|
Rx & Tx pins.
|
| 1751 |
|
|
|
| 1752 |
|
|
`channel="file:`rxfile',`txfile'"'
|
| 1753 |
|
|
Read input characters from the file `rxfile' and write output
|
| 1754 |
|
|
characters to the file `txfile' (which will be created if
|
| 1755 |
|
|
required).
|
| 1756 |
|
|
|
| 1757 |
|
|
`channel="xterm:ARGS"'
|
| 1758 |
|
|
Create an xterm on startup, write UART Tx traffic to the
|
| 1759 |
|
|
xterm and take Rx traffic from the keyboard when the xterm
|
| 1760 |
82 |
jeremybenn |
window is selected. Additional arguments to the xterm
|
| 1761 |
|
|
command (for example specifying window size may be specified
|
| 1762 |
|
|
in ARGS, or this may be left blank.
|
| 1763 |
19 |
jeremybenn |
|
| 1764 |
|
|
`channel="tcp:VALUE"'
|
| 1765 |
|
|
Open the TCP/IP port specified by VALUE and read and write
|
| 1766 |
|
|
UART traffic from and to it.
|
| 1767 |
|
|
|
| 1768 |
|
|
Typically a telnet session is connected to the other end of
|
| 1769 |
|
|
this port.
|
| 1770 |
|
|
|
| 1771 |
|
|
Tip: There is no registered port for Or1ksim telnet UART
|
| 1772 |
82 |
jeremybenn |
connection. Priviledged access is required to read
|
| 1773 |
19 |
jeremybenn |
traffic on the registered "well-known" telnet port (23).
|
| 1774 |
|
|
Instead users should use port values in the "Dynamic" or
|
| 1775 |
82 |
jeremybenn |
"Private" port range, i.e. 49152-65535.
|
| 1776 |
19 |
jeremybenn |
|
| 1777 |
|
|
`channel="fd:`rxfd',`txfd'"'
|
| 1778 |
|
|
Read and write characters from and to the existing open
|
| 1779 |
|
|
numerical file descriptors, file `rxfd' and `txfd'.
|
| 1780 |
|
|
|
| 1781 |
|
|
`channel="tty:device=/dev/ttyS0,baud=9600"'
|
| 1782 |
|
|
Read and write characters from and to a physical serial port.
|
| 1783 |
|
|
The precise device (shown here as `/dev/ttyS0') may vary from
|
| 1784 |
|
|
machine to machine.
|
| 1785 |
|
|
|
| 1786 |
|
|
|
| 1787 |
|
|
The default value for this field is `"xterm:"'.
|
| 1788 |
|
|
|
| 1789 |
|
|
`irq = VALUE'
|
| 1790 |
82 |
jeremybenn |
Use VALUE as the IRQ number of this UART. Default value 0.
|
| 1791 |
19 |
jeremybenn |
|
| 1792 |
|
|
`16550 = 0|1'
|
| 1793 |
82 |
jeremybenn |
If 1 (true), the UART has the functionality of a 16550. If 0 (the
|
| 1794 |
|
|
default), it has the functionality of a 16450. The principal
|
| 1795 |
19 |
jeremybenn |
difference is that the 16550 can buffer multiple characters.
|
| 1796 |
|
|
|
| 1797 |
|
|
`jitter = VALUE'
|
| 1798 |
|
|
Set the jitter, modeled as a time to block, to VALUE milliseconds.
|
| 1799 |
82 |
jeremybenn |
Set to -1 to disable jitter modeling. Default value 0.
|
| 1800 |
19 |
jeremybenn |
|
| 1801 |
|
|
Note: This functionality has yet to be implemented, so this
|
| 1802 |
|
|
parameter has no effect.
|
| 1803 |
|
|
|
| 1804 |
|
|
`vapi_id = VALUE'
|
| 1805 |
|
|
VALUE specifies the value of the Verification API (VAPI) base
|
| 1806 |
82 |
jeremybenn |
address to be used with the UART. *Note Verification API:
|
| 1807 |
19 |
jeremybenn |
Verification API, for more details, which details the use of the
|
| 1808 |
|
|
VAPI with the UART.
|
| 1809 |
|
|
|
| 1810 |
|
|
|
| 1811 |
|
|
|
| 1812 |
|
|
File: or1ksim.info, Node: DMA Configuration, Next: Ethernet Configuration, Prev: UART Configuration, Up: Peripheral Configuration
|
| 1813 |
|
|
|
| 1814 |
|
|
3.4.3 DMA Configuration
|
| 1815 |
|
|
-----------------------
|
| 1816 |
|
|
|
| 1817 |
|
|
The DMA controller used in Or1ksim is the component implemented at
|
| 1818 |
98 |
jeremybenn |
OpenCores, and found in the top level SVN directory, `wb_dma'. It is
|
| 1819 |
19 |
jeremybenn |
described in the document `Wishbone DMA/Bridge IP Core' by Rudolf
|
| 1820 |
82 |
jeremybenn |
Usselmann, which can be found in the `doc' subdirectory. It is a
|
| 1821 |
|
|
memory mapped component, which resides on the main OpenRISC Wishbone
|
| 1822 |
|
|
data bus. The present implementation is incomplete, intended only to
|
| 1823 |
|
|
support the Ethernet interface (*note Ethernet Configuration::),
|
| 1824 |
|
|
although the Ethernet interface is not yet completed.
|
| 1825 |
19 |
jeremybenn |
|
| 1826 |
82 |
jeremybenn |
DMA configuration is described in `section dma'. This section may
|
| 1827 |
|
|
appear multiple times, specifying multiple DMA controllers. The
|
| 1828 |
19 |
jeremybenn |
following parameters may be specified.
|
| 1829 |
|
|
|
| 1830 |
|
|
`enabled = 0|1'
|
| 1831 |
82 |
jeremybenn |
If 1 (true, the default), this DMA controller is enabled. If 0,
|
| 1832 |
|
|
it is disabled.
|
| 1833 |
19 |
jeremybenn |
|
| 1834 |
|
|
`baseaddr = VALUE'
|
| 1835 |
|
|
Set the base address of the DMA's memory mapped registers to
|
| 1836 |
82 |
jeremybenn |
VALUE. The default is 0, which is probably not a sensible value.
|
| 1837 |
19 |
jeremybenn |
|
| 1838 |
|
|
The DMA controller has a 10 bit address bus, with a total of 253
|
| 1839 |
82 |
jeremybenn |
32-bit registers. The first 5 registers at addresses 0x000 through
|
| 1840 |
|
|
0x010 control the overall behavior of the DMA controller. There
|
| 1841 |
|
|
are then 31 blocks of 8 registers, controlling each of the 31 DMA
|
| 1842 |
|
|
channels available. Addresses 0x014 through 0x01c are not used.
|
| 1843 |
19 |
jeremybenn |
|
| 1844 |
|
|
`irq = VALUE'
|
| 1845 |
82 |
jeremybenn |
Use VALUE as the IRQ number of this DMA controller. Default value
|
| 1846 |
19 |
jeremybenn |
0.
|
| 1847 |
|
|
|
| 1848 |
|
|
`vapi_id = VALUE'
|
| 1849 |
|
|
VALUE specifies the value of the Verification API (VAPI) base
|
| 1850 |
82 |
jeremybenn |
address to be used with the DMA controller. *Note Verification
|
| 1851 |
19 |
jeremybenn |
API: Verification API, for more details, which details the use of
|
| 1852 |
|
|
the VAPI with the DMA controller.
|
| 1853 |
|
|
|
| 1854 |
|
|
|
| 1855 |
|
|
|
| 1856 |
|
|
File: or1ksim.info, Node: Ethernet Configuration, Next: GPIO Configuration, Prev: DMA Configuration, Up: Peripheral Configuration
|
| 1857 |
|
|
|
| 1858 |
|
|
3.4.4 Ethernet Configuration
|
| 1859 |
|
|
----------------------------
|
| 1860 |
|
|
|
| 1861 |
|
|
The Ethernet MAC used in Or1ksim is the component implemented at
|
| 1862 |
98 |
jeremybenn |
OpenCores, and found in the top level SVN directory, `ethmac'. It also
|
| 1863 |
|
|
forms part of the OpenRISC SoC, ORPSoC. It is described in the
|
| 1864 |
19 |
jeremybenn |
document `Ethernet IP Core Specification' by Igor Mohor, which can be
|
| 1865 |
82 |
jeremybenn |
found in the `doc' subdirectory. It is a memory mapped component,
|
| 1866 |
|
|
which resides on the main OpenRISC Wishbone data bus.
|
| 1867 |
19 |
jeremybenn |
|
| 1868 |
82 |
jeremybenn |
Ethernet configuration is described in `section ethernet'. This
|
| 1869 |
|
|
section may appear multiple times, specifying multiple Ethernet
|
| 1870 |
|
|
interfaces. The following parameters may be specified.
|
| 1871 |
19 |
jeremybenn |
|
| 1872 |
|
|
`enabled = 0|1'
|
| 1873 |
82 |
jeremybenn |
If 1 (true, the default), this Ethernet MAC is enabled. If 0, it
|
| 1874 |
|
|
is disabled.
|
| 1875 |
19 |
jeremybenn |
|
| 1876 |
|
|
`baseaddr = VALUE'
|
| 1877 |
|
|
Set the base address of the MAC's memory mapped registers to
|
| 1878 |
82 |
jeremybenn |
VALUE. The default is 0, which is probably not a sensible value.
|
| 1879 |
19 |
jeremybenn |
|
| 1880 |
|
|
The Ethernet MAC has a 7-bit address bus, with a total of 21
|
| 1881 |
82 |
jeremybenn |
32-bit registers. Addresses 0x54 through 0x7c are not used.
|
| 1882 |
19 |
jeremybenn |
|
| 1883 |
|
|
Note: The Ethernet specification describes a Tx control
|
| 1884 |
82 |
jeremybenn |
register, `TXCTRL', at address 0x50. However this register
|
| 1885 |
|
|
is not implemented in the Or1ksim model.
|
| 1886 |
19 |
jeremybenn |
|
| 1887 |
|
|
`dma = VALUE'
|
| 1888 |
|
|
VALUE specifies the DMA controller with which this Ethernet is
|
| 1889 |
82 |
jeremybenn |
associated. The default value is 0.
|
| 1890 |
19 |
jeremybenn |
|
| 1891 |
|
|
Note: Support for external DMA is not provided in the current
|
| 1892 |
82 |
jeremybenn |
implementation, and this value is ignored. In any case there
|
| 1893 |
19 |
jeremybenn |
is no equivalent field to which this can be matched in the
|
| 1894 |
|
|
current DMA component implementation (*note DMA
|
| 1895 |
|
|
Configuration: DMA Configuration.).
|
| 1896 |
|
|
|
| 1897 |
|
|
`irq = VALUE'
|
| 1898 |
82 |
jeremybenn |
Use VALUE as the IRQ number of this Ethernet MAC. Default value 0.
|
| 1899 |
19 |
jeremybenn |
|
| 1900 |
|
|
`rtx_type = 0|1'
|
| 1901 |
|
|
If 1 (true) use a socket interface to the Ethernet (see parameter
|
| 1902 |
82 |
jeremybenn |
`sockif' below). If 0 (the default), use a file interface,
|
| 1903 |
|
|
reading and writing from and to the files specified in the
|
| 1904 |
|
|
`rxfile' and `txfile' parameters (see below).
|
| 1905 |
19 |
jeremybenn |
|
| 1906 |
|
|
Note: By default the socket interface is not provided in
|
| 1907 |
82 |
jeremybenn |
Or1ksim. If it is required, this must be requested when
|
| 1908 |
19 |
jeremybenn |
configuring, by use of the `--enable-ethphy' option to
|
| 1909 |
|
|
`configure'.
|
| 1910 |
|
|
|
| 1911 |
|
|
configure --target=or32-uclinux --enable-ethphy ...
|
| 1912 |
|
|
|
| 1913 |
|
|
`rx_channel = RXVALUE'
|
| 1914 |
|
|
`tx_channel = TXVALUE'
|
| 1915 |
|
|
RXVALUE specifies the DMA channel to use for receive and TXVALUE
|
| 1916 |
82 |
jeremybenn |
the DMA channel to use for transmit. Both default to 0.
|
| 1917 |
19 |
jeremybenn |
|
| 1918 |
|
|
Note: As noted above, support for external DMA is not
|
| 1919 |
|
|
provided in the current implementation, and so these values
|
| 1920 |
|
|
are ignored.
|
| 1921 |
|
|
|
| 1922 |
|
|
`rxfile = "RXFILE"'
|
| 1923 |
|
|
`txfile = "TXFILE"'
|
| 1924 |
|
|
When `rtx_type' is 0 (see above), RXFILE specifies the file to use
|
| 1925 |
|
|
as input and TXFILE specifies the fie to use as output.
|
| 1926 |
|
|
|
| 1927 |
82 |
jeremybenn |
The file contains a sequence of packets. Each packet consists of a
|
| 1928 |
|
|
packet length (32 bits), followed by that many bytes of data.
|
| 1929 |
|
|
Once the input file is empty, the Ethernet MAC behaves as though
|
| 1930 |
|
|
there were no data on the Ethernet. The default values of these
|
| 1931 |
19 |
jeremybenn |
parameters are `"eth_rx"' and `"eth_tx"' respectively.
|
| 1932 |
|
|
|
| 1933 |
82 |
jeremybenn |
The input file must exist and be readable. The output file must be
|
| 1934 |
|
|
writable and will be created if necessary. If either of these
|
| 1935 |
19 |
jeremybenn |
conditions is not met, a warning will be given.
|
| 1936 |
|
|
|
| 1937 |
|
|
`sockif = "SERVICE"'
|
| 1938 |
|
|
When `rtx_type' is 1 (see above), SERVICE specifies the service to
|
| 1939 |
82 |
jeremybenn |
use for communication. This may be TCP/IP or UDP/IP. The default
|
| 1940 |
19 |
jeremybenn |
value of this parameter is `"or1ksim_eth"'.
|
| 1941 |
|
|
|
| 1942 |
|
|
`vapi_id = VALUE'
|
| 1943 |
|
|
VALUE specifies the value of the Verification API (VAPI) base
|
| 1944 |
82 |
jeremybenn |
address to be used with the Ethernet PHY. *Note Verification API:
|
| 1945 |
19 |
jeremybenn |
Verification API, for more details, which details the use of the
|
| 1946 |
|
|
VAPI with the DMA controller.
|
| 1947 |
|
|
|
| 1948 |
|
|
|
| 1949 |
|
|
|
| 1950 |
|
|
File: or1ksim.info, Node: GPIO Configuration, Next: Display Interface Configuration, Prev: Ethernet Configuration, Up: Peripheral Configuration
|
| 1951 |
|
|
|
| 1952 |
|
|
3.4.5 GPIO Configuration
|
| 1953 |
|
|
------------------------
|
| 1954 |
|
|
|
| 1955 |
|
|
The GPIO used in Or1ksim is the component implemented at OpenCores, and
|
| 1956 |
98 |
jeremybenn |
found in the top level SVN directory, `gpio'. It is described in the
|
| 1957 |
19 |
jeremybenn |
document `GPIO IP Core Specification' by Damjan Lampret and Goran
|
| 1958 |
82 |
jeremybenn |
Djakovic, which can be found in the `doc' subdirectory. It is a memory
|
| 1959 |
19 |
jeremybenn |
mapped component, which resides on the main OpenRISC Wishbone data bus.
|
| 1960 |
|
|
|
| 1961 |
82 |
jeremybenn |
GPIO configuration is described in `section gpio'. This section may
|
| 1962 |
|
|
appear multiple times, specifying multiple GPIO devices. The following
|
| 1963 |
19 |
jeremybenn |
parameters may be specified.
|
| 1964 |
|
|
|
| 1965 |
|
|
`enabled = 0|1'
|
| 1966 |
82 |
jeremybenn |
If 1 (true, the default), this GPIO is enabled. If 0, it is
|
| 1967 |
19 |
jeremybenn |
disabled.
|
| 1968 |
|
|
|
| 1969 |
|
|
`baseaddr = VALUE'
|
| 1970 |
|
|
Set the base address of the GPIO's memory mapped registers to
|
| 1971 |
82 |
jeremybenn |
VALUE. The default is 0, which is probably not a sensible value.
|
| 1972 |
19 |
jeremybenn |
|
| 1973 |
|
|
The GPIO has a 6 bit address bus, with a total of 10 32-bit
|
| 1974 |
|
|
registers, although the number of bits that are actively used
|
| 1975 |
82 |
jeremybenn |
varies. Addresses 0x28 through 0x3c are not used.
|
| 1976 |
19 |
jeremybenn |
|
| 1977 |
|
|
`irq = VALUE'
|
| 1978 |
82 |
jeremybenn |
Use VALUE as the IRQ number of this GPIO. Default value 0.
|
| 1979 |
19 |
jeremybenn |
|
| 1980 |
|
|
`vapi_id = VALUE'
|
| 1981 |
|
|
VALUE specifies the value of the Verification API (VAPI) base
|
| 1982 |
82 |
jeremybenn |
address to be used with the GPIO. *Note Verification API:
|
| 1983 |
19 |
jeremybenn |
Verification API, for more details, which details the use of the
|
| 1984 |
82 |
jeremybenn |
VAPI with the GPIO controller. For backwards compatibility, the
|
| 1985 |
19 |
jeremybenn |
alternative name `base_vapi_id' is supported for this parameter,
|
| 1986 |
|
|
but deprecated.
|
| 1987 |
|
|
|
| 1988 |
|
|
|
| 1989 |
|
|
|
| 1990 |
|
|
File: or1ksim.info, Node: Display Interface Configuration, Next: Frame Buffer Configuration, Prev: GPIO Configuration, Up: Peripheral Configuration
|
| 1991 |
|
|
|
| 1992 |
|
|
3.4.6 Display Interface Configuration
|
| 1993 |
|
|
-------------------------------------
|
| 1994 |
|
|
|
| 1995 |
|
|
Or1ksim models a VGA interface to an external monitor. The VGA
|
| 1996 |
|
|
controller used in Or1ksim is the component implemented at OpenCores,
|
| 1997 |
98 |
jeremybenn |
and found in the top level SVN directory, `vga_lcd', with no support
|
| 1998 |
82 |
jeremybenn |
for the optional hardware cursors. It is described in the document
|
| 1999 |
19 |
jeremybenn |
`VGA/LCD Core v2.0 Specifications' by Richard Herveille, which can be
|
| 2000 |
82 |
jeremybenn |
found in the `doc' subdirectory. It is a memory mapped component,
|
| 2001 |
|
|
which resides on the main OpenRISC Wishbone data bus.
|
| 2002 |
19 |
jeremybenn |
|
| 2003 |
|
|
The current implementation provides only functionality to dump the
|
| 2004 |
|
|
screen to a file at intervals.
|
| 2005 |
|
|
|
| 2006 |
82 |
jeremybenn |
VGA controller configuration is described in `section vga'. This
|
| 2007 |
19 |
jeremybenn |
section may appear multiple times, specifying multiple VGA controllers.
|
| 2008 |
|
|
The following parameters may be specified.
|
| 2009 |
|
|
|
| 2010 |
|
|
`enabled = 0|1'
|
| 2011 |
82 |
jeremybenn |
If 1 (true, the default), this VGA is enabled. If 0, it is
|
| 2012 |
19 |
jeremybenn |
disabled.
|
| 2013 |
|
|
|
| 2014 |
|
|
`baseaddr = VALUE'
|
| 2015 |
|
|
Set the base address of the VGA controller's memory mapped
|
| 2016 |
82 |
jeremybenn |
registers to VALUE. The default is 0, which is probably not a
|
| 2017 |
19 |
jeremybenn |
sensible value.
|
| 2018 |
|
|
|
| 2019 |
|
|
The VGA controller has a 12-bit address bus, with 7 32-bit
|
| 2020 |
|
|
registers, at addresses 0x000 through 0x018, and two color lookup
|
| 2021 |
82 |
jeremybenn |
tables at addresses 0x800 through 0xfff. The hardware cursor
|
| 2022 |
19 |
jeremybenn |
registers are not implemented, so addresses 0x01c through 0x7fc
|
| 2023 |
|
|
are not used.
|
| 2024 |
|
|
|
| 2025 |
|
|
`irq = VALUE'
|
| 2026 |
82 |
jeremybenn |
Use VALUE as the IRQ number of this VGA controller. Default value
|
| 2027 |
19 |
jeremybenn |
0.
|
| 2028 |
|
|
|
| 2029 |
|
|
`refresh_rate = VALUE'
|
| 2030 |
82 |
jeremybenn |
VALUE specifies number of cycles between screen dumps. Default
|
| 2031 |
19 |
jeremybenn |
value is derived from the simulation clock cycle time (*note
|
| 2032 |
|
|
Simulator Behavior: Simulator Behavior.), to correspond to dumping
|
| 2033 |
|
|
50 times per simulated second.
|
| 2034 |
|
|
|
| 2035 |
|
|
`txfile = "FILE"'
|
| 2036 |
|
|
FILE specifies the base of the filename for screen dumps.
|
| 2037 |
|
|
Successive screen dumps will be in BMP format, in files with the
|
| 2038 |
|
|
name `FILENNNN.bmp', where NNNN is a sequential count of the
|
| 2039 |
82 |
jeremybenn |
screen dumps starting at zero. The default value is `"vga_out"'.
|
| 2040 |
19 |
jeremybenn |
For backwards compatibility, the alternative name `filename' is
|
| 2041 |
|
|
supported for this parameter, but deprecated.
|
| 2042 |
|
|
|
| 2043 |
|
|
|
| 2044 |
|
|
|
| 2045 |
|
|
File: or1ksim.info, Node: Frame Buffer Configuration, Next: Keyboard Configuration, Prev: Display Interface Configuration, Up: Peripheral Configuration
|
| 2046 |
|
|
|
| 2047 |
|
|
3.4.7 Frame Buffer Configuration
|
| 2048 |
|
|
--------------------------------
|
| 2049 |
|
|
|
| 2050 |
82 |
jeremybenn |
Caution: The frame buffer is only partially implemented. Its
|
| 2051 |
19 |
jeremybenn |
configuration fields are described here, but the component should
|
| 2052 |
82 |
jeremybenn |
not be used at this time. Like the VGA controller, it is designed
|
| 2053 |
19 |
jeremybenn |
to make screen dumps to file.
|
| 2054 |
|
|
|
| 2055 |
82 |
jeremybenn |
Frame buffer configuration is described in `section fb'. This section
|
| 2056 |
|
|
may appear multiple times, specifying multiple frame buffers. The
|
| 2057 |
19 |
jeremybenn |
following parameters may be specified.
|
| 2058 |
|
|
|
| 2059 |
|
|
`enabled = 0|1'
|
| 2060 |
82 |
jeremybenn |
If 1 (true, the default), this frame buffer is enabled. If 0, it
|
| 2061 |
19 |
jeremybenn |
is disabled.
|
| 2062 |
|
|
|
| 2063 |
|
|
`baseaddr = VALUE'
|
| 2064 |
|
|
Set the base address of the frame buffer's memory mapped registers
|
| 2065 |
82 |
jeremybenn |
to VALUE. The default is 0, which is probably not a sensible
|
| 2066 |
|
|
value.
|
| 2067 |
19 |
jeremybenn |
|
| 2068 |
|
|
The frame buffer has an 121-bit address bus, with 4 32-bit
|
| 2069 |
|
|
registers, at addresses 0x000 through 0x00c, and a PAL lookup
|
| 2070 |
82 |
jeremybenn |
table at addresses 0x400 through 0x4ff. Addresses 0x010 through
|
| 2071 |
19 |
jeremybenn |
0x3fc and addresses 0x500 through 0x7ff are not used.
|
| 2072 |
|
|
|
| 2073 |
|
|
`refresh_rate = VALUE'
|
| 2074 |
82 |
jeremybenn |
VALUE specifies number of cycles between screen dumps. Default
|
| 2075 |
19 |
jeremybenn |
value is derived from the simulation clock cycle time (*note
|
| 2076 |
|
|
Simulator Behavior: Simulator Behavior.), to correspond to dumping
|
| 2077 |
|
|
50 times per simulated second.
|
| 2078 |
|
|
|
| 2079 |
|
|
`txfile = "FILE"'
|
| 2080 |
|
|
FILE specifies the base of the filename for screen dumps.
|
| 2081 |
|
|
Successive screen dumps will be in BMP format, in files with the
|
| 2082 |
|
|
name `FILENNNN.bmp', where NNNN is a sequential count of the
|
| 2083 |
82 |
jeremybenn |
screen dumps starting at zero. The default value is `"fb_out"'.
|
| 2084 |
19 |
jeremybenn |
For backwards compatibility, the alternative name `filename' is
|
| 2085 |
|
|
supported for this parameter, but deprecated.
|
| 2086 |
|
|
|
| 2087 |
|
|
|
| 2088 |
|
|
|
| 2089 |
|
|
File: or1ksim.info, Node: Keyboard Configuration, Next: Disc Interface Configuration, Prev: Frame Buffer Configuration, Up: Peripheral Configuration
|
| 2090 |
|
|
|
| 2091 |
|
|
3.4.8 Keyboard Configuration (PS2)
|
| 2092 |
|
|
----------------------------------
|
| 2093 |
|
|
|
| 2094 |
82 |
jeremybenn |
The PS2 interface provided by Or1ksim is not documented. It may be
|
| 2095 |
98 |
jeremybenn |
based on the PS2 project at OpenCores, and found in the top level SVN
|
| 2096 |
82 |
jeremybenn |
directory, `ps2'. However this project lacks any documentation beyond
|
| 2097 |
|
|
its project webpage. Since most PS2 interfaces follow the Intel i8042
|
| 2098 |
19 |
jeremybenn |
standard, this is presumably what is expected with this device.
|
| 2099 |
|
|
|
| 2100 |
|
|
The implementation only provides for keyboard support, which is
|
| 2101 |
82 |
jeremybenn |
modelled as a file of keystrokes. There is no mouse support.
|
| 2102 |
19 |
jeremybenn |
|
| 2103 |
|
|
Caution: A standard i8042 device has two registers at addresses
|
| 2104 |
82 |
jeremybenn |
0x60 (command) and 0x64 (status). Inspection of the code,
|
| 2105 |
|
|
suggests that the Or1ksim component places these registers at
|
| 2106 |
|
|
addresses 0x00 and 0x04.
|
| 2107 |
19 |
jeremybenn |
|
| 2108 |
|
|
The port of Linux for the OpenRISC 1000, which runs on Or1ksim
|
| 2109 |
|
|
implements the i8042 device driver, anticipating these registers
|
| 2110 |
82 |
jeremybenn |
reside at their conventional address. It seems unlikel that this
|
| 2111 |
19 |
jeremybenn |
code will work.
|
| 2112 |
|
|
|
| 2113 |
|
|
This component should be used with caution.
|
| 2114 |
|
|
|
| 2115 |
82 |
jeremybenn |
Keyboard configuration is described in `section kbd'. This section may
|
| 2116 |
|
|
appear multiple times, specifying multiple keyboard interfaces. The
|
| 2117 |
19 |
jeremybenn |
following parameters may be specified.
|
| 2118 |
|
|
|
| 2119 |
|
|
`enabled = 0|1'
|
| 2120 |
82 |
jeremybenn |
If 1 (true, the default), this keyboard is enabled. If 0, it is
|
| 2121 |
19 |
jeremybenn |
disabled.
|
| 2122 |
|
|
|
| 2123 |
|
|
`baseaddr = VALUE'
|
| 2124 |
|
|
Set the base address of the keyboard's memory mapped registers to
|
| 2125 |
82 |
jeremybenn |
VALUE. The default is 0, which is probably not a sensible value.
|
| 2126 |
19 |
jeremybenn |
|
| 2127 |
|
|
The keyboard PS/2 interface has an 3-bit address bus, with 2 8-bit
|
| 2128 |
|
|
registers, at addresses 0x000 and 0x004.
|
| 2129 |
|
|
|
| 2130 |
|
|
Caution: As noted above, a standard Intel 8042 interface
|
| 2131 |
|
|
would expect to find these registers at locations 0x60 and
|
| 2132 |
|
|
0x64, thus requiring at least a 7-bit bus.
|
| 2133 |
|
|
|
| 2134 |
|
|
`irq = VALUE'
|
| 2135 |
82 |
jeremybenn |
Use VALUE as the IRQ number of this Keyboard interface. Default
|
| 2136 |
19 |
jeremybenn |
value 0.
|
| 2137 |
|
|
|
| 2138 |
|
|
`rxfile = "FILE"'
|
| 2139 |
|
|
`file' specifies a file containing raw key stroke data, which
|
| 2140 |
82 |
jeremybenn |
models the input from a physical keyboard. The default value is
|
| 2141 |
19 |
jeremybenn |
`"kbd_in"'.
|
| 2142 |
|
|
|
| 2143 |
|
|
|
| 2144 |
|
|
|
| 2145 |
|
|
File: or1ksim.info, Node: Disc Interface Configuration, Next: Generic Peripheral Configuration, Prev: Keyboard Configuration, Up: Peripheral Configuration
|
| 2146 |
|
|
|
| 2147 |
|
|
3.4.9 Disc Interface Configuration
|
| 2148 |
|
|
----------------------------------
|
| 2149 |
|
|
|
| 2150 |
|
|
The ATA/ATAPI disc controller used in Or1ksim is the OCIDEC (OpenCores
|
| 2151 |
|
|
IDE Controller) component implemented at OpenCores, and found in the
|
| 2152 |
98 |
jeremybenn |
top level SVN directory, `ata'. It is described in the document
|
| 2153 |
19 |
jeremybenn |
`ATA/ATAPI-5 Core Specification' by Richard Herveille, which can be
|
| 2154 |
82 |
jeremybenn |
found in the `doc' subdirectory. It is a memory mapped component,
|
| 2155 |
|
|
which resides on the main OpenRISC Wishbone data bus.
|
| 2156 |
19 |
jeremybenn |
|
| 2157 |
82 |
jeremybenn |
ATA/ATAPI configuration is described in `section ata'. This section
|
| 2158 |
|
|
may appear multiple times, specifying multiple disc controllers. The
|
| 2159 |
19 |
jeremybenn |
following parameters may be specified.
|
| 2160 |
|
|
|
| 2161 |
|
|
`enabled = 0|1'
|
| 2162 |
82 |
jeremybenn |
If 1 (true, the default), this ATA/ATAPI interface is enabled. If
|
| 2163 |
19 |
jeremybenn |
0, it is disabled.
|
| 2164 |
|
|
|
| 2165 |
|
|
`baseaddr = VALUE'
|
| 2166 |
|
|
Set the base address of the ATA/ATAPI interface's memory mapped
|
| 2167 |
82 |
jeremybenn |
registers to VALUE. The default is 0, which is probably not a
|
| 2168 |
19 |
jeremybenn |
sensible value.
|
| 2169 |
|
|
|
| 2170 |
|
|
The ATA/ATAPI PS/2 interface has an 5-bit address bus, with 8
|
| 2171 |
82 |
jeremybenn |
32-bit registers. Depending on the version of the OCIDEC
|
| 2172 |
|
|
ATA/ATAPI interface selected (see `dev_id' below), not all
|
| 2173 |
|
|
registers will be available.
|
| 2174 |
19 |
jeremybenn |
|
| 2175 |
|
|
`irq = VALUE'
|
| 2176 |
82 |
jeremybenn |
Use VALUE as the IRQ number of this ATA/ATAPI interface. Default
|
| 2177 |
19 |
jeremybenn |
value 0.
|
| 2178 |
|
|
|
| 2179 |
|
|
`dev_id = 1|2|3'
|
| 2180 |
|
|
This parameter specifies which version of the OCIDEC ATA/ATAPI
|
| 2181 |
82 |
jeremybenn |
interface to model. The default value is 1.
|
| 2182 |
19 |
jeremybenn |
|
| 2183 |
|
|
Version 1 supports only the `CTRL', `STAT' and `PCTR' registers.
|
| 2184 |
|
|
Versions 2 & 3 add the `FCTR' registers, Version 3 adds the `DTR'
|
| 2185 |
|
|
registers and the `RXD'/`TXD' registers.
|
| 2186 |
|
|
|
| 2187 |
|
|
`rev = VALUE'
|
| 2188 |
|
|
Set the VALUE as the revision of the OCIDEC ATA/ATAPI interface.
|
| 2189 |
82 |
jeremybenn |
The default value is 1. The default value is 0. Its value should
|
| 2190 |
|
|
be in the range 0-15. Larger values are truncated with a warning.
|
| 2191 |
19 |
jeremybenn |
This only affects the reset value of the `STAT' register, where it
|
| 2192 |
|
|
forms bits 24-27.
|
| 2193 |
|
|
|
| 2194 |
|
|
`pio_mode0_t1 = VALUE'
|
| 2195 |
|
|
`pio_mode0_t2 = VALUE'
|
| 2196 |
|
|
`pio_mode0_t4 = VALUE'
|
| 2197 |
|
|
`pio_mode0_teoc = VALUE'
|
| 2198 |
|
|
These parameters specify the timings for use with Programmed
|
| 2199 |
82 |
jeremybenn |
Input/Output (PIO) transfers. They are specified as the number of
|
| 2200 |
19 |
jeremybenn |
clock cycles - 2, rounded up to the next highest integer, or zero
|
| 2201 |
82 |
jeremybenn |
if that would be negative. The values should not exceed 255. If
|
| 2202 |
19 |
jeremybenn |
they do, they will be ignored with a warning.
|
| 2203 |
|
|
|
| 2204 |
|
|
See the ATA/ATAPI-5 specification for explanations of each of these
|
| 2205 |
82 |
jeremybenn |
timing parameters. The default values are:
|
| 2206 |
19 |
jeremybenn |
|
| 2207 |
|
|
pio_mode0_t1 = 6
|
| 2208 |
|
|
pio_mode0_t2 = 28
|
| 2209 |
|
|
pio_mode0_t4 = 2
|
| 2210 |
|
|
pio_mode0_teoc = 23
|
| 2211 |
|
|
|
| 2212 |
|
|
`dma_mode0_tm = VALUE'
|
| 2213 |
|
|
`dma_mode0_td = VALUE'
|
| 2214 |
|
|
`dma_mode0_teoc = VALUE'
|
| 2215 |
|
|
These parameters specify the timings for use with DMA transfers.
|
| 2216 |
|
|
They are specified as the number of clock cycles - 2, rounded up
|
| 2217 |
|
|
to the next highest integer, or zero if that would be negative.
|
| 2218 |
82 |
jeremybenn |
The values should not exceed 255. If they do, they will be
|
| 2219 |
|
|
ignored with a warning.
|
| 2220 |
19 |
jeremybenn |
|
| 2221 |
|
|
See the ATA/ATAPI-5 specification for explanations of each of these
|
| 2222 |
82 |
jeremybenn |
timing parameters. The default values are:
|
| 2223 |
19 |
jeremybenn |
|
| 2224 |
|
|
dma_mode0_tm = 4
|
| 2225 |
|
|
dma_mode0_td = 21
|
| 2226 |
|
|
dma_mode0_teoc = 21
|
| 2227 |
|
|
|
| 2228 |
|
|
|
| 2229 |
|
|
3.4.9.1 ATA/ATAPI Device Configuration
|
| 2230 |
|
|
......................................
|
| 2231 |
|
|
|
| 2232 |
82 |
jeremybenn |
Within the `section ata', each device is specified separately. The
|
| 2233 |
19 |
jeremybenn |
device subsection is introduced by
|
| 2234 |
|
|
|
| 2235 |
|
|
device VALUE
|
| 2236 |
|
|
|
| 2237 |
82 |
jeremybenn |
VALUE is the device number, which should be 0 or 1. The subsection
|
| 2238 |
|
|
ends with `enddevice'. Note that if the same device number is
|
| 2239 |
|
|
specified more than once, the previous values will be overwritten.
|
| 2240 |
|
|
Within the `device' subsection, the following parameters may appear:
|
| 2241 |
19 |
jeremybenn |
|
| 2242 |
|
|
`type = VALUE'
|
| 2243 |
|
|
VALUEspecifies the type of device: 0 (the default) for "not
|
| 2244 |
|
|
connected", 1 for hard disk simulated in a file and 2 for local
|
| 2245 |
|
|
system hard disk.
|
| 2246 |
|
|
|
| 2247 |
|
|
`file = "FILENAME"'
|
| 2248 |
|
|
`filename' specifies the file to be used for a simulated ATA
|
| 2249 |
82 |
jeremybenn |
device if the file type (see `type' above) is 1. Default value
|
| 2250 |
19 |
jeremybenn |
`"ata-FileN"', where N is the device number.
|
| 2251 |
|
|
|
| 2252 |
|
|
`size = VALUE'
|
| 2253 |
|
|
VALUE specifies the size of a simulated ATA device if the file
|
| 2254 |
82 |
jeremybenn |
type (see `type' above) is 1. The default value is zero.
|
| 2255 |
19 |
jeremybenn |
|
| 2256 |
|
|
`packet = 0|1'
|
| 2257 |
82 |
jeremybenn |
If 1 (true), implement the PACKET command feature set. If 0 (the
|
| 2258 |
19 |
jeremybenn |
default), do not implement the PACKET command feature set.
|
| 2259 |
|
|
|
| 2260 |
|
|
`firmware = "STR"'
|
| 2261 |
|
|
Firmware to report in response to the "Identify Device" command.
|
| 2262 |
|
|
Default `"02207031"'.
|
| 2263 |
|
|
|
| 2264 |
|
|
`heads = VALUE'
|
| 2265 |
82 |
jeremybenn |
Number of heads in the device. Default 7, use -1 to disable all
|
| 2266 |
19 |
jeremybenn |
heads.
|
| 2267 |
|
|
|
| 2268 |
|
|
`sectors = VALUE'
|
| 2269 |
82 |
jeremybenn |
Number of sectors per track in the device. Default 32.
|
| 2270 |
19 |
jeremybenn |
|
| 2271 |
|
|
`mwdma = 0|1|2|-1'
|
| 2272 |
82 |
jeremybenn |
Highest multi-word DMA mode supported. Default 2, use -1 to
|
| 2273 |
19 |
jeremybenn |
disable.
|
| 2274 |
|
|
|
| 2275 |
|
|
`pio = 0|1|2|3|4'
|
| 2276 |
82 |
jeremybenn |
Highest PIO mode supported. Default 4.
|
| 2277 |
19 |
jeremybenn |
|
| 2278 |
|
|
|
| 2279 |
|
|
|
| 2280 |
|
|
File: or1ksim.info, Node: Generic Peripheral Configuration, Prev: Disc Interface Configuration, Up: Peripheral Configuration
|
| 2281 |
|
|
|
| 2282 |
|
|
3.4.10 Generic Peripheral Configuration
|
| 2283 |
|
|
---------------------------------------
|
| 2284 |
|
|
|
| 2285 |
|
|
When used as a library (*note Simulator Library: Simulator Library.),
|
| 2286 |
|
|
Or1ksim makes provision for any additional peripheral to be implemented
|
| 2287 |
82 |
jeremybenn |
externally. Any read or write access to this peripheral's memory map
|
| 2288 |
|
|
generates "upcall"s to an external handler. This interface can support
|
| 2289 |
19 |
jeremybenn |
either C or C++, and was particularly designed to facilitate support
|
| 2290 |
|
|
for OSCI SystemC (see `http://www.systemc.org').
|
| 2291 |
|
|
|
| 2292 |
|
|
Generic peripheral configuration is described in `section generic'.
|
| 2293 |
|
|
This section may appear multiple times, specifying multiple external
|
| 2294 |
82 |
jeremybenn |
peripherals. The following parameters may be specified.
|
| 2295 |
19 |
jeremybenn |
|
| 2296 |
|
|
`enabled = 0|1'
|
| 2297 |
82 |
jeremybenn |
If 1 (true, the default), this ATA/ATAPI interface is enabled. If
|
| 2298 |
19 |
jeremybenn |
0, it is disabled.
|
| 2299 |
|
|
|
| 2300 |
|
|
`baseaddr = VALUE'
|
| 2301 |
|
|
Set the base address of the generic peripheral's memory mapped
|
| 2302 |
82 |
jeremybenn |
registers to VALUE. The default is 0, which is probably not a
|
| 2303 |
19 |
jeremybenn |
sensible value.
|
| 2304 |
|
|
|
| 2305 |
|
|
The size of the memory mapped register space is controlled by the
|
| 2306 |
|
|
`size' paramter, described below.
|
| 2307 |
|
|
|
| 2308 |
|
|
`size = VALUE'
|
| 2309 |
|
|
Set the size of the generic peripheral's memory mapped register
|
| 2310 |
82 |
jeremybenn |
space to VALUE bytes. Any read or write accesses to addresses with
|
| 2311 |
19 |
jeremybenn |
offsets of 0 to VALUE-1 bytes from the base address specified in
|
| 2312 |
|
|
parameter `baseaddr' (see above) will be directed to the external
|
| 2313 |
|
|
interface.
|
| 2314 |
|
|
|
| 2315 |
82 |
jeremybenn |
VALUE will be rounded up the nearest power of 2. It's default
|
| 2316 |
|
|
value is zero. If VALUE is not an exact power of two, accesses to
|
| 2317 |
19 |
jeremybenn |
address offsets of VALUE or above up to the next power of 2 will
|
| 2318 |
|
|
generate a warning, and have no effect (reads will return zero).
|
| 2319 |
|
|
|
| 2320 |
|
|
`name = "STR"'
|
| 2321 |
82 |
jeremybenn |
This gives the peripheral the name `"STR"'. This is used to
|
| 2322 |
19 |
jeremybenn |
identify the peripheral in error messages and warnings, and when
|
| 2323 |
82 |
jeremybenn |
reporting its status. The default value is
|
| 2324 |
19 |
jeremybenn |
`"anonymous external peripheral"'.
|
| 2325 |
|
|
|
| 2326 |
|
|
`byte_enabled = 0|1'
|
| 2327 |
|
|
`hw_enabled = 0|1'
|
| 2328 |
|
|
`word_enabled = 0|1'
|
| 2329 |
|
|
If 1 (true, the default), these parameters respectively enable the
|
| 2330 |
82 |
jeremybenn |
device for byte wide, half-word wide and word wide accesses. If 0,
|
| 2331 |
19 |
jeremybenn |
accesses of that width will fail.
|
| 2332 |
|
|
|
| 2333 |
|
|
|
| 2334 |
|
|
|
| 2335 |
|
|
File: or1ksim.info, Node: Interactive Command Line, Next: Verification API, Prev: Configuration, Up: Top
|
| 2336 |
|
|
|
| 2337 |
|
|
4 Interactive Command Line
|
| 2338 |
|
|
**************************
|
| 2339 |
|
|
|
| 2340 |
|
|
If started with the `-f' flag, or if interrupted with `ctrl-C', Or1ksim
|
| 2341 |
82 |
jeremybenn |
provides the user with an interactive command line. The commands
|
| 2342 |
19 |
jeremybenn |
available, which may not be abbreviated, are:
|
| 2343 |
|
|
|
| 2344 |
|
|
`q'
|
| 2345 |
|
|
Exit the simulator
|
| 2346 |
|
|
|
| 2347 |
|
|
`r'
|
| 2348 |
82 |
jeremybenn |
Display all the General Purpose Registers (GPRs). Also shows the
|
| 2349 |
19 |
jeremybenn |
just executed and next to be executed instructions symbolically
|
| 2350 |
|
|
and the state of the flag in the Supervision Register.
|
| 2351 |
|
|
|
| 2352 |
|
|
`t'
|
| 2353 |
|
|
Execute the next instruction and then display register/instruction
|
| 2354 |
|
|
information as with the `r' command (see above).
|
| 2355 |
|
|
|
| 2356 |
|
|
`run NUM [ hush ]'
|
| 2357 |
82 |
jeremybenn |
Execute NUM instructions. The register/instruction information is
|
| 2358 |
19 |
jeremybenn |
displayed after each instruction, as with the `r' command (see
|
| 2359 |
|
|
above) _unless_ `hush' is specified.
|
| 2360 |
|
|
|
| 2361 |
|
|
`pr REG VALUE'
|
| 2362 |
|
|
Patch register REG with VALUE.
|
| 2363 |
|
|
|
| 2364 |
|
|
`dm FROMADDR [ TOADDR ]'
|
| 2365 |
82 |
jeremybenn |
Display memory bytes between FROMADDR and TOADDR. If TOADDR is
|
| 2366 |
|
|
not given, 64 bytes are displayed, starting at FROMADDR.
|
| 2367 |
19 |
jeremybenn |
|
| 2368 |
|
|
Caution: The output from this command is broken (a bug).
|
| 2369 |
82 |
jeremybenn |
Or1ksim attempts to print out 16 bytes per row. However,
|
| 2370 |
19 |
jeremybenn |
instead of printing out the address at the start of each row,
|
| 2371 |
|
|
it prints the address (of the first of the 16 bytes) before
|
| 2372 |
|
|
_each_ byte.
|
| 2373 |
|
|
|
| 2374 |
|
|
`de FROMADDR [ TOADDR ]'
|
| 2375 |
82 |
jeremybenn |
Disassemble code between FROMADDR and TOADDR. If TOADDR is not
|
| 2376 |
19 |
jeremybenn |
given, 16 instructions are disassembled.
|
| 2377 |
|
|
|
| 2378 |
|
|
The disassembly is entirely numerical, and gives no symbolic
|
| 2379 |
|
|
information.
|
| 2380 |
|
|
|
| 2381 |
|
|
`pm ADDR VALUE'
|
| 2382 |
|
|
Patch the 4 bytes in memory starting at ADDR with the 32-bit VALUE.
|
| 2383 |
|
|
|
| 2384 |
|
|
`pc VALUE'
|
| 2385 |
|
|
Patch the program counter with VALUE.
|
| 2386 |
|
|
|
| 2387 |
|
|
`cm FROMADDR TOADDR SIZE'
|
| 2388 |
|
|
Copy SIZE bytes in memory from FROMADDR to TOADDR.
|
| 2389 |
|
|
|
| 2390 |
|
|
`break ADDR'
|
| 2391 |
|
|
Toggle the breakpoint set at ADDR.
|
| 2392 |
|
|
|
| 2393 |
|
|
`breaks'
|
| 2394 |
|
|
List all set breakpoints
|
| 2395 |
|
|
|
| 2396 |
|
|
`reset'
|
| 2397 |
82 |
jeremybenn |
Reset the simulator. Includes modeling a reset of the processor,
|
| 2398 |
|
|
so execution will restart from the reset vector location, 0x100.
|
| 2399 |
19 |
jeremybenn |
|
| 2400 |
|
|
`hist'
|
| 2401 |
|
|
If saving the execution history has been configured (*note
|
| 2402 |
|
|
Simulator Behavior: Simulator Behavior.), display the execution
|
| 2403 |
|
|
history.
|
| 2404 |
|
|
|
| 2405 |
|
|
`stall'
|
| 2406 |
|
|
Stall the processor, so that control is passed to the debug unit.
|
| 2407 |
82 |
jeremybenn |
When stalled, the processor can execute no instructions. This
|
| 2408 |
19 |
jeremybenn |
command is useful when debugging the JTAG interface, used by
|
| 2409 |
|
|
debuggers such as GDB.
|
| 2410 |
|
|
|
| 2411 |
|
|
`unstall'
|
| 2412 |
82 |
jeremybenn |
Unstall the processor, so that normal execution can continue.
|
| 2413 |
|
|
This command is useful when debugging the JTAG interface, used by
|
| 2414 |
19 |
jeremybenn |
debuggers such as GDB.
|
| 2415 |
|
|
|
| 2416 |
|
|
`stats CATEGORY | clear'
|
| 2417 |
|
|
Print the statistics for the given CATEGORY, if available, or
|
| 2418 |
82 |
jeremybenn |
clear if `clear' is specified. The categories are:
|
| 2419 |
19 |
jeremybenn |
|
| 2420 |
|
|
1
|
| 2421 |
|
|
Miscellaneous statistics: branch predictions (if branch
|
| 2422 |
|
|
predictions are enabled), branch target cache model (if
|
| 2423 |
|
|
enabled), cache (if enbaled), MMU (if enabled) and number of
|
| 2424 |
|
|
addtional load & store cycles.
|
| 2425 |
|
|
|
| 2426 |
|
|
*Note Configuring the OpenRisc Achitectural Components: Core
|
| 2427 |
|
|
OpenRISC Configuration, for details of how to enable these
|
| 2428 |
|
|
various features.
|
| 2429 |
|
|
|
| 2430 |
|
|
2
|
| 2431 |
82 |
jeremybenn |
Instruction usage statistics. Requires hazard analysis to be
|
| 2432 |
19 |
jeremybenn |
enabled (*note CPU Configuration: CPU Configuration.).
|
| 2433 |
|
|
|
| 2434 |
|
|
3
|
| 2435 |
82 |
jeremybenn |
Instruction dependency statistics. Requires hazard analysis
|
| 2436 |
19 |
jeremybenn |
to be enabled (*note CPU Configuration: CPU Configuration.).
|
| 2437 |
|
|
|
| 2438 |
|
|
4
|
| 2439 |
82 |
jeremybenn |
Functional unit dependency statistics. Requires hazard
|
| 2440 |
19 |
jeremybenn |
analysis to be enabled (*note CPU Configuration: CPU
|
| 2441 |
|
|
Configuration.).
|
| 2442 |
|
|
|
| 2443 |
|
|
5
|
| 2444 |
82 |
jeremybenn |
Raw register usage over time. Requires hazard analysis to be
|
| 2445 |
19 |
jeremybenn |
enabled (*note CPU Configuration: CPU Configuration.).
|
| 2446 |
|
|
|
| 2447 |
|
|
6
|
| 2448 |
82 |
jeremybenn |
Store buffer statistics. Requires the store buffer to be
|
| 2449 |
19 |
jeremybenn |
enabled (*note CPU Configuration: CPU Configuration.).
|
| 2450 |
|
|
|
| 2451 |
|
|
|
| 2452 |
|
|
`info'
|
| 2453 |
|
|
Display detailed information about the simulator configuration.
|
| 2454 |
|
|
This is quite a lengthy about, because all MMU TLB information is
|
| 2455 |
|
|
displayed.
|
| 2456 |
|
|
|
| 2457 |
|
|
`dv FROMADDR [ TOADDR ] [ MODULE ]'
|
| 2458 |
|
|
Dump the area of memory between FROMADDR and TOADDR as Verilog
|
| 2459 |
82 |
jeremybenn |
code for a synchronous, 23-bit wide SRAM module, named MODULE. If
|
| 2460 |
19 |
jeremybenn |
TOADDR is not specified, then 64 bytes are dumped (as 16 32-bit
|
| 2461 |
82 |
jeremybenn |
words). If MODULE is not specified, `or1k_mem' is used.
|
| 2462 |
19 |
jeremybenn |
|
| 2463 |
|
|
To save to a file, use the redirection function (described after
|
| 2464 |
|
|
this table, below).
|
| 2465 |
|
|
|
| 2466 |
|
|
`dh FROMADDR [ TOADDR ]'
|
| 2467 |
|
|
Dump the area of memory between FROMADDR and TOADDR as 32-bit hex
|
| 2468 |
82 |
jeremybenn |
numbers (no `0x', or `32'h' prefix). If TOADDR is not specified,
|
| 2469 |
19 |
jeremybenn |
then 64 bytes are dumped (as 16 32-bit words).
|
| 2470 |
|
|
|
| 2471 |
|
|
To save to a file, use the redirection function (described after
|
| 2472 |
|
|
this table, below).
|
| 2473 |
|
|
|
| 2474 |
|
|
`setdbch'
|
| 2475 |
82 |
jeremybenn |
Toggle debug channels on/off. *Note Standalone Simulator:
|
| 2476 |
19 |
jeremybenn |
Standalone Simulator, for a description of specifying debug
|
| 2477 |
|
|
channels on the command line.
|
| 2478 |
|
|
|
| 2479 |
|
|
`set SECTION PARAM = VALUE'
|
| 2480 |
|
|
Set the configuration parameter PARA in section SECTION to VALUE.
|
| 2481 |
|
|
*Note Configuration: Configuration, for details of configuration
|
| 2482 |
|
|
parameters and their settings.
|
| 2483 |
|
|
|
| 2484 |
|
|
`debug'
|
| 2485 |
82 |
jeremybenn |
Toggle the simulator debug mode. *Note Debug Interface
|
| 2486 |
19 |
jeremybenn |
Configuration: Debug Interface Configuration, for information on
|
| 2487 |
|
|
this parameter.
|
| 2488 |
|
|
|
| 2489 |
|
|
Caution: This is effectively enabling or disabling the debug
|
| 2490 |
82 |
jeremybenn |
unit. It does not effect the remote GDB debug interface.
|
| 2491 |
19 |
jeremybenn |
However using the remote debug interface while the debug unit
|
| 2492 |
|
|
is disabled will lead to undefined behavior and likely crash
|
| 2493 |
|
|
Or1ksim
|
| 2494 |
|
|
|
| 2495 |
|
|
`cuc'
|
| 2496 |
|
|
Enter the the Custom Unit Compiler command prompt (*note CUC
|
| 2497 |
|
|
Configuration: CUC Configuration.).
|
| 2498 |
|
|
|
| 2499 |
|
|
Caution: The CUC must be properly configured, for this to
|
| 2500 |
82 |
jeremybenn |
succeed. In particular a timing file must be available and
|
| 2501 |
|
|
readable. Otherwise Or1ksim will crash.
|
| 2502 |
19 |
jeremybenn |
|
| 2503 |
|
|
`help'
|
| 2504 |
|
|
Print out brief information about each command available.
|
| 2505 |
|
|
|
| 2506 |
|
|
`mprofile [-vh] [-m M] [-g N] [-f FILE] FROM TO'
|
| 2507 |
82 |
jeremybenn |
Run the memory profiling utility. This follows the same usage as
|
| 2508 |
19 |
jeremybenn |
the standalone command (*note Memory Profiling Utility: Memory
|
| 2509 |
|
|
Profiling Utility.).
|
| 2510 |
|
|
|
| 2511 |
|
|
`profile [-vhcq] [-g FILE]'
|
| 2512 |
82 |
jeremybenn |
Run the instruction profiling utility. This follows the same
|
| 2513 |
|
|
usage as the standalone command (*note Profiling Utility:
|
| 2514 |
|
|
Profiling Utility.).
|
| 2515 |
19 |
jeremybenn |
|
| 2516 |
|
|
|
| 2517 |
|
|
For all commands, it is possible to redirect the output to a file, by
|
| 2518 |
|
|
using the redirection operator, `>'.
|
| 2519 |
|
|
|
| 2520 |
|
|
COMMAND > FILENAME
|
| 2521 |
|
|
|
| 2522 |
|
|
This is particularly useful for commands dumping a large amount of
|
| 2523 |
|
|
output, such as `dv'.
|
| 2524 |
|
|
|
| 2525 |
|
|
Caution: Unfortunately there is a serious bug with the redirection
|
| 2526 |
82 |
jeremybenn |
operator. It does not return output to standard output after the
|
| 2527 |
|
|
command completes. Until this bug is fixed, file redirection
|
| 2528 |
19 |
jeremybenn |
should not be used.
|
| 2529 |
|
|
|
| 2530 |
|
|
|
| 2531 |
|
|
File: or1ksim.info, Node: Verification API, Next: Code Internals, Prev: Interactive Command Line, Up: Top
|
| 2532 |
|
|
|
| 2533 |
|
|
5 Verification API (VAPI)
|
| 2534 |
|
|
*************************
|
| 2535 |
|
|
|
| 2536 |
|
|
The Verification API (VAPI) provides a TCP/IP interface to allow
|
| 2537 |
82 |
jeremybenn |
components of the simulation to be controlled externally. The
|
| 2538 |
|
|
interface is polled for new requests on each simulated clock cycle.
|
| 2539 |
|
|
Components within the simulator may send responses to such requests.
|
| 2540 |
19 |
jeremybenn |
|
| 2541 |
82 |
jeremybenn |
The inteface is an asynchronous duplex protocol. On the request side
|
| 2542 |
|
|
it provides for simple commands, known as VAPI IDs (a 32 bit integer),
|
| 2543 |
|
|
with a single piece of data (also a 32 bit integer). On the send side,
|
| 2544 |
|
|
it provides for sending a single VAPI ID and data. However there is no
|
| 2545 |
|
|
explicit command-response structure. Some components just accept
|
| 2546 |
|
|
requests (e.g. to set values), some just generate sends (to report
|
| 2547 |
19 |
jeremybenn |
values), and some do both.
|
| 2548 |
|
|
|
| 2549 |
|
|
Each component has a base ID (32 bit) and its commands will start from
|
| 2550 |
82 |
jeremybenn |
that base ID. This provides a simple partitioning of the command space
|
| 2551 |
|
|
amongst components. Request commands will be directed to the component
|
| 2552 |
19 |
jeremybenn |
with the closest base ID lower than the VAPI ID of the command.
|
| 2553 |
|
|
|
| 2554 |
|
|
Thus if there are two components with base IDs of 0x200 and 0x300, and
|
| 2555 |
|
|
a request with VAPI ID of 0x203 is received, it will be directed to the
|
| 2556 |
|
|
first component as its command #3.
|
| 2557 |
|
|
|
| 2558 |
|
|
The results of VAPI interactions are logged (by default in `vapi.log'
|
| 2559 |
|
|
unless an alternative is specified in `section vapi').
|
| 2560 |
|
|
|
| 2561 |
|
|
Currently the following components support VAPI:
|
| 2562 |
|
|
|
| 2563 |
|
|
Debug Unit
|
| 2564 |
|
|
Although the Debug Unit can specify a base VAPI ID, it is not used
|
| 2565 |
|
|
to send commands or receive requests.
|
| 2566 |
|
|
|
| 2567 |
|
|
Instead, if the base VAPI ID is set, all remote JTAG protocol
|
| 2568 |
|
|
exchanges are logged in the VAPI log file.
|
| 2569 |
|
|
|
| 2570 |
|
|
UART
|
| 2571 |
|
|
If a base VAPI ID is specified, the UART sends details of any
|
| 2572 |
|
|
chars or break characters sent, with dteails of the line control
|
| 2573 |
|
|
register etc encoded in the data packet sent.
|
| 2574 |
|
|
|
| 2575 |
|
|
This supports a single VAPI command request, but encodes a
|
| 2576 |
|
|
sub-command in the top 8 bits of the associated data.
|
| 2577 |
|
|
|
| 2578 |
|
|
`0x00'
|
| 2579 |
|
|
This stuffs the least significant 8 bits of the data into the
|
| 2580 |
|
|
serial register of the UART and the next 8 bits into the line
|
| 2581 |
|
|
control register, effectively providing control of the next
|
| 2582 |
|
|
character to be sent or received.
|
| 2583 |
|
|
|
| 2584 |
|
|
`0x01'
|
| 2585 |
|
|
The divisor latch bytes are set from the least significant 16
|
| 2586 |
|
|
bits of the data.
|
| 2587 |
|
|
|
| 2588 |
|
|
`0x02'
|
| 2589 |
|
|
The line control register is set from bits 15-8 of the data.
|
| 2590 |
|
|
|
| 2591 |
|
|
`0x03'
|
| 2592 |
|
|
The UART skew is set from the least significant 16 bits of
|
| 2593 |
|
|
the data
|
| 2594 |
|
|
|
| 2595 |
|
|
`0x04'
|
| 2596 |
|
|
If the 16th most significant bit of the data is 1, start
|
| 2597 |
82 |
jeremybenn |
sending breaks, otherwise stop sending breaks. The breaks
|
| 2598 |
|
|
are sent or cleared after the number of UART clock divider
|
| 2599 |
|
|
ticks specified by the data (immediately if the data is zero).
|
| 2600 |
19 |
jeremybenn |
|
| 2601 |
|
|
|
| 2602 |
|
|
DMA
|
| 2603 |
|
|
Although the DMA unit supports a base VAPI ID in its configuration
|
| 2604 |
|
|
(`section dma'), no VAPI data is sent, nor VAPI requests currently
|
| 2605 |
|
|
implemented.
|
| 2606 |
|
|
|
| 2607 |
|
|
Ethernet
|
| 2608 |
82 |
jeremybenn |
The following requests are handled by the Ethernet. Specified
|
| 2609 |
19 |
jeremybenn |
symbolically, these are the increments from the base VAPI ID of the
|
| 2610 |
82 |
jeremybenn |
Ethernet. At present no implementation is provided behind these
|
| 2611 |
19 |
jeremybenn |
VAPI requests.
|
| 2612 |
|
|
|
| 2613 |
|
|
`ETH_VAPI_DATA (0)'
|
| 2614 |
|
|
|
| 2615 |
|
|
`ETH_VAPI_CTRL (0)'
|
| 2616 |
|
|
|
| 2617 |
|
|
GPIO
|
| 2618 |
|
|
If a base VAPI ID is specified, the GPIO sends out on its base
|
| 2619 |
|
|
VAPI ID (symbolically, GPIO_VAPI_DATA (0) offset from the base
|
| 2620 |
|
|
VAPI ID) any changes in outputs.
|
| 2621 |
|
|
|
| 2622 |
82 |
jeremybenn |
The following requests are handled by the GPIO. Specified
|
| 2623 |
19 |
jeremybenn |
symbolically, these are the increments from the VAPI base ID of the
|
| 2624 |
|
|
GPIO.
|
| 2625 |
|
|
|
| 2626 |
|
|
`GPIO_VAPI_DATA (0)'
|
| 2627 |
|
|
Set the next input to the commands data field
|
| 2628 |
|
|
|
| 2629 |
|
|
`GPIO_VAPI_AUX (1)'
|
| 2630 |
|
|
Set the GPIO auxiliary inputs to the data field
|
| 2631 |
|
|
|
| 2632 |
|
|
`GPIO_VAPI_CLOCK (2)'
|
| 2633 |
|
|
Add an external GPIO clock trigger of period specified in the
|
| 2634 |
|
|
data field.
|
| 2635 |
|
|
|
| 2636 |
|
|
`GPIO_VAPI_RGPIO_OE (3)'
|
| 2637 |
|
|
Set the GPIO output enable to the data field
|
| 2638 |
|
|
|
| 2639 |
|
|
`GPIO_VAPI_RGPIO_INTE (4)'
|
| 2640 |
|
|
Set the next interrupt to the data field
|
| 2641 |
|
|
|
| 2642 |
|
|
`GPIO_VAPI_RGPIO_PTRIG (5)'
|
| 2643 |
|
|
Set the next trigger to the data field
|
| 2644 |
|
|
|
| 2645 |
|
|
`GPIO_VAPI_RGPIO_AUX (6)'
|
| 2646 |
|
|
Set the next auxiliary input to the data field
|
| 2647 |
|
|
|
| 2648 |
|
|
`GPIO_VAPI_RGPIO_CTRL (7)'
|
| 2649 |
|
|
Set th next control input to the data field
|
| 2650 |
|
|
|
| 2651 |
|
|
|
| 2652 |
|
|
|
| 2653 |
|
|
|
| 2654 |
|
|
File: or1ksim.info, Node: Code Internals, Next: GNU Free Documentation License, Prev: Verification API, Up: Top
|
| 2655 |
|
|
|
| 2656 |
|
|
6 A Guide to Or1ksim Internals
|
| 2657 |
|
|
******************************
|
| 2658 |
|
|
|
| 2659 |
82 |
jeremybenn |
These are notes to help those wanting to extend Or1ksim. This section
|
| 2660 |
19 |
jeremybenn |
assumes the use of a tag file, so file locations of entities'
|
| 2661 |
82 |
jeremybenn |
definitions are not in general provided. For more on tags, see the
|
| 2662 |
|
|
Linux manual page for `etags'. A tag file can be created with:
|
| 2663 |
19 |
jeremybenn |
|
| 2664 |
|
|
make tags
|
| 2665 |
|
|
|
| 2666 |
|
|
* Menu:
|
| 2667 |
|
|
|
| 2668 |
|
|
* Coding Conventions::
|
| 2669 |
|
|
* Global Data Structures::
|
| 2670 |
|
|
* Concepts::
|
| 2671 |
|
|
* Internal Debugging::
|
| 2672 |
104 |
jeremybenn |
* Regression Testing::
|
| 2673 |
19 |
jeremybenn |
|
| 2674 |
|
|
|
| 2675 |
|
|
File: or1ksim.info, Node: Coding Conventions, Next: Global Data Structures, Up: Code Internals
|
| 2676 |
|
|
|
| 2677 |
|
|
6.1 Coding Conventions for Or1ksim
|
| 2678 |
|
|
==================================
|
| 2679 |
|
|
|
| 2680 |
|
|
This chapter provides some guidelines for coding, to facilitate
|
| 2681 |
|
|
extensions to Or1ksim
|
| 2682 |
|
|
|
| 2683 |
|
|
_GNU Coding Standard_
|
| 2684 |
|
|
Code should follow the GNU coding standard for C
|
| 2685 |
82 |
jeremybenn |
(`http://www.gnu.org/prep/standards/'. If in doubt, put your code
|
| 2686 |
19 |
jeremybenn |
through the `indent' program.
|
| 2687 |
|
|
|
| 2688 |
|
|
_`#include' headers_
|
| 2689 |
|
|
All C source code files should include `config.h' before any other
|
| 2690 |
|
|
file.
|
| 2691 |
|
|
|
| 2692 |
|
|
This should be followed by inclusion of any system headers (but see
|
| 2693 |
|
|
the comments about portability and `port.h' below) and then by any
|
| 2694 |
|
|
Or1ksim package headers.
|
| 2695 |
|
|
|
| 2696 |
|
|
If `port.h' is required, it should be the first package header to
|
| 2697 |
|
|
be included after the system headers.
|
| 2698 |
|
|
|
| 2699 |
|
|
All C source code and header files should directly include any
|
| 2700 |
82 |
jeremybenn |
system or package header they depend on, i.e. not rely on any
|
| 2701 |
|
|
other header having already included it. The two exceptions are
|
| 2702 |
19 |
jeremybenn |
|
| 2703 |
|
|
1. All header files may assume that `config.h' has already been
|
| 2704 |
|
|
included.
|
| 2705 |
|
|
|
| 2706 |
|
|
2. System headers which impose portability problems should be
|
| 2707 |
|
|
included by using the package header `port.h', rather than
|
| 2708 |
82 |
jeremybenn |
the system headers themselves. This is the case for code
|
| 2709 |
19 |
jeremybenn |
requiring
|
| 2710 |
|
|
|
| 2711 |
|
|
* `strndup' (from `string.h')
|
| 2712 |
|
|
|
| 2713 |
|
|
* Integer types (`intN_t', `uintN_t') (from `inttypes.h').
|
| 2714 |
|
|
|
| 2715 |
|
|
* `isblank' (from `ctype.h')
|
| 2716 |
|
|
|
| 2717 |
|
|
|
| 2718 |
|
|
|
| 2719 |
|
|
_`#include' files once only_
|
| 2720 |
|
|
All include files should be protected by `#ifndef' to ensure their
|
| 2721 |
82 |
jeremybenn |
definitions are only included once. For instance a header file
|
| 2722 |
19 |
jeremybenn |
`X-Y.H' should surround its contents with:
|
| 2723 |
|
|
|
| 2724 |
|
|
#ifndef X_Y__H
|
| 2725 |
|
|
#define X_Y__H
|
| 2726 |
|
|
|
| 2727 |
|
|
|
| 2728 |
|
|
|
| 2729 |
|
|
#endif /* X_Y__H */
|
| 2730 |
|
|
|
| 2731 |
|
|
_Avoid `typedef'_
|
| 2732 |
|
|
The GNU coding style for C does not have a clear way to distinguish
|
| 2733 |
82 |
jeremybenn |
between user type name and user variables. For this reason
|
| 2734 |
19 |
jeremybenn |
`typedef' should be avoided except for the most ubiquitous user
|
| 2735 |
82 |
jeremybenn |
defined types. This makes the code much easier to read.
|
| 2736 |
19 |
jeremybenn |
|
| 2737 |
|
|
There are some `typedef' declarations in the `argtable2' library
|
| 2738 |
|
|
and the ELF and COFF headers, because this code is taken from
|
| 2739 |
|
|
other places.
|
| 2740 |
|
|
|
| 2741 |
|
|
Within Or1ksim legacy uses of `typedef' have largely been purged,
|
| 2742 |
|
|
except in the Custom Unit Compiler (*note Custom Unit Compiler
|
| 2743 |
|
|
(CUC) Configuration: CUC Configuration.).
|
| 2744 |
|
|
|
| 2745 |
|
|
The remaining uses of `typedef' occur in two places:
|
| 2746 |
|
|
|
| 2747 |
|
|
* `port/port.h' defines types to replace those in header files
|
| 2748 |
|
|
that are not available (character functions, string
|
| 2749 |
|
|
duplication, integer types).
|
| 2750 |
|
|
|
| 2751 |
|
|
`cpu/or1k/arch.h' defines types for the key Or1ksim entities:
|
| 2752 |
|
|
addresses (`oraddr_t'), unsigned register values (`uorreg_t')
|
| 2753 |
|
|
and signed register (`orreg_t') values.
|
| 2754 |
|
|
|
| 2755 |
|
|
|
| 2756 |
|
|
Where new types are defined, they should appear in one of these two
|
| 2757 |
82 |
jeremybenn |
files as appropriate. Or1ksim specific types appearing in
|
| 2758 |
|
|
`arch.h' should always have the suffix `_h'.
|
| 2759 |
19 |
jeremybenn |
|
| 2760 |
|
|
_Don't begin names with underscore_
|
| 2761 |
|
|
Names beginning with `_' are intended to be part of the C
|
| 2762 |
82 |
jeremybenn |
infrastructure. They should not be used in the simulator code.
|
| 2763 |
19 |
jeremybenn |
|
| 2764 |
|
|
_Keep Non-global top level entities static_
|
| 2765 |
|
|
All top level entities (functions, variables), which are not
|
| 2766 |
|
|
explicitly part of a global interface should be declared static.
|
| 2767 |
|
|
This ensures that unwanted connections are not inadvertently built
|
| 2768 |
|
|
across the program.
|
| 2769 |
|
|
|
| 2770 |
|
|
_Use of `inline'_
|
| 2771 |
82 |
jeremybenn |
Code should not be declared `inline'. Modern compilers can work
|
| 2772 |
19 |
jeremybenn |
out for themselves what is best in this respect.
|
| 2773 |
|
|
|
| 2774 |
|
|
_Initialization_
|
| 2775 |
82 |
jeremybenn |
All data structures should be explicitly initialized. In
|
| 2776 |
|
|
particular code should not rely on static data structures being
|
| 2777 |
|
|
initialized to zero.
|
| 2778 |
19 |
jeremybenn |
|
| 2779 |
|
|
The rationale is that in future static data structures may become
|
| 2780 |
82 |
jeremybenn |
dynamic. This has been a particular source of bugs in Or1ksim
|
| 2781 |
19 |
jeremybenn |
historically.
|
| 2782 |
|
|
|
| 2783 |
|
|
A specific case is with new peripherals, which should always
|
| 2784 |
|
|
include a `start' function to pre-initialize all configuration
|
| 2785 |
|
|
parameters to sensible defaults
|
| 2786 |
|
|
|
| 2787 |
|
|
_Configuration Validation_
|
| 2788 |
|
|
All configuration values should be validated, preferably when
|
| 2789 |
|
|
encountered, if not when the `section' is closed, or otherwise at
|
| 2790 |
|
|
run time when the parameter is first used.
|
| 2791 |
|
|
|
| 2792 |
|
|
|
| 2793 |
|
|
|
| 2794 |
|
|
File: or1ksim.info, Node: Global Data Structures, Next: Concepts, Prev: Coding Conventions, Up: Code Internals
|
| 2795 |
|
|
|
| 2796 |
|
|
6.2 Global Data Structures
|
| 2797 |
|
|
==========================
|
| 2798 |
|
|
|
| 2799 |
|
|
`config'
|
| 2800 |
|
|
The global variable `config' of type `struct config' holds the
|
| 2801 |
|
|
configuration data for some of the Or1ksim components which are
|
| 2802 |
82 |
jeremybenn |
always present. At present the components are:
|
| 2803 |
19 |
jeremybenn |
|
| 2804 |
|
|
* The simulator defined in `section sim' (*note Simulator
|
| 2805 |
|
|
Configuration: Simulator Configuration.).
|
| 2806 |
|
|
|
| 2807 |
|
|
* The Verification API (VAPI) defined in `section vapi' (*note
|
| 2808 |
|
|
Verification API (VAPI) Configuration: Verification API
|
| 2809 |
|
|
Configuration.).
|
| 2810 |
|
|
|
| 2811 |
|
|
* The Custom Unit Compiler (CUC), defined in `section cuc'
|
| 2812 |
|
|
(*note Custom Unit Compiler (CUC) Configuration: CUC
|
| 2813 |
|
|
Configuration.).
|
| 2814 |
|
|
|
| 2815 |
|
|
* The CPU, defined in `section cpu' (*note CPU Configuration:
|
| 2816 |
|
|
CPU Configuration.).
|
| 2817 |
|
|
|
| 2818 |
|
|
* The data cache (but not the instruction cache), defined in
|
| 2819 |
|
|
`section dc' (*note Cache Configuration: Cache
|
| 2820 |
|
|
Configuration.).
|
| 2821 |
|
|
|
| 2822 |
|
|
* The power management unit, defined in `section pm' (*note
|
| 2823 |
|
|
Power Management Configuration: Power Management
|
| 2824 |
|
|
Configuration.).
|
| 2825 |
|
|
|
| 2826 |
|
|
* The programmable interrupt controller, defined in
|
| 2827 |
|
|
`section pic' (*note Interrupt Configuration: Interrupt
|
| 2828 |
|
|
Configuration.).
|
| 2829 |
|
|
|
| 2830 |
|
|
* Branch prediciton, defined in `section bpb' (*note Branch
|
| 2831 |
|
|
Prediction Configuration: Branch Prediction Configuration.).
|
| 2832 |
|
|
|
| 2833 |
|
|
* The debug unit, defined in `section debug' (*note Debug
|
| 2834 |
|
|
Interface Configuration: Debug Interface Configuration.).
|
| 2835 |
|
|
|
| 2836 |
|
|
|
| 2837 |
|
|
This struct is made of a collection of structs, one for each
|
| 2838 |
82 |
jeremybenn |
component. For example the simulator configuration is held in
|
| 2839 |
19 |
jeremybenn |
`config.sim'.
|
| 2840 |
|
|
|
| 2841 |
|
|
`config'
|
| 2842 |
|
|
This is a linked list of data structures holding configuration data
|
| 2843 |
|
|
for all sections which are not held in the main `config' data
|
| 2844 |
82 |
jeremybenn |
structure. In general these are components (such as peripherals
|
| 2845 |
|
|
and memory) which may occur multiple times. However it also
|
| 2846 |
|
|
handles some architectural components which may occur only once,
|
| 2847 |
|
|
such as the memory management units, the instruction cache, the
|
| 2848 |
|
|
interrupt controller and branch prediction.
|
| 2849 |
19 |
jeremybenn |
|
| 2850 |
|
|
`runtime'
|
| 2851 |
|
|
The global variable `runtime' of type `struct runtime' holds all
|
| 2852 |
82 |
jeremybenn |
the runtime information about the simulation. To access this
|
| 2853 |
19 |
jeremybenn |
variable, `sim-config.h' must be included.
|
| 2854 |
|
|
|
| 2855 |
|
|
This struct is itself made of 3 other structs, `cpu' (for CPU run
|
| 2856 |
|
|
time state), `vapi' (for Verification API state) and `cuc' (for
|
| 2857 |
|
|
Custom Unit Compiler state).
|
| 2858 |
|
|
|
| 2859 |
|
|
|
| 2860 |
|
|
|
| 2861 |
|
|
File: or1ksim.info, Node: Concepts, Next: Internal Debugging, Prev: Global Data Structures, Up: Code Internals
|
| 2862 |
|
|
|
| 2863 |
|
|
6.3 Concepts
|
| 2864 |
|
|
============
|
| 2865 |
|
|
|
| 2866 |
|
|
_Output Redirection_
|
| 2867 |
82 |
jeremybenn |
The current output stream is held in `runtime.cpu.fout'. Output
|
| 2868 |
19 |
jeremybenn |
should be explicitly written to this stream, or may use the
|
| 2869 |
|
|
`PRINTF' macro, which will write its arguments to this output
|
| 2870 |
|
|
stream.
|
| 2871 |
|
|
|
| 2872 |
|
|
_Reset Hooks_
|
| 2873 |
|
|
Any peripheral may register a routine to be called when the the
|
| 2874 |
|
|
processor is reset by calling `reg_sim_reset', providing a
|
| 2875 |
82 |
jeremybenn |
function and pointer to a data structure as arguments. On reset
|
| 2876 |
19 |
jeremybenn |
that function will be called with the data stucture pointer as
|
| 2877 |
|
|
argument.
|
| 2878 |
|
|
|
| 2879 |
|
|
|
| 2880 |
|
|
|
| 2881 |
104 |
jeremybenn |
File: or1ksim.info, Node: Internal Debugging, Next: Regression Testing, Prev: Concepts, Up: Code Internals
|
| 2882 |
19 |
jeremybenn |
|
| 2883 |
|
|
6.4 Internal Debugging
|
| 2884 |
|
|
======================
|
| 2885 |
|
|
|
| 2886 |
|
|
The function `debug' is like `printf', but with an extra first
|
| 2887 |
82 |
jeremybenn |
argument, which is the debug level. If the debug level specified in
|
| 2888 |
|
|
the simulator configuration (*note Simulator Behavior: Simulator
|
| 2889 |
|
|
Behavior.) is greater than or equal to this value, the remaining
|
| 2890 |
|
|
arguments are printed to the current output stream (*note Output
|
| 2891 |
|
|
Redirection: Output Redirection.).
|
| 2892 |
19 |
jeremybenn |
|
| 2893 |
|
|
|
| 2894 |
104 |
jeremybenn |
File: or1ksim.info, Node: Regression Testing, Prev: Internal Debugging, Up: Code Internals
|
| 2895 |
|
|
|
| 2896 |
|
|
6.5 Regression Testing
|
| 2897 |
|
|
======================
|
| 2898 |
|
|
|
| 2899 |
|
|
Or1ksim now includes a regression test suite for both standalone and
|
| 2900 |
|
|
library usage as described earlier (*note Building and Installing:
|
| 2901 |
|
|
Build and Install.). Running the tests requires that the OpenRISC
|
| 2902 |
|
|
toolchain and DejaGNU are both installed.
|
| 2903 |
|
|
|
| 2904 |
|
|
Tests are written using `expect', a derivative of TCL. Documentation
|
| 2905 |
|
|
of DejaGnu, `expect' and TCL are freely available on the Web. The
|
| 2906 |
|
|
Embecosm Application Note 8, `Howto: Using DejaGnu for Testing: A
|
| 2907 |
|
|
Simple Introduction' (`http://www.embecosm.com/download/ean8.html')
|
| 2908 |
|
|
provides a concise introduction.
|
| 2909 |
|
|
|
| 2910 |
|
|
All test code is found in the `testsuite' directory. The key files and
|
| 2911 |
|
|
directories used are as follows.
|
| 2912 |
|
|
|
| 2913 |
|
|
`global-conf.exp'
|
| 2914 |
|
|
This is the global DejaGNU configuration file used to set up
|
| 2915 |
|
|
parameters common to all tests. If the user has the environment
|
| 2916 |
|
|
varialbe `DEJAGNU' defined, it will be used instead, but this is
|
| 2917 |
|
|
not recommended.
|
| 2918 |
|
|
|
| 2919 |
|
|
`Makefile.am'
|
| 2920 |
|
|
This is the top level `automake' file for the testsuite. The only
|
| 2921 |
|
|
changes likely to be needed here is additional local cleanup of
|
| 2922 |
|
|
files created by new tests.
|
| 2923 |
|
|
|
| 2924 |
|
|
`README'
|
| 2925 |
|
|
This contains details of all the tests
|
| 2926 |
|
|
|
| 2927 |
|
|
`config'
|
| 2928 |
|
|
This contains DejaGnu board configurations. Since the tests are
|
| 2929 |
|
|
generally run on a Unix host, this should just contain `Unix.exp'.
|
| 2930 |
|
|
|
| 2931 |
|
|
`lib'
|
| 2932 |
|
|
This contains DejaGnu tool specific configurations. "Tool" has a
|
| 2933 |
|
|
specific meaning in DejaGNU, referring just to a grouping of
|
| 2934 |
|
|
tests. In this case there are two such "tools", "or1ksim" and
|
| 2935 |
|
|
"libsim" for tests of the standalone tool and tests of the library.
|
| 2936 |
|
|
|
| 2937 |
|
|
Corresponding to this, there are two tool specific configuration
|
| 2938 |
|
|
files, `or1ksim.exp' and `libsim.exp'. These contain `expect'/TCL
|
| 2939 |
|
|
procedures for common use among the tests.
|
| 2940 |
|
|
|
| 2941 |
|
|
`libsim.tests'
|
| 2942 |
|
|
`or1ksim.tests'
|
| 2943 |
|
|
These are the directories of tests of the Or1ksim library. They
|
| 2944 |
|
|
also include Or1ksim configuration files and each has a
|
| 2945 |
|
|
`Makefile.am' file. `Makefile.am' should be updated whenever
|
| 2946 |
|
|
files are added to this directory, to ensure they are included in
|
| 2947 |
|
|
the distribution.
|
| 2948 |
|
|
|
| 2949 |
|
|
`test-code'
|
| 2950 |
|
|
These are all the test programs to be compiled on the host (each
|
| 2951 |
|
|
in its own directory). In general these are programs to support
|
| 2952 |
|
|
testing of the library, and build various programs linking in the
|
| 2953 |
|
|
library.
|
| 2954 |
|
|
|
| 2955 |
|
|
`test-code'
|
| 2956 |
|
|
These are all the test programs to be compiled with the OpenRISC
|
| 2957 |
|
|
tool chain to run with either standalone Or1ksim or the library.
|
| 2958 |
|
|
This directory includes its own `configure.ac', since it must set
|
| 2959 |
|
|
up a separate tool chain based on the target, not the host.
|
| 2960 |
|
|
|
| 2961 |
|
|
|
| 2962 |
|
|
To add a new test needs the following steps.
|
| 2963 |
|
|
|
| 2964 |
|
|
* Put new host C code in its own directory within `test-code'. Add
|
| 2965 |
|
|
the directory to the existing `Makefile.am' in the `test-code'
|
| 2966 |
|
|
directory and create a `Makefile.am' in the new directory to drive
|
| 2967 |
|
|
building the test program(s). Don't forget to add the new
|
| 2968 |
|
|
`Makefile' to the top level `configure.ac' so it gets generated.
|
| 2969 |
|
|
Not all tests require code here.
|
| 2970 |
|
|
|
| 2971 |
|
|
* Put new target C code in its own directory within
|
| 2972 |
|
|
`test-code-or1k'. Once again modify & create `Makefile.am'. this
|
| 2973 |
|
|
time though modify the `configure.ac' in the `test-code-or1k' so
|
| 2974 |
|
|
the `Makefile' gets generated. The existing programs provide
|
| 2975 |
|
|
examples to start from, including custom linker scripts where
|
| 2976 |
|
|
needed.
|
| 2977 |
|
|
|
| 2978 |
|
|
* Add one or more tests and configuration files to the relevant
|
| 2979 |
|
|
"tool" test directory. Use the existing tests as templates. They
|
| 2980 |
|
|
make heavy use of the `expect'/TCL procedures in the `config'
|
| 2981 |
|
|
directory to facilitate driving the tests.
|
| 2982 |
|
|
|
| 2983 |
|
|
|
| 2984 |
|
|
|
| 2985 |
19 |
jeremybenn |
File: or1ksim.info, Node: GNU Free Documentation License, Next: Index, Prev: Code Internals, Up: Top
|
| 2986 |
|
|
|
| 2987 |
|
|
7 GNU Free Documentation License
|
| 2988 |
|
|
********************************
|
| 2989 |
|
|
|
| 2990 |
|
|
Version 1.2, November 2002
|
| 2991 |
|
|
|
| 2992 |
|
|
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
|
| 2993 |
|
|
51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
| 2994 |
|
|
|
| 2995 |
|
|
Everyone is permitted to copy and distribute verbatim copies
|
| 2996 |
|
|
of this license document, but changing it is not allowed.
|
| 2997 |
|
|
|
| 2998 |
|
|
0. PREAMBLE
|
| 2999 |
|
|
|
| 3000 |
|
|
The purpose of this License is to make a manual, textbook, or other
|
| 3001 |
|
|
functional and useful document "free" in the sense of freedom: to
|
| 3002 |
|
|
assure everyone the effective freedom to copy and redistribute it,
|
| 3003 |
|
|
with or without modifying it, either commercially or
|
| 3004 |
|
|
noncommercially. Secondarily, this License preserves for the
|
| 3005 |
|
|
author and publisher a way to get credit for their work, while not
|
| 3006 |
|
|
being considered responsible for modifications made by others.
|
| 3007 |
|
|
|
| 3008 |
|
|
This License is a kind of "copyleft", which means that derivative
|
| 3009 |
|
|
works of the document must themselves be free in the same sense.
|
| 3010 |
|
|
It complements the GNU General Public License, which is a copyleft
|
| 3011 |
|
|
license designed for free software.
|
| 3012 |
|
|
|
| 3013 |
|
|
We have designed this License in order to use it for manuals for
|
| 3014 |
|
|
free software, because free software needs free documentation: a
|
| 3015 |
|
|
free program should come with manuals providing the same freedoms
|
| 3016 |
|
|
that the software does. But this License is not limited to
|
| 3017 |
|
|
software manuals; it can be used for any textual work, regardless
|
| 3018 |
|
|
of subject matter or whether it is published as a printed book.
|
| 3019 |
|
|
We recommend this License principally for works whose purpose is
|
| 3020 |
|
|
instruction or reference.
|
| 3021 |
|
|
|
| 3022 |
|
|
1. APPLICABILITY AND DEFINITIONS
|
| 3023 |
|
|
|
| 3024 |
|
|
This License applies to any manual or other work, in any medium,
|
| 3025 |
|
|
that contains a notice placed by the copyright holder saying it
|
| 3026 |
|
|
can be distributed under the terms of this License. Such a notice
|
| 3027 |
|
|
grants a world-wide, royalty-free license, unlimited in duration,
|
| 3028 |
|
|
to use that work under the conditions stated herein. The
|
| 3029 |
|
|
"Document", below, refers to any such manual or work. Any member
|
| 3030 |
|
|
of the public is a licensee, and is addressed as "you". You
|
| 3031 |
|
|
accept the license if you copy, modify or distribute the work in a
|
| 3032 |
|
|
way requiring permission under copyright law.
|
| 3033 |
|
|
|
| 3034 |
|
|
A "Modified Version" of the Document means any work containing the
|
| 3035 |
|
|
Document or a portion of it, either copied verbatim, or with
|
| 3036 |
|
|
modifications and/or translated into another language.
|
| 3037 |
|
|
|
| 3038 |
|
|
A "Secondary Section" is a named appendix or a front-matter section
|
| 3039 |
|
|
of the Document that deals exclusively with the relationship of the
|
| 3040 |
|
|
publishers or authors of the Document to the Document's overall
|
| 3041 |
|
|
subject (or to related matters) and contains nothing that could
|
| 3042 |
|
|
fall directly within that overall subject. (Thus, if the Document
|
| 3043 |
|
|
is in part a textbook of mathematics, a Secondary Section may not
|
| 3044 |
|
|
explain any mathematics.) The relationship could be a matter of
|
| 3045 |
|
|
historical connection with the subject or with related matters, or
|
| 3046 |
|
|
of legal, commercial, philosophical, ethical or political position
|
| 3047 |
|
|
regarding them.
|
| 3048 |
|
|
|
| 3049 |
|
|
The "Invariant Sections" are certain Secondary Sections whose
|
| 3050 |
|
|
titles are designated, as being those of Invariant Sections, in
|
| 3051 |
|
|
the notice that says that the Document is released under this
|
| 3052 |
|
|
License. If a section does not fit the above definition of
|
| 3053 |
|
|
Secondary then it is not allowed to be designated as Invariant.
|
| 3054 |
|
|
The Document may contain zero Invariant Sections. If the Document
|
| 3055 |
|
|
does not identify any Invariant Sections then there are none.
|
| 3056 |
|
|
|
| 3057 |
|
|
The "Cover Texts" are certain short passages of text that are
|
| 3058 |
|
|
listed, as Front-Cover Texts or Back-Cover Texts, in the notice
|
| 3059 |
|
|
that says that the Document is released under this License. A
|
| 3060 |
|
|
Front-Cover Text may be at most 5 words, and a Back-Cover Text may
|
| 3061 |
|
|
be at most 25 words.
|
| 3062 |
|
|
|
| 3063 |
|
|
A "Transparent" copy of the Document means a machine-readable copy,
|
| 3064 |
|
|
represented in a format whose specification is available to the
|
| 3065 |
|
|
general public, that is suitable for revising the document
|
| 3066 |
|
|
straightforwardly with generic text editors or (for images
|
| 3067 |
|
|
composed of pixels) generic paint programs or (for drawings) some
|
| 3068 |
|
|
widely available drawing editor, and that is suitable for input to
|
| 3069 |
|
|
text formatters or for automatic translation to a variety of
|
| 3070 |
|
|
formats suitable for input to text formatters. A copy made in an
|
| 3071 |
|
|
otherwise Transparent file format whose markup, or absence of
|
| 3072 |
|
|
markup, has been arranged to thwart or discourage subsequent
|
| 3073 |
|
|
modification by readers is not Transparent. An image format is
|
| 3074 |
|
|
not Transparent if used for any substantial amount of text. A
|
| 3075 |
|
|
copy that is not "Transparent" is called "Opaque".
|
| 3076 |
|
|
|
| 3077 |
|
|
Examples of suitable formats for Transparent copies include plain
|
| 3078 |
|
|
ASCII without markup, Texinfo input format, LaTeX input format,
|
| 3079 |
|
|
SGML or XML using a publicly available DTD, and
|
| 3080 |
|
|
standard-conforming simple HTML, PostScript or PDF designed for
|
| 3081 |
|
|
human modification. Examples of transparent image formats include
|
| 3082 |
|
|
PNG, XCF and JPG. Opaque formats include proprietary formats that
|
| 3083 |
|
|
can be read and edited only by proprietary word processors, SGML or
|
| 3084 |
|
|
XML for which the DTD and/or processing tools are not generally
|
| 3085 |
|
|
available, and the machine-generated HTML, PostScript or PDF
|
| 3086 |
|
|
produced by some word processors for output purposes only.
|
| 3087 |
|
|
|
| 3088 |
|
|
The "Title Page" means, for a printed book, the title page itself,
|
| 3089 |
|
|
plus such following pages as are needed to hold, legibly, the
|
| 3090 |
|
|
material this License requires to appear in the title page. For
|
| 3091 |
|
|
works in formats which do not have any title page as such, "Title
|
| 3092 |
|
|
Page" means the text near the most prominent appearance of the
|
| 3093 |
|
|
work's title, preceding the beginning of the body of the text.
|
| 3094 |
|
|
|
| 3095 |
|
|
A section "Entitled XYZ" means a named subunit of the Document
|
| 3096 |
|
|
whose title either is precisely XYZ or contains XYZ in parentheses
|
| 3097 |
|
|
following text that translates XYZ in another language. (Here XYZ
|
| 3098 |
|
|
stands for a specific section name mentioned below, such as
|
| 3099 |
|
|
"Acknowledgements", "Dedications", "Endorsements", or "History".)
|
| 3100 |
|
|
To "Preserve the Title" of such a section when you modify the
|
| 3101 |
|
|
Document means that it remains a section "Entitled XYZ" according
|
| 3102 |
|
|
to this definition.
|
| 3103 |
|
|
|
| 3104 |
|
|
The Document may include Warranty Disclaimers next to the notice
|
| 3105 |
|
|
which states that this License applies to the Document. These
|
| 3106 |
|
|
Warranty Disclaimers are considered to be included by reference in
|
| 3107 |
|
|
this License, but only as regards disclaiming warranties: any other
|
| 3108 |
|
|
implication that these Warranty Disclaimers may have is void and
|
| 3109 |
|
|
has no effect on the meaning of this License.
|
| 3110 |
|
|
|
| 3111 |
|
|
2. VERBATIM COPYING
|
| 3112 |
|
|
|
| 3113 |
|
|
You may copy and distribute the Document in any medium, either
|
| 3114 |
|
|
commercially or noncommercially, provided that this License, the
|
| 3115 |
|
|
copyright notices, and the license notice saying this License
|
| 3116 |
|
|
applies to the Document are reproduced in all copies, and that you
|
| 3117 |
|
|
add no other conditions whatsoever to those of this License. You
|
| 3118 |
|
|
may not use technical measures to obstruct or control the reading
|
| 3119 |
|
|
or further copying of the copies you make or distribute. However,
|
| 3120 |
|
|
you may accept compensation in exchange for copies. If you
|
| 3121 |
|
|
distribute a large enough number of copies you must also follow
|
| 3122 |
|
|
the conditions in section 3.
|
| 3123 |
|
|
|
| 3124 |
|
|
You may also lend copies, under the same conditions stated above,
|
| 3125 |
|
|
and you may publicly display copies.
|
| 3126 |
|
|
|
| 3127 |
|
|
3. COPYING IN QUANTITY
|
| 3128 |
|
|
|
| 3129 |
|
|
If you publish printed copies (or copies in media that commonly
|
| 3130 |
|
|
have printed covers) of the Document, numbering more than 100, and
|
| 3131 |
|
|
the Document's license notice requires Cover Texts, you must
|
| 3132 |
|
|
enclose the copies in covers that carry, clearly and legibly, all
|
| 3133 |
|
|
these Cover Texts: Front-Cover Texts on the front cover, and
|
| 3134 |
|
|
Back-Cover Texts on the back cover. Both covers must also clearly
|
| 3135 |
|
|
and legibly identify you as the publisher of these copies. The
|
| 3136 |
|
|
front cover must present the full title with all words of the
|
| 3137 |
|
|
title equally prominent and visible. You may add other material
|
| 3138 |
|
|
on the covers in addition. Copying with changes limited to the
|
| 3139 |
|
|
covers, as long as they preserve the title of the Document and
|
| 3140 |
|
|
satisfy these conditions, can be treated as verbatim copying in
|
| 3141 |
|
|
other respects.
|
| 3142 |
|
|
|
| 3143 |
|
|
If the required texts for either cover are too voluminous to fit
|
| 3144 |
|
|
legibly, you should put the first ones listed (as many as fit
|
| 3145 |
|
|
reasonably) on the actual cover, and continue the rest onto
|
| 3146 |
|
|
adjacent pages.
|
| 3147 |
|
|
|
| 3148 |
|
|
If you publish or distribute Opaque copies of the Document
|
| 3149 |
|
|
numbering more than 100, you must either include a
|
| 3150 |
|
|
machine-readable Transparent copy along with each Opaque copy, or
|
| 3151 |
|
|
state in or with each Opaque copy a computer-network location from
|
| 3152 |
|
|
which the general network-using public has access to download
|
| 3153 |
|
|
using public-standard network protocols a complete Transparent
|
| 3154 |
|
|
copy of the Document, free of added material. If you use the
|
| 3155 |
|
|
latter option, you must take reasonably prudent steps, when you
|
| 3156 |
|
|
begin distribution of Opaque copies in quantity, to ensure that
|
| 3157 |
|
|
this Transparent copy will remain thus accessible at the stated
|
| 3158 |
|
|
location until at least one year after the last time you
|
| 3159 |
|
|
distribute an Opaque copy (directly or through your agents or
|
| 3160 |
|
|
retailers) of that edition to the public.
|
| 3161 |
|
|
|
| 3162 |
|
|
It is requested, but not required, that you contact the authors of
|
| 3163 |
|
|
the Document well before redistributing any large number of
|
| 3164 |
|
|
copies, to give them a chance to provide you with an updated
|
| 3165 |
|
|
version of the Document.
|
| 3166 |
|
|
|
| 3167 |
|
|
4. MODIFICATIONS
|
| 3168 |
|
|
|
| 3169 |
|
|
You may copy and distribute a Modified Version of the Document
|
| 3170 |
|
|
under the conditions of sections 2 and 3 above, provided that you
|
| 3171 |
|
|
release the Modified Version under precisely this License, with
|
| 3172 |
|
|
the Modified Version filling the role of the Document, thus
|
| 3173 |
|
|
licensing distribution and modification of the Modified Version to
|
| 3174 |
|
|
whoever possesses a copy of it. In addition, you must do these
|
| 3175 |
|
|
things in the Modified Version:
|
| 3176 |
|
|
|
| 3177 |
|
|
A. Use in the Title Page (and on the covers, if any) a title
|
| 3178 |
|
|
distinct from that of the Document, and from those of
|
| 3179 |
|
|
previous versions (which should, if there were any, be listed
|
| 3180 |
|
|
in the History section of the Document). You may use the
|
| 3181 |
|
|
same title as a previous version if the original publisher of
|
| 3182 |
|
|
that version gives permission.
|
| 3183 |
|
|
|
| 3184 |
|
|
B. List on the Title Page, as authors, one or more persons or
|
| 3185 |
|
|
entities responsible for authorship of the modifications in
|
| 3186 |
|
|
the Modified Version, together with at least five of the
|
| 3187 |
|
|
principal authors of the Document (all of its principal
|
| 3188 |
|
|
authors, if it has fewer than five), unless they release you
|
| 3189 |
|
|
from this requirement.
|
| 3190 |
|
|
|
| 3191 |
|
|
C. State on the Title page the name of the publisher of the
|
| 3192 |
|
|
Modified Version, as the publisher.
|
| 3193 |
|
|
|
| 3194 |
|
|
D. Preserve all the copyright notices of the Document.
|
| 3195 |
|
|
|
| 3196 |
|
|
E. Add an appropriate copyright notice for your modifications
|
| 3197 |
|
|
adjacent to the other copyright notices.
|
| 3198 |
|
|
|
| 3199 |
|
|
F. Include, immediately after the copyright notices, a license
|
| 3200 |
|
|
notice giving the public permission to use the Modified
|
| 3201 |
|
|
Version under the terms of this License, in the form shown in
|
| 3202 |
|
|
the Addendum below.
|
| 3203 |
|
|
|
| 3204 |
|
|
G. Preserve in that license notice the full lists of Invariant
|
| 3205 |
|
|
Sections and required Cover Texts given in the Document's
|
| 3206 |
|
|
license notice.
|
| 3207 |
|
|
|
| 3208 |
|
|
H. Include an unaltered copy of this License.
|
| 3209 |
|
|
|
| 3210 |
|
|
I. Preserve the section Entitled "History", Preserve its Title,
|
| 3211 |
|
|
and add to it an item stating at least the title, year, new
|
| 3212 |
|
|
authors, and publisher of the Modified Version as given on
|
| 3213 |
|
|
the Title Page. If there is no section Entitled "History" in
|
| 3214 |
|
|
the Document, create one stating the title, year, authors,
|
| 3215 |
|
|
and publisher of the Document as given on its Title Page,
|
| 3216 |
|
|
then add an item describing the Modified Version as stated in
|
| 3217 |
|
|
the previous sentence.
|
| 3218 |
|
|
|
| 3219 |
|
|
J. Preserve the network location, if any, given in the Document
|
| 3220 |
|
|
for public access to a Transparent copy of the Document, and
|
| 3221 |
|
|
likewise the network locations given in the Document for
|
| 3222 |
|
|
previous versions it was based on. These may be placed in
|
| 3223 |
|
|
the "History" section. You may omit a network location for a
|
| 3224 |
|
|
work that was published at least four years before the
|
| 3225 |
|
|
Document itself, or if the original publisher of the version
|
| 3226 |
|
|
it refers to gives permission.
|
| 3227 |
|
|
|
| 3228 |
|
|
K. For any section Entitled "Acknowledgements" or "Dedications",
|
| 3229 |
|
|
Preserve the Title of the section, and preserve in the
|
| 3230 |
|
|
section all the substance and tone of each of the contributor
|
| 3231 |
|
|
acknowledgements and/or dedications given therein.
|
| 3232 |
|
|
|
| 3233 |
|
|
L. Preserve all the Invariant Sections of the Document,
|
| 3234 |
|
|
unaltered in their text and in their titles. Section numbers
|
| 3235 |
|
|
or the equivalent are not considered part of the section
|
| 3236 |
|
|
titles.
|
| 3237 |
|
|
|
| 3238 |
|
|
M. Delete any section Entitled "Endorsements". Such a section
|
| 3239 |
|
|
may not be included in the Modified Version.
|
| 3240 |
|
|
|
| 3241 |
|
|
N. Do not retitle any existing section to be Entitled
|
| 3242 |
|
|
"Endorsements" or to conflict in title with any Invariant
|
| 3243 |
|
|
Section.
|
| 3244 |
|
|
|
| 3245 |
|
|
O. Preserve any Warranty Disclaimers.
|
| 3246 |
|
|
|
| 3247 |
|
|
If the Modified Version includes new front-matter sections or
|
| 3248 |
|
|
appendices that qualify as Secondary Sections and contain no
|
| 3249 |
|
|
material copied from the Document, you may at your option
|
| 3250 |
|
|
designate some or all of these sections as invariant. To do this,
|
| 3251 |
|
|
add their titles to the list of Invariant Sections in the Modified
|
| 3252 |
|
|
Version's license notice. These titles must be distinct from any
|
| 3253 |
|
|
other section titles.
|
| 3254 |
|
|
|
| 3255 |
|
|
You may add a section Entitled "Endorsements", provided it contains
|
| 3256 |
|
|
nothing but endorsements of your Modified Version by various
|
| 3257 |
|
|
parties--for example, statements of peer review or that the text
|
| 3258 |
|
|
has been approved by an organization as the authoritative
|
| 3259 |
|
|
definition of a standard.
|
| 3260 |
|
|
|
| 3261 |
|
|
You may add a passage of up to five words as a Front-Cover Text,
|
| 3262 |
|
|
and a passage of up to 25 words as a Back-Cover Text, to the end
|
| 3263 |
|
|
of the list of Cover Texts in the Modified Version. Only one
|
| 3264 |
|
|
passage of Front-Cover Text and one of Back-Cover Text may be
|
| 3265 |
|
|
added by (or through arrangements made by) any one entity. If the
|
| 3266 |
|
|
Document already includes a cover text for the same cover,
|
| 3267 |
|
|
previously added by you or by arrangement made by the same entity
|
| 3268 |
|
|
you are acting on behalf of, you may not add another; but you may
|
| 3269 |
|
|
replace the old one, on explicit permission from the previous
|
| 3270 |
|
|
publisher that added the old one.
|
| 3271 |
|
|
|
| 3272 |
|
|
The author(s) and publisher(s) of the Document do not by this
|
| 3273 |
|
|
License give permission to use their names for publicity for or to
|
| 3274 |
|
|
assert or imply endorsement of any Modified Version.
|
| 3275 |
|
|
|
| 3276 |
|
|
5. COMBINING DOCUMENTS
|
| 3277 |
|
|
|
| 3278 |
|
|
You may combine the Document with other documents released under
|
| 3279 |
|
|
this License, under the terms defined in section 4 above for
|
| 3280 |
|
|
modified versions, provided that you include in the combination
|
| 3281 |
|
|
all of the Invariant Sections of all of the original documents,
|
| 3282 |
|
|
unmodified, and list them all as Invariant Sections of your
|
| 3283 |
|
|
combined work in its license notice, and that you preserve all
|
| 3284 |
|
|
their Warranty Disclaimers.
|
| 3285 |
|
|
|
| 3286 |
|
|
The combined work need only contain one copy of this License, and
|
| 3287 |
|
|
multiple identical Invariant Sections may be replaced with a single
|
| 3288 |
|
|
copy. If there are multiple Invariant Sections with the same name
|
| 3289 |
|
|
but different contents, make the title of each such section unique
|
| 3290 |
|
|
by adding at the end of it, in parentheses, the name of the
|
| 3291 |
|
|
original author or publisher of that section if known, or else a
|
| 3292 |
|
|
unique number. Make the same adjustment to the section titles in
|
| 3293 |
|
|
the list of Invariant Sections in the license notice of the
|
| 3294 |
|
|
combined work.
|
| 3295 |
|
|
|
| 3296 |
|
|
In the combination, you must combine any sections Entitled
|
| 3297 |
|
|
"History" in the various original documents, forming one section
|
| 3298 |
|
|
Entitled "History"; likewise combine any sections Entitled
|
| 3299 |
|
|
"Acknowledgements", and any sections Entitled "Dedications". You
|
| 3300 |
|
|
must delete all sections Entitled "Endorsements."
|
| 3301 |
|
|
|
| 3302 |
|
|
6. COLLECTIONS OF DOCUMENTS
|
| 3303 |
|
|
|
| 3304 |
|
|
You may make a collection consisting of the Document and other
|
| 3305 |
|
|
documents released under this License, and replace the individual
|
| 3306 |
|
|
copies of this License in the various documents with a single copy
|
| 3307 |
|
|
that is included in the collection, provided that you follow the
|
| 3308 |
|
|
rules of this License for verbatim copying of each of the
|
| 3309 |
|
|
documents in all other respects.
|
| 3310 |
|
|
|
| 3311 |
|
|
You may extract a single document from such a collection, and
|
| 3312 |
|
|
distribute it individually under this License, provided you insert
|
| 3313 |
|
|
a copy of this License into the extracted document, and follow
|
| 3314 |
|
|
this License in all other respects regarding verbatim copying of
|
| 3315 |
|
|
that document.
|
| 3316 |
|
|
|
| 3317 |
|
|
7. AGGREGATION WITH INDEPENDENT WORKS
|
| 3318 |
|
|
|
| 3319 |
|
|
A compilation of the Document or its derivatives with other
|
| 3320 |
|
|
separate and independent documents or works, in or on a volume of
|
| 3321 |
|
|
a storage or distribution medium, is called an "aggregate" if the
|
| 3322 |
|
|
copyright resulting from the compilation is not used to limit the
|
| 3323 |
|
|
legal rights of the compilation's users beyond what the individual
|
| 3324 |
|
|
works permit. When the Document is included in an aggregate, this
|
| 3325 |
|
|
License does not apply to the other works in the aggregate which
|
| 3326 |
|
|
are not themselves derivative works of the Document.
|
| 3327 |
|
|
|
| 3328 |
|
|
If the Cover Text requirement of section 3 is applicable to these
|
| 3329 |
|
|
copies of the Document, then if the Document is less than one half
|
| 3330 |
|
|
of the entire aggregate, the Document's Cover Texts may be placed
|
| 3331 |
|
|
on covers that bracket the Document within the aggregate, or the
|
| 3332 |
|
|
electronic equivalent of covers if the Document is in electronic
|
| 3333 |
|
|
form. Otherwise they must appear on printed covers that bracket
|
| 3334 |
|
|
the whole aggregate.
|
| 3335 |
|
|
|
| 3336 |
|
|
8. TRANSLATION
|
| 3337 |
|
|
|
| 3338 |
|
|
Translation is considered a kind of modification, so you may
|
| 3339 |
|
|
distribute translations of the Document under the terms of section
|
| 3340 |
|
|
4. Replacing Invariant Sections with translations requires special
|
| 3341 |
|
|
permission from their copyright holders, but you may include
|
| 3342 |
|
|
translations of some or all Invariant Sections in addition to the
|
| 3343 |
|
|
original versions of these Invariant Sections. You may include a
|
| 3344 |
|
|
translation of this License, and all the license notices in the
|
| 3345 |
|
|
Document, and any Warranty Disclaimers, provided that you also
|
| 3346 |
|
|
include the original English version of this License and the
|
| 3347 |
|
|
original versions of those notices and disclaimers. In case of a
|
| 3348 |
|
|
disagreement between the translation and the original version of
|
| 3349 |
|
|
this License or a notice or disclaimer, the original version will
|
| 3350 |
|
|
prevail.
|
| 3351 |
|
|
|
| 3352 |
|
|
If a section in the Document is Entitled "Acknowledgements",
|
| 3353 |
|
|
"Dedications", or "History", the requirement (section 4) to
|
| 3354 |
|
|
Preserve its Title (section 1) will typically require changing the
|
| 3355 |
|
|
actual title.
|
| 3356 |
|
|
|
| 3357 |
|
|
9. TERMINATION
|
| 3358 |
|
|
|
| 3359 |
|
|
You may not copy, modify, sublicense, or distribute the Document
|
| 3360 |
|
|
except as expressly provided for under this License. Any other
|
| 3361 |
|
|
attempt to copy, modify, sublicense or distribute the Document is
|
| 3362 |
|
|
void, and will automatically terminate your rights under this
|
| 3363 |
|
|
License. However, parties who have received copies, or rights,
|
| 3364 |
|
|
from you under this License will not have their licenses
|
| 3365 |
|
|
terminated so long as such parties remain in full compliance.
|
| 3366 |
|
|
|
| 3367 |
|
|
10. FUTURE REVISIONS OF THIS LICENSE
|
| 3368 |
|
|
|
| 3369 |
|
|
The Free Software Foundation may publish new, revised versions of
|
| 3370 |
|
|
the GNU Free Documentation License from time to time. Such new
|
| 3371 |
|
|
versions will be similar in spirit to the present version, but may
|
| 3372 |
|
|
differ in detail to address new problems or concerns. See
|
| 3373 |
|
|
`http://www.gnu.org/copyleft/'.
|
| 3374 |
|
|
|
| 3375 |
|
|
Each version of the License is given a distinguishing version
|
| 3376 |
|
|
number. If the Document specifies that a particular numbered
|
| 3377 |
|
|
version of this License "or any later version" applies to it, you
|
| 3378 |
|
|
have the option of following the terms and conditions either of
|
| 3379 |
|
|
that specified version or of any later version that has been
|
| 3380 |
|
|
published (not as a draft) by the Free Software Foundation. If
|
| 3381 |
|
|
the Document does not specify a version number of this License,
|
| 3382 |
|
|
you may choose any version ever published (not as a draft) by the
|
| 3383 |
|
|
Free Software Foundation.
|
| 3384 |
|
|
|
| 3385 |
|
|
ADDENDUM: How to use this License for your documents
|
| 3386 |
|
|
====================================================
|
| 3387 |
|
|
|
| 3388 |
|
|
To use this License in a document you have written, include a copy of
|
| 3389 |
|
|
the License in the document and put the following copyright and license
|
| 3390 |
|
|
notices just after the title page:
|
| 3391 |
|
|
|
| 3392 |
|
|
Copyright (C) YEAR YOUR NAME.
|
| 3393 |
|
|
Permission is granted to copy, distribute and/or modify this document
|
| 3394 |
|
|
under the terms of the GNU Free Documentation License, Version 1.2
|
| 3395 |
|
|
or any later version published by the Free Software Foundation;
|
| 3396 |
|
|
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
|
| 3397 |
|
|
Texts. A copy of the license is included in the section entitled ``GNU
|
| 3398 |
|
|
Free Documentation License''.
|
| 3399 |
|
|
|
| 3400 |
|
|
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
|
| 3401 |
|
|
replace the "with...Texts." line with this:
|
| 3402 |
|
|
|
| 3403 |
|
|
with the Invariant Sections being LIST THEIR TITLES, with
|
| 3404 |
|
|
the Front-Cover Texts being LIST, and with the Back-Cover Texts
|
| 3405 |
|
|
being LIST.
|
| 3406 |
|
|
|
| 3407 |
|
|
If you have Invariant Sections without Cover Texts, or some other
|
| 3408 |
|
|
combination of the three, merge those two alternatives to suit the
|
| 3409 |
|
|
situation.
|
| 3410 |
|
|
|
| 3411 |
|
|
If your document contains nontrivial examples of program code, we
|
| 3412 |
|
|
recommend releasing these examples in parallel under your choice of
|
| 3413 |
|
|
free software license, such as the GNU General Public License, to
|
| 3414 |
|
|
permit their use in free software.
|
| 3415 |
|
|
|
| 3416 |
|
|
|
| 3417 |
|
|
File: or1ksim.info, Node: Index, Prev: GNU Free Documentation License, Up: Top
|
| 3418 |
|
|
|
| 3419 |
|
|
Index
|
| 3420 |
|
|
*****
|
| 3421 |
|
|
|
| 3422 |
|
|
|
| 3423 |
|
|
* Menu:
|
| 3424 |
|
|
|
| 3425 |
|
|
* --cumulative: Profiling Utility. (line 26)
|
| 3426 |
|
|
* --debug-config: Standalone Simulator.
|
| 3427 |
|
|
(line 48)
|
| 3428 |
82 |
jeremybenn |
* --disable-all-tests: Configuring the Build.
|
| 3429 |
112 |
jeremybenn |
(line 110)
|
| 3430 |
19 |
jeremybenn |
* --disable-arith-flag: Configuring the Build.
|
| 3431 |
112 |
jeremybenn |
(line 75)
|
| 3432 |
19 |
jeremybenn |
* --disable-debug: Configuring the Build.
|
| 3433 |
112 |
jeremybenn |
(line 103)
|
| 3434 |
19 |
jeremybenn |
* --disable-ethphy: Configuring the Build.
|
| 3435 |
104 |
jeremybenn |
(line 59)
|
| 3436 |
19 |
jeremybenn |
* --disable-ov-flag: Configuring the Build.
|
| 3437 |
112 |
jeremybenn |
(line 123)
|
| 3438 |
19 |
jeremybenn |
* --disable-profiling: Configuring the Build.
|
| 3439 |
104 |
jeremybenn |
(line 30)
|
| 3440 |
19 |
jeremybenn |
* --disable-range-stats: Configuring the Build.
|
| 3441 |
104 |
jeremybenn |
(line 69)
|
| 3442 |
82 |
jeremybenn |
* --enable-all-tests: Configuring the Build.
|
| 3443 |
112 |
jeremybenn |
(line 109)
|
| 3444 |
19 |
jeremybenn |
* --enable-arith-flag: Configuring the Build.
|
| 3445 |
112 |
jeremybenn |
(line 74)
|
| 3446 |
19 |
jeremybenn |
* --enable-debug: Configuring the Build.
|
| 3447 |
112 |
jeremybenn |
(line 102)
|
| 3448 |
19 |
jeremybenn |
* --enable-ethphy: Configuring the Build.
|
| 3449 |
104 |
jeremybenn |
(line 58)
|
| 3450 |
19 |
jeremybenn |
* --enable-execution: Configuring the Build.
|
| 3451 |
104 |
jeremybenn |
(line 37)
|
| 3452 |
19 |
jeremybenn |
* --enable-mprofile: Standalone Simulator.
|
| 3453 |
|
|
(line 77)
|
| 3454 |
|
|
* --enable-ov-flag: Configuring the Build.
|
| 3455 |
112 |
jeremybenn |
(line 122)
|
| 3456 |
19 |
jeremybenn |
* --enable-profile: Standalone Simulator.
|
| 3457 |
|
|
(line 74)
|
| 3458 |
|
|
* --enable-profiling: Configuring the Build.
|
| 3459 |
104 |
jeremybenn |
(line 29)
|
| 3460 |
19 |
jeremybenn |
* --enable-range-stats: Configuring the Build.
|
| 3461 |
104 |
jeremybenn |
(line 68)
|
| 3462 |
19 |
jeremybenn |
* --file: Standalone Simulator.
|
| 3463 |
|
|
(line 24)
|
| 3464 |
|
|
* --filename: Memory Profiling Utility.
|
| 3465 |
|
|
(line 51)
|
| 3466 |
|
|
* --generate: Profiling Utility. (line 34)
|
| 3467 |
|
|
* --group: Memory Profiling Utility.
|
| 3468 |
|
|
(line 47)
|
| 3469 |
|
|
* --help: Standalone Simulator.
|
| 3470 |
|
|
(line 20)
|
| 3471 |
|
|
* --help (memory profiling utility): Memory Profiling Utility.
|
| 3472 |
|
|
(line 22)
|
| 3473 |
|
|
* --help (profiling utility): Profiling Utility. (line 22)
|
| 3474 |
|
|
* --interactive: Standalone Simulator.
|
| 3475 |
|
|
(line 54)
|
| 3476 |
|
|
* --mode: Memory Profiling Utility.
|
| 3477 |
|
|
(line 26)
|
| 3478 |
|
|
* --nosrv: Standalone Simulator.
|
| 3479 |
|
|
(line 32)
|
| 3480 |
|
|
* --quiet: Profiling Utility. (line 30)
|
| 3481 |
|
|
* --srv: Standalone Simulator.
|
| 3482 |
|
|
(line 40)
|
| 3483 |
|
|
* --strict-npc: Standalone Simulator.
|
| 3484 |
|
|
(line 57)
|
| 3485 |
|
|
* --version: Standalone Simulator.
|
| 3486 |
|
|
(line 16)
|
| 3487 |
|
|
* --version (memory profiling utility): Memory Profiling Utility.
|
| 3488 |
|
|
(line 17)
|
| 3489 |
|
|
* --version (profiling utility): Profiling Utility. (line 17)
|
| 3490 |
|
|
* -c: Profiling Utility. (line 26)
|
| 3491 |
|
|
* -d: Standalone Simulator.
|
| 3492 |
|
|
(line 48)
|
| 3493 |
|
|
* -f <1>: Memory Profiling Utility.
|
| 3494 |
|
|
(line 51)
|
| 3495 |
|
|
* -f: Standalone Simulator.
|
| 3496 |
|
|
(line 24)
|
| 3497 |
|
|
* -g <1>: Memory Profiling Utility.
|
| 3498 |
|
|
(line 47)
|
| 3499 |
|
|
* -g: Profiling Utility. (line 34)
|
| 3500 |
|
|
* -h: Standalone Simulator.
|
| 3501 |
|
|
(line 20)
|
| 3502 |
|
|
* -h (memory profiling utility): Memory Profiling Utility.
|
| 3503 |
|
|
(line 22)
|
| 3504 |
|
|
* -h (profiling utility): Profiling Utility. (line 22)
|
| 3505 |
|
|
* -i: Standalone Simulator.
|
| 3506 |
|
|
(line 54)
|
| 3507 |
|
|
* -m: Memory Profiling Utility.
|
| 3508 |
|
|
(line 26)
|
| 3509 |
|
|
* -q: Profiling Utility. (line 30)
|
| 3510 |
|
|
* -v: Standalone Simulator.
|
| 3511 |
|
|
(line 16)
|
| 3512 |
|
|
* -v (memory profiling utility): Memory Profiling Utility.
|
| 3513 |
|
|
(line 17)
|
| 3514 |
|
|
* -v (profiling utility): Profiling Utility. (line 17)
|
| 3515 |
|
|
* 0x00 UART VAPI sub-command (UART verification): Verification API.
|
| 3516 |
|
|
(line 49)
|
| 3517 |
|
|
* 0x01 UART VAPI sub-command (UART verification): Verification API.
|
| 3518 |
|
|
(line 55)
|
| 3519 |
|
|
* 0x02 UART VAPI sub-command (UART verification): Verification API.
|
| 3520 |
|
|
(line 59)
|
| 3521 |
|
|
* 0x03 UART VAPI sub-command (UART verification): Verification API.
|
| 3522 |
|
|
(line 62)
|
| 3523 |
|
|
* 0x04 UART VAPI sub-command (UART verification): Verification API.
|
| 3524 |
|
|
(line 66)
|
| 3525 |
|
|
* 16550 (UART configuration): UART Configuration. (line 73)
|
| 3526 |
82 |
jeremybenn |
* all tests enabled: Configuring the Build.
|
| 3527 |
112 |
jeremybenn |
(line 110)
|
| 3528 |
19 |
jeremybenn |
* Argtable2 debugging: Configuring the Build.
|
| 3529 |
112 |
jeremybenn |
(line 103)
|
| 3530 |
19 |
jeremybenn |
* ATA/ATAPI configuration: Disc Interface Configuration.
|
| 3531 |
|
|
(line 6)
|
| 3532 |
|
|
* ATA/ATAPI device configuration: Disc Interface Configuration.
|
| 3533 |
|
|
(line 88)
|
| 3534 |
|
|
* base_vapi_id (GPIO configuration - deprecated): GPIO Configuration.
|
| 3535 |
|
|
(line 32)
|
| 3536 |
|
|
* baseaddr (ATA/ATAPI configuration): Disc Interface Configuration.
|
| 3537 |
|
|
(line 22)
|
| 3538 |
|
|
* baseaddr (DMA configuration): DMA Configuration. (line 24)
|
| 3539 |
|
|
* baseaddr (Ethernet configuration): Ethernet Configuration.
|
| 3540 |
|
|
(line 22)
|
| 3541 |
|
|
* baseaddr (frame buffer configuration): Frame Buffer Configuration.
|
| 3542 |
|
|
(line 20)
|
| 3543 |
|
|
* baseaddr (generic peripheral configuration): Generic Peripheral Configuration.
|
| 3544 |
|
|
(line 22)
|
| 3545 |
|
|
* baseaddr (GPIO configuration): GPIO Configuration. (line 21)
|
| 3546 |
|
|
* baseaddr (keyboard configuration): Keyboard Configuration.
|
| 3547 |
|
|
(line 36)
|
| 3548 |
|
|
* baseaddr (memory configuration): Memory Configuration.
|
| 3549 |
98 |
jeremybenn |
(line 87)
|
| 3550 |
19 |
jeremybenn |
* baseaddr (memory controller configuration): Memory Controller Configuration.
|
| 3551 |
98 |
jeremybenn |
(line 46)
|
| 3552 |
19 |
jeremybenn |
* baseaddr (UART configuration): UART Configuration. (line 22)
|
| 3553 |
|
|
* baseaddr (VGA configuration): Display Interface Configuration.
|
| 3554 |
|
|
(line 26)
|
| 3555 |
|
|
* blocksize (cache configuration): Cache Configuration. (line 29)
|
| 3556 |
|
|
* BPB configuration: Branch Prediction Configuration.
|
| 3557 |
|
|
(line 6)
|
| 3558 |
|
|
* branch prediction configuration: Branch Prediction Configuration.
|
| 3559 |
|
|
(line 6)
|
| 3560 |
|
|
* break (Interactive CLI): Interactive Command Line.
|
| 3561 |
|
|
(line 57)
|
| 3562 |
|
|
* breakpoint list (Interactive CLI): Interactive Command Line.
|
| 3563 |
|
|
(line 60)
|
| 3564 |
|
|
* breakpoint set/clear (Interactive CLI): Interactive Command Line.
|
| 3565 |
|
|
(line 57)
|
| 3566 |
|
|
* breaks (Interactive CLI): Interactive Command Line.
|
| 3567 |
|
|
(line 60)
|
| 3568 |
|
|
* btic (branch prediction configuration): Branch Prediction Configuration.
|
| 3569 |
|
|
(line 19)
|
| 3570 |
|
|
* byte_enabled (generic peripheral configuration): Generic Peripheral Configuration.
|
| 3571 |
|
|
(line 48)
|
| 3572 |
|
|
* cache configuration: Cache Configuration. (line 6)
|
| 3573 |
|
|
* calling_convention (CUC configuration): CUC Configuration. (line 34)
|
| 3574 |
|
|
* ce (memory configuration): Memory Configuration.
|
| 3575 |
98 |
jeremybenn |
(line 117)
|
| 3576 |
19 |
jeremybenn |
* cfgr (CPU configuration): CPU Configuration. (line 47)
|
| 3577 |
|
|
* channel (UART configuration): UART Configuration. (line 29)
|
| 3578 |
|
|
* clear breakpoint (Interactive CLI): Interactive Command Line.
|
| 3579 |
|
|
(line 57)
|
| 3580 |
82 |
jeremybenn |
* clkcycle (simulator configuration): Simulator Behavior. (line 103)
|
| 3581 |
19 |
jeremybenn |
* cm (Interactive CLI): Interactive Command Line.
|
| 3582 |
|
|
(line 54)
|
| 3583 |
|
|
* command line for Or1ksim standalone use: Standalone Simulator.
|
| 3584 |
|
|
(line 6)
|
| 3585 |
|
|
* complex model: Configuring the Build.
|
| 3586 |
104 |
jeremybenn |
(line 37)
|
| 3587 |
19 |
jeremybenn |
* config: Global Data Structures.
|
| 3588 |
|
|
(line 7)
|
| 3589 |
|
|
* config.bpb: Global Data Structures.
|
| 3590 |
|
|
(line 37)
|
| 3591 |
|
|
* config.cpu: Global Data Structures.
|
| 3592 |
|
|
(line 22)
|
| 3593 |
|
|
* config.cuc: Global Data Structures.
|
| 3594 |
|
|
(line 18)
|
| 3595 |
|
|
* config.dc: Global Data Structures.
|
| 3596 |
|
|
(line 25)
|
| 3597 |
|
|
* config.debug: Global Data Structures.
|
| 3598 |
|
|
(line 40)
|
| 3599 |
|
|
* config.pic: Global Data Structures.
|
| 3600 |
|
|
(line 33)
|
| 3601 |
|
|
* config.pm: Global Data Structures.
|
| 3602 |
|
|
(line 29)
|
| 3603 |
|
|
* config.sim: Global Data Structures.
|
| 3604 |
|
|
(line 11)
|
| 3605 |
|
|
* config.vapi: Global Data Structures.
|
| 3606 |
|
|
(line 14)
|
| 3607 |
|
|
* configuration dynamic structure: Global Data Structures.
|
| 3608 |
|
|
(line 49)
|
| 3609 |
|
|
* configuration file structure: Configuration File Format.
|
| 3610 |
|
|
(line 6)
|
| 3611 |
|
|
* configuration global structure: Global Data Structures.
|
| 3612 |
|
|
(line 7)
|
| 3613 |
|
|
* configuration info (Interactive CLI): Interactive Command Line.
|
| 3614 |
|
|
(line 119)
|
| 3615 |
|
|
* configuration of generic peripherals: Generic Peripheral Configuration.
|
| 3616 |
|
|
(line 6)
|
| 3617 |
|
|
* configuration parameter setting (Interactive CLI): Interactive Command Line.
|
| 3618 |
|
|
(line 146)
|
| 3619 |
|
|
* configuring branch prediction: Branch Prediction Configuration.
|
| 3620 |
|
|
(line 6)
|
| 3621 |
|
|
* configuring data & instruction caches: Cache Configuration. (line 6)
|
| 3622 |
|
|
* configuring data & instruction MMUs: Memory Management Configuration.
|
| 3623 |
|
|
(line 6)
|
| 3624 |
|
|
* configuring DMA: DMA Configuration. (line 6)
|
| 3625 |
|
|
* configuring memory: Memory Configuration.
|
| 3626 |
|
|
(line 6)
|
| 3627 |
|
|
* configuring Or1ksim: Configuration. (line 6)
|
| 3628 |
|
|
* configuring power management: Power Management Configuration.
|
| 3629 |
|
|
(line 6)
|
| 3630 |
|
|
* configuring the ATA/ATAPI interfaces: Disc Interface Configuration.
|
| 3631 |
|
|
(line 6)
|
| 3632 |
|
|
* configuring the behavior of Or1ksim: Simulator Behavior. (line 6)
|
| 3633 |
|
|
* configuring the CPU: CPU Configuration. (line 6)
|
| 3634 |
|
|
* configuring the Custom Unit Compiler (CUC): CUC Configuration.
|
| 3635 |
|
|
(line 6)
|
| 3636 |
|
|
* configuring the debug unit and interface to external debuggers: Debug Interface Configuration.
|
| 3637 |
|
|
(line 6)
|
| 3638 |
|
|
* configuring the Ethernet interface: Ethernet Configuration.
|
| 3639 |
|
|
(line 6)
|
| 3640 |
|
|
* configuring the frame buffer: Frame Buffer Configuration.
|
| 3641 |
|
|
(line 6)
|
| 3642 |
|
|
* configuring the GPIO: GPIO Configuration. (line 6)
|
| 3643 |
|
|
* configuring the interrupt controller: Interrupt Configuration.
|
| 3644 |
|
|
(line 6)
|
| 3645 |
|
|
* configuring the keyboard interface: Keyboard Configuration.
|
| 3646 |
|
|
(line 6)
|
| 3647 |
|
|
* configuring the memory controller: Memory Controller Configuration.
|
| 3648 |
|
|
(line 6)
|
| 3649 |
|
|
* configuring the processor: CPU Configuration. (line 6)
|
| 3650 |
|
|
* configuring the PS2 interface: Keyboard Configuration.
|
| 3651 |
|
|
(line 6)
|
| 3652 |
|
|
* configuring the UART: UART Configuration. (line 6)
|
| 3653 |
|
|
* configuring the Verification API (VAPI): Verification API Configuration.
|
| 3654 |
|
|
(line 6)
|
| 3655 |
|
|
* configuring the VGA interface: Display Interface Configuration.
|
| 3656 |
|
|
(line 6)
|
| 3657 |
|
|
* copying memory (Interactive CLI): Interactive Command Line.
|
| 3658 |
|
|
(line 54)
|
| 3659 |
|
|
* CPU configuration: CPU Configuration. (line 6)
|
| 3660 |
|
|
* CUC configuration: CUC Configuration. (line 6)
|
| 3661 |
|
|
* Custom Unit Compiler (Interactive CLI): Interactive Command Line.
|
| 3662 |
|
|
(line 162)
|
| 3663 |
|
|
* Custom Unit Compiler Configuration: CUC Configuration. (line 6)
|
| 3664 |
|
|
* data cache configuration: Cache Configuration. (line 6)
|
| 3665 |
|
|
* data MMU configuration: Memory Management Configuration.
|
| 3666 |
|
|
(line 6)
|
| 3667 |
|
|
* DCGE (power management register): Power Management Configuration.
|
| 3668 |
|
|
(line 21)
|
| 3669 |
|
|
* debug (Interactive CLI): Interactive Command Line.
|
| 3670 |
|
|
(line 151)
|
| 3671 |
|
|
* debug (simulator configuration): Simulator Behavior. (line 13)
|
| 3672 |
|
|
* debug channel toggle (Interactive CLI): Interactive Command Line.
|
| 3673 |
|
|
(line 141)
|
| 3674 |
|
|
* debug interface configuration: Debug Interface Configuration.
|
| 3675 |
|
|
(line 6)
|
| 3676 |
|
|
* debug mode toggle (Interactive CLI): Interactive Command Line.
|
| 3677 |
|
|
(line 151)
|
| 3678 |
|
|
* debug unit configuration: Debug Interface Configuration.
|
| 3679 |
|
|
(line 6)
|
| 3680 |
|
|
* Debug Unit verification (VAPI): Verification API. (line 34)
|
| 3681 |
|
|
* debugging enabled (Argtable2): Configuring the Build.
|
| 3682 |
112 |
jeremybenn |
(line 103)
|
| 3683 |
104 |
jeremybenn |
* DejaGnu board configurations: Regression Testing. (line 35)
|
| 3684 |
|
|
* DejaGnu configuration: Regression Testing. (line 21)
|
| 3685 |
|
|
* DejaGNU tests directories: Regression Testing. (line 50)
|
| 3686 |
|
|
* DejaGnu tool specific configuration: Regression Testing. (line 39)
|
| 3687 |
19 |
jeremybenn |
* delayr (memory configuration): Memory Configuration.
|
| 3688 |
98 |
jeremybenn |
(line 137)
|
| 3689 |
19 |
jeremybenn |
* delayw (memory configuration): Memory Configuration.
|
| 3690 |
98 |
jeremybenn |
(line 143)
|
| 3691 |
|
|
* dependstats (CPU configuration): CPU Configuration. (line 89)
|
| 3692 |
19 |
jeremybenn |
* dev_id (ATA/ATAPI configuration): Disc Interface Configuration.
|
| 3693 |
|
|
(line 36)
|
| 3694 |
|
|
* disassemble (Interactive CLI): Interactive Command Line.
|
| 3695 |
|
|
(line 41)
|
| 3696 |
|
|
* disc interface configuration: Disc Interface Configuration.
|
| 3697 |
|
|
(line 6)
|
| 3698 |
|
|
* disc interface device configuration: Disc Interface Configuration.
|
| 3699 |
|
|
(line 88)
|
| 3700 |
|
|
* display interface configuration: Display Interface Configuration.
|
| 3701 |
|
|
(line 6)
|
| 3702 |
|
|
* displaying memory (Interactive CLI): Interactive Command Line.
|
| 3703 |
|
|
(line 31)
|
| 3704 |
|
|
* displaying registers (Interactive CLI): Interactive Command Line.
|
| 3705 |
|
|
(line 14)
|
| 3706 |
|
|
* dm (Interactive CLI): Interactive Command Line.
|
| 3707 |
|
|
(line 31)
|
| 3708 |
|
|
* dma (Ethernet configuration): Ethernet Configuration.
|
| 3709 |
|
|
(line 33)
|
| 3710 |
|
|
* DMA configuration: DMA Configuration. (line 6)
|
| 3711 |
|
|
* DMA verification (VAPI): Verification API. (line 73)
|
| 3712 |
|
|
* dma_mode0_td (ATA/ATAPI configuration): Disc Interface Configuration.
|
| 3713 |
|
|
(line 70)
|
| 3714 |
|
|
* dma_mode0_teoc (ATA/ATAPI configuration): Disc Interface Configuration.
|
| 3715 |
|
|
(line 71)
|
| 3716 |
|
|
* dma_mode0_tm (ATA/ATAPI configuration): Disc Interface Configuration.
|
| 3717 |
|
|
(line 69)
|
| 3718 |
|
|
* DME (power management register): Power Management Configuration.
|
| 3719 |
|
|
(line 15)
|
| 3720 |
|
|
* DMMU configuration: Memory Management Configuration.
|
| 3721 |
|
|
(line 6)
|
| 3722 |
|
|
* doze mode (power management register): Power Management Configuration.
|
| 3723 |
|
|
(line 15)
|
| 3724 |
|
|
* dv (Interactive CLI): Interactive Command Line.
|
| 3725 |
|
|
(line 124)
|
| 3726 |
|
|
* dynamic clock gating (power management register): Power Management Configuration.
|
| 3727 |
|
|
(line 21)
|
| 3728 |
|
|
* dynamic model: Configuring the Build.
|
| 3729 |
104 |
jeremybenn |
(line 37)
|
| 3730 |
19 |
jeremybenn |
* dynamic ports, use of: Verification API Configuration.
|
| 3731 |
|
|
(line 23)
|
| 3732 |
|
|
* edge_trigger (interrupt controller): Interrupt Configuration.
|
| 3733 |
|
|
(line 16)
|
| 3734 |
|
|
* enable_bursts (CUC configuration): CUC Configuration. (line 38)
|
| 3735 |
|
|
* enabled (ATA/ATAPI configuration): Disc Interface Configuration.
|
| 3736 |
|
|
(line 18)
|
| 3737 |
|
|
* enabled (branch prediction configuration): Branch Prediction Configuration.
|
| 3738 |
|
|
(line 15)
|
| 3739 |
|
|
* enabled (cache configuration): Cache Configuration. (line 11)
|
| 3740 |
|
|
* enabled (debug interface configuration): Debug Interface Configuration.
|
| 3741 |
|
|
(line 11)
|
| 3742 |
|
|
* enabled (DMA configuration): DMA Configuration. (line 20)
|
| 3743 |
|
|
* enabled (Ethernet configuration): Ethernet Configuration.
|
| 3744 |
|
|
(line 18)
|
| 3745 |
|
|
* enabled (frame buffer configuration): Frame Buffer Configuration.
|
| 3746 |
|
|
(line 16)
|
| 3747 |
|
|
* enabled (generic peripheral configuration): Generic Peripheral Configuration.
|
| 3748 |
|
|
(line 18)
|
| 3749 |
|
|
* enabled (GPIO configuration): GPIO Configuration. (line 17)
|
| 3750 |
|
|
* enabled (interrupt controller): Interrupt Configuration.
|
| 3751 |
|
|
(line 12)
|
| 3752 |
|
|
* enabled (keyboard configuration): Keyboard Configuration.
|
| 3753 |
|
|
(line 32)
|
| 3754 |
|
|
* enabled (memory controller configuration): Memory Controller Configuration.
|
| 3755 |
98 |
jeremybenn |
(line 35)
|
| 3756 |
19 |
jeremybenn |
* enabled (MMU configuration): Memory Management Configuration.
|
| 3757 |
|
|
(line 12)
|
| 3758 |
|
|
* enabled (power management configuration): Power Management Configuration.
|
| 3759 |
|
|
(line 35)
|
| 3760 |
|
|
* enabled (UART configuration): UART Configuration. (line 18)
|
| 3761 |
|
|
* enabled (verification API configuration): Verification API Configuration.
|
| 3762 |
|
|
(line 15)
|
| 3763 |
|
|
* enabled (VGA configuration): Display Interface Configuration.
|
| 3764 |
|
|
(line 22)
|
| 3765 |
|
|
* enabling Ethernet via socket: Configuring the Build.
|
| 3766 |
104 |
jeremybenn |
(line 59)
|
| 3767 |
19 |
jeremybenn |
* entrysize (MMU configuration): Memory Management Configuration.
|
| 3768 |
|
|
(line 32)
|
| 3769 |
|
|
* ETH_VAPI_CTRL (Ethernet verification): Verification API. (line 86)
|
| 3770 |
|
|
* ETH_VAPI_DATA (Ethernet verification): Verification API. (line 84)
|
| 3771 |
|
|
* Ethernet configuration: Ethernet Configuration.
|
| 3772 |
|
|
(line 6)
|
| 3773 |
|
|
* Ethernet verification (VAPI): Verification API. (line 78)
|
| 3774 |
|
|
* Ethernet via socket, enabling: Configuring the Build.
|
| 3775 |
104 |
jeremybenn |
(line 59)
|
| 3776 |
82 |
jeremybenn |
* exe_log (simulator configuration): Simulator Behavior. (line 49)
|
| 3777 |
|
|
* exe_log_end (simulator configuration): Simulator Behavior. (line 89)
|
| 3778 |
|
|
* exe_log_file (simulator configuration): Simulator Behavior. (line 97)
|
| 3779 |
19 |
jeremybenn |
* exe_log_fn (simulator configuration - deprecated): Simulator Behavior.
|
| 3780 |
82 |
jeremybenn |
(line 97)
|
| 3781 |
19 |
jeremybenn |
* exe_log_marker (simulator configuration): Simulator Behavior.
|
| 3782 |
82 |
jeremybenn |
(line 93)
|
| 3783 |
19 |
jeremybenn |
* exe_log_start (simulator configuration): Simulator Behavior.
|
| 3784 |
82 |
jeremybenn |
(line 86)
|
| 3785 |
|
|
* exe_log_type (simulator configuration): Simulator Behavior. (line 55)
|
| 3786 |
19 |
jeremybenn |
* exe_log_type=default (simulator configuration): Simulator Behavior.
|
| 3787 |
82 |
jeremybenn |
(line 58)
|
| 3788 |
19 |
jeremybenn |
* exe_log_type=hardware (simulator configuration): Simulator Behavior.
|
| 3789 |
82 |
jeremybenn |
(line 62)
|
| 3790 |
19 |
jeremybenn |
* exe_log_type=simple (simulator configuration): Simulator Behavior.
|
| 3791 |
82 |
jeremybenn |
(line 69)
|
| 3792 |
19 |
jeremybenn |
* exe_log_type=software (simulator configuration): Simulator Behavior.
|
| 3793 |
82 |
jeremybenn |
(line 74)
|
| 3794 |
19 |
jeremybenn |
* executing code (Interactive CLI): Interactive Command Line.
|
| 3795 |
|
|
(line 23)
|
| 3796 |
|
|
* execution history (Interactive CLI): Interactive Command Line.
|
| 3797 |
|
|
(line 67)
|
| 3798 |
|
|
* file (ATA/ATAPI device configuration): Disc Interface Configuration.
|
| 3799 |
|
|
(line 104)
|
| 3800 |
|
|
* file (keyboard configuration): Keyboard Configuration.
|
| 3801 |
|
|
(line 51)
|
| 3802 |
|
|
* filename (frame buffer configuration - deprecated): Frame Buffer Configuration.
|
| 3803 |
82 |
jeremybenn |
(line 36)
|
| 3804 |
19 |
jeremybenn |
* filename (VGA configuration - deprecated): Display Interface Configuration.
|
| 3805 |
|
|
(line 47)
|
| 3806 |
|
|
* firmware (ATA/ATAPI device configuration): Disc Interface Configuration.
|
| 3807 |
|
|
(line 117)
|
| 3808 |
|
|
* flag setting by instructions: Configuring the Build.
|
| 3809 |
112 |
jeremybenn |
(line 75)
|
| 3810 |
104 |
jeremybenn |
* floating point multiply and add: Known Issues. (line 56)
|
| 3811 |
|
|
* floating point support: Known Issues. (line 42)
|
| 3812 |
19 |
jeremybenn |
* frame buffer configuration: Frame Buffer Configuration.
|
| 3813 |
|
|
(line 6)
|
| 3814 |
|
|
* gdb_enabled (debug interface configuration): Debug Interface Configuration.
|
| 3815 |
|
|
(line 47)
|
| 3816 |
|
|
* generic peripheral configuration: Generic Peripheral Configuration.
|
| 3817 |
|
|
(line 6)
|
| 3818 |
|
|
* GPIO configuration: GPIO Configuration. (line 6)
|
| 3819 |
|
|
* GPIO verification (VAPI): Verification API. (line 88)
|
| 3820 |
|
|
* GPIO_VAPI_AUX (GPIO verification): Verification API. (line 100)
|
| 3821 |
|
|
* GPIO_VAPI_CLOCK (GPIO verification): Verification API. (line 103)
|
| 3822 |
|
|
* GPIO_VAPI_CTRL (GPIO verification): Verification API. (line 119)
|
| 3823 |
|
|
* GPIO_VAPI_DATA (GPIO verification): Verification API. (line 97)
|
| 3824 |
|
|
* GPIO_VAPI_INTE (GPIO verification): Verification API. (line 110)
|
| 3825 |
|
|
* GPIO_VAPI_PTRIG (GPIO verification): Verification API. (line 113)
|
| 3826 |
|
|
* GPIO_VAPI_RGPIO (GPIO verification): Verification API. (line 107)
|
| 3827 |
100 |
julius |
* hardfloat (CPU configuration): CPU Configuration. (line 110)
|
| 3828 |
98 |
jeremybenn |
* hazards (CPU configuration): CPU Configuration. (line 74)
|
| 3829 |
19 |
jeremybenn |
* heads (ATA/ATAPI device configuration): Disc Interface Configuration.
|
| 3830 |
|
|
(line 121)
|
| 3831 |
|
|
* help (Interactive CLI): Interactive Command Line.
|
| 3832 |
|
|
(line 170)
|
| 3833 |
|
|
* hexadecimal memory dump (Interactive CLI): Interactive Command Line.
|
| 3834 |
|
|
(line 133)
|
| 3835 |
|
|
* hide_device_id (verification API configuration): Verification API Configuration.
|
| 3836 |
|
|
(line 36)
|
| 3837 |
|
|
* hist (Interactive CLI): Interactive Command Line.
|
| 3838 |
|
|
(line 67)
|
| 3839 |
82 |
jeremybenn |
* history (simulator configuration): Simulator Behavior. (line 40)
|
| 3840 |
19 |
jeremybenn |
* history of execution (Interactive CLI): Interactive Command Line.
|
| 3841 |
|
|
(line 67)
|
| 3842 |
|
|
* hitdelay (branch prediction configuration): Branch Prediction Configuration.
|
| 3843 |
|
|
(line 33)
|
| 3844 |
|
|
* hitdelay (instruction cache configuration): Cache Configuration.
|
| 3845 |
|
|
(line 38)
|
| 3846 |
|
|
* hitdelay (MMU configuration): Memory Management Configuration.
|
| 3847 |
|
|
(line 51)
|
| 3848 |
104 |
jeremybenn |
* host test code: Regression Testing. (line 57)
|
| 3849 |
19 |
jeremybenn |
* hw_enabled (generic peripheral configuration): Generic Peripheral Configuration.
|
| 3850 |
|
|
(line 49)
|
| 3851 |
|
|
* IMMU configuration: Memory Management Configuration.
|
| 3852 |
|
|
(line 6)
|
| 3853 |
|
|
* index (memory controller configuration): Memory Controller Configuration.
|
| 3854 |
98 |
jeremybenn |
(line 68)
|
| 3855 |
19 |
jeremybenn |
* info (Interactive CLI): Interactive Command Line.
|
| 3856 |
|
|
(line 119)
|
| 3857 |
|
|
* installing Or1ksim: Installation. (line 6)
|
| 3858 |
|
|
* instruction cache configuration: Cache Configuration. (line 6)
|
| 3859 |
|
|
* instruction MMU configuration: Memory Management Configuration.
|
| 3860 |
|
|
(line 6)
|
| 3861 |
|
|
* instruction profiling for Or1ksim: Profiling Utility. (line 6)
|
| 3862 |
|
|
* instruction profiling utility (Interactive CLI): Interactive Command Line.
|
| 3863 |
|
|
(line 178)
|
| 3864 |
|
|
* internal debugging: Internal Debugging. (line 6)
|
| 3865 |
|
|
* interrupt controller configuration: Interrupt Configuration.
|
| 3866 |
|
|
(line 6)
|
| 3867 |
|
|
* irq (ATA/ATAPI configuration): Disc Interface Configuration.
|
| 3868 |
|
|
(line 32)
|
| 3869 |
|
|
* irq (DMA configuration): DMA Configuration. (line 34)
|
| 3870 |
|
|
* irq (GPIO configuration): GPIO Configuration. (line 29)
|
| 3871 |
|
|
* irq (keyboard configuration): Keyboard Configuration.
|
| 3872 |
|
|
(line 47)
|
| 3873 |
|
|
* irq (UART configuration): UART Configuration. (line 70)
|
| 3874 |
|
|
* irq (VGA configuration): Display Interface Configuration.
|
| 3875 |
|
|
(line 37)
|
| 3876 |
|
|
* jitter (UART configuration): UART Configuration. (line 78)
|
| 3877 |
|
|
* keyboard configuration: Keyboard Configuration.
|
| 3878 |
|
|
(line 6)
|
| 3879 |
104 |
jeremybenn |
* lf.madd.s: Known Issues. (line 56)
|
| 3880 |
19 |
jeremybenn |
* library version of Or1ksim: Simulator Library. (line 6)
|
| 3881 |
|
|
* license for Or1ksim: GNU Free Documentation License.
|
| 3882 |
|
|
(line 6)
|
| 3883 |
|
|
* list breakpoints (Interactive CLI): Interactive Command Line.
|
| 3884 |
|
|
(line 60)
|
| 3885 |
|
|
* load_hitdelay (data cache configuration): Cache Configuration.
|
| 3886 |
|
|
(line 46)
|
| 3887 |
|
|
* load_missdelay (data cache configuration): Cache Configuration.
|
| 3888 |
|
|
(line 50)
|
| 3889 |
|
|
* log (memory configuration): Memory Configuration.
|
| 3890 |
98 |
jeremybenn |
(line 149)
|
| 3891 |
19 |
jeremybenn |
* log_enabled (verification API configuration): Verification API Configuration.
|
| 3892 |
|
|
(line 28)
|
| 3893 |
93 |
jeremybenn |
* long: Simulator Library. (line 87)
|
| 3894 |
104 |
jeremybenn |
* make file for tests: Regression Testing. (line 27)
|
| 3895 |
19 |
jeremybenn |
* mc (memory configuration): Memory Configuration.
|
| 3896 |
98 |
jeremybenn |
(line 126)
|
| 3897 |
19 |
jeremybenn |
* memory configuration: Memory Configuration.
|
| 3898 |
|
|
(line 6)
|
| 3899 |
|
|
* memory controller configuration: Memory Controller Configuration.
|
| 3900 |
|
|
(line 6)
|
| 3901 |
|
|
* memory copying (Interactive CLI): Interactive Command Line.
|
| 3902 |
|
|
(line 54)
|
| 3903 |
|
|
* memory display (Interactive CLI): Interactive Command Line.
|
| 3904 |
|
|
(line 31)
|
| 3905 |
|
|
* memory dump, hexadecimal (Interactive CLI): Interactive Command Line.
|
| 3906 |
|
|
(line 133)
|
| 3907 |
|
|
* memory dump, Verilog (Interactive CLI): Interactive Command Line.
|
| 3908 |
|
|
(line 124)
|
| 3909 |
|
|
* memory patching (Interactive CLI): Interactive Command Line.
|
| 3910 |
|
|
(line 48)
|
| 3911 |
|
|
* memory profiling end address: Memory Profiling Utility.
|
| 3912 |
|
|
(line 56)
|
| 3913 |
|
|
* memory profiling start address: Memory Profiling Utility.
|
| 3914 |
|
|
(line 56)
|
| 3915 |
|
|
* memory profiling utility (Interactive CLI): Interactive Command Line.
|
| 3916 |
|
|
(line 173)
|
| 3917 |
|
|
* memory profiling version of Or1ksim: Memory Profiling Utility.
|
| 3918 |
|
|
(line 6)
|
| 3919 |
|
|
* memory_order (CUC configuration): CUC Configuration. (line 15)
|
| 3920 |
|
|
* memory_order=exact (CUC configuration): CUC Configuration. (line 27)
|
| 3921 |
|
|
* memory_order=none (CUC configuration): CUC Configuration. (line 18)
|
| 3922 |
|
|
* memory_order=strong (CUC configuration): CUC Configuration. (line 25)
|
| 3923 |
|
|
* memory_order=weak (CUC configuration): CUC Configuration. (line 21)
|
| 3924 |
|
|
* missdelay (branch prediction configuration): Branch Prediction Configuration.
|
| 3925 |
|
|
(line 37)
|
| 3926 |
|
|
* missdelay (instruction cache configuration): Cache Configuration.
|
| 3927 |
|
|
(line 42)
|
| 3928 |
|
|
* missdelay (MMU configuration): Memory Management Configuration.
|
| 3929 |
|
|
(line 55)
|
| 3930 |
|
|
* MMU configuration: Memory Management Configuration.
|
| 3931 |
|
|
(line 6)
|
| 3932 |
82 |
jeremybenn |
* mprof_file (simulator configuration): Simulator Behavior. (line 34)
|
| 3933 |
19 |
jeremybenn |
* mprof_fn (simulator configuration - deprecated): Simulator Behavior.
|
| 3934 |
82 |
jeremybenn |
(line 34)
|
| 3935 |
19 |
jeremybenn |
* mprofile (Interactive CLI): Interactive Command Line.
|
| 3936 |
|
|
(line 173)
|
| 3937 |
82 |
jeremybenn |
* mprofile (simulator configuration): Simulator Behavior. (line 29)
|
| 3938 |
19 |
jeremybenn |
* mwdma (ATA/ATAPI device configuration): Disc Interface Configuration.
|
| 3939 |
|
|
(line 128)
|
| 3940 |
|
|
* name (generic peripheral configuration): Generic Peripheral Configuration.
|
| 3941 |
|
|
(line 42)
|
| 3942 |
|
|
* name (memory configuration): Memory Configuration.
|
| 3943 |
98 |
jeremybenn |
(line 108)
|
| 3944 |
19 |
jeremybenn |
* no_multicycle (CUC configuration): CUC Configuration. (line 42)
|
| 3945 |
|
|
* nsets (cache configuration): Cache Configuration. (line 15)
|
| 3946 |
|
|
* nsets (MMU configuration): Memory Management Configuration.
|
| 3947 |
|
|
(line 16)
|
| 3948 |
|
|
* nways (cache configuration): Cache Configuration. (line 22)
|
| 3949 |
|
|
* nways (MMU configuration): Memory Management Configuration.
|
| 3950 |
|
|
(line 22)
|
| 3951 |
93 |
jeremybenn |
* or1ksim_get_time_period: Simulator Library. (line 77)
|
| 3952 |
|
|
* or1ksim_init: Simulator Library. (line 14)
|
| 3953 |
|
|
* or1ksim_interrupt: Simulator Library. (line 92)
|
| 3954 |
|
|
* or1ksim_interrupt_clear: Simulator Library. (line 110)
|
| 3955 |
|
|
* or1ksim_interrupt_set: Simulator Library. (line 101)
|
| 3956 |
|
|
* or1ksim_is_le: Simulator Library. (line 82)
|
| 3957 |
104 |
jeremybenn |
* or1ksim_jtag_reset: Simulator Library. (line 119)
|
| 3958 |
|
|
* or1ksim_jtag_shift_dr: Simulator Library. (line 141)
|
| 3959 |
|
|
* or1ksim_jtag_shift_ir: Simulator Library. (line 127)
|
| 3960 |
93 |
jeremybenn |
* or1ksim_reset_duration: Simulator Library. (line 62)
|
| 3961 |
|
|
* or1ksim_run: Simulator Library. (line 57)
|
| 3962 |
|
|
* or1ksim_set_time_point: Simulator Library. (line 73)
|
| 3963 |
19 |
jeremybenn |
* output rediretion: Concepts. (line 7)
|
| 3964 |
|
|
* overflow flag setting by instructions: Configuring the Build.
|
| 3965 |
112 |
jeremybenn |
(line 123)
|
| 3966 |
19 |
jeremybenn |
* packet (ATA/ATAPI device configuration): Disc Interface Configuration.
|
| 3967 |
|
|
(line 113)
|
| 3968 |
|
|
* pagesize (MMU configuration): Memory Management Configuration.
|
| 3969 |
|
|
(line 27)
|
| 3970 |
|
|
* patching memory (Interactive CLI): Interactive Command Line.
|
| 3971 |
|
|
(line 48)
|
| 3972 |
|
|
* patching registers (Interactive CLI): Interactive Command Line.
|
| 3973 |
|
|
(line 28)
|
| 3974 |
|
|
* patching the program counter (Interactive CLI): Interactive Command Line.
|
| 3975 |
|
|
(line 51)
|
| 3976 |
|
|
* pattern (memory configuration): Memory Configuration.
|
| 3977 |
98 |
jeremybenn |
(line 75)
|
| 3978 |
19 |
jeremybenn |
* pc (Interactive CLI): Interactive Command Line.
|
| 3979 |
|
|
(line 51)
|
| 3980 |
|
|
* PIC configuration: Interrupt Configuration.
|
| 3981 |
|
|
(line 6)
|
| 3982 |
|
|
* pio (ATA/ATAPI device configuration): Disc Interface Configuration.
|
| 3983 |
|
|
(line 132)
|
| 3984 |
|
|
* pio_mode0_t1 (ATA/ATAPI configuration): Disc Interface Configuration.
|
| 3985 |
|
|
(line 51)
|
| 3986 |
|
|
* pio_mode0_t2 (ATA/ATAPI configuration): Disc Interface Configuration.
|
| 3987 |
|
|
(line 52)
|
| 3988 |
|
|
* pio_mode0_t4 (ATA/ATAPI configuration): Disc Interface Configuration.
|
| 3989 |
|
|
(line 53)
|
| 3990 |
|
|
* pio_mode0_teoc (ATA/ATAPI configuration): Disc Interface Configuration.
|
| 3991 |
|
|
(line 54)
|
| 3992 |
|
|
* pm (Interactive CLI): Interactive Command Line.
|
| 3993 |
|
|
(line 48)
|
| 3994 |
|
|
* PMR - DGCE: Power Management Configuration.
|
| 3995 |
|
|
(line 21)
|
| 3996 |
|
|
* PMR - DME: Power Management Configuration.
|
| 3997 |
|
|
(line 15)
|
| 3998 |
|
|
* PMR - SDF: Power Management Configuration.
|
| 3999 |
|
|
(line 12)
|
| 4000 |
|
|
* PMR - SME: Power Management Configuration.
|
| 4001 |
|
|
(line 16)
|
| 4002 |
|
|
* PMR - SUME: Power Management Configuration.
|
| 4003 |
|
|
(line 24)
|
| 4004 |
|
|
* PMU configuration: Power Management Configuration.
|
| 4005 |
|
|
(line 6)
|
| 4006 |
|
|
* poc (memory controller configuration): Memory Controller Configuration.
|
| 4007 |
98 |
jeremybenn |
(line 55)
|
| 4008 |
19 |
jeremybenn |
* port range for TCP/IP: Verification API Configuration.
|
| 4009 |
|
|
(line 23)
|
| 4010 |
|
|
* power management configuration: Power Management Configuration.
|
| 4011 |
|
|
(line 6)
|
| 4012 |
|
|
* power management register, DGCE: Power Management Configuration.
|
| 4013 |
|
|
(line 21)
|
| 4014 |
|
|
* power management register, DME: Power Management Configuration.
|
| 4015 |
|
|
(line 15)
|
| 4016 |
|
|
* power management register, SDF: Power Management Configuration.
|
| 4017 |
|
|
(line 12)
|
| 4018 |
|
|
* power management register, SME: Power Management Configuration.
|
| 4019 |
|
|
(line 16)
|
| 4020 |
|
|
* power management register, SUME: Power Management Configuration.
|
| 4021 |
|
|
(line 24)
|
| 4022 |
|
|
* pr (Interactive CLI): Interactive Command Line.
|
| 4023 |
|
|
(line 28)
|
| 4024 |
|
|
* private ports, use of: Verification API Configuration.
|
| 4025 |
|
|
(line 23)
|
| 4026 |
|
|
* processor configuration: CPU Configuration. (line 6)
|
| 4027 |
|
|
* processor stall (Interactive CLI): Interactive Command Line.
|
| 4028 |
|
|
(line 72)
|
| 4029 |
|
|
* processor unstall (Interactive CLI): Interactive Command Line.
|
| 4030 |
|
|
(line 78)
|
| 4031 |
|
|
* prof_file (simulator configuration): Simulator Behavior. (line 23)
|
| 4032 |
|
|
* prof_fn (simulator configuration - deprecated): Simulator Behavior.
|
| 4033 |
|
|
(line 23)
|
| 4034 |
|
|
* profile (simulator configuration): Simulator Behavior. (line 19)
|
| 4035 |
|
|
* profiling for Or1ksim: Profiling Utility. (line 6)
|
| 4036 |
|
|
* profiling utility (Interactive CLI): Interactive Command Line.
|
| 4037 |
|
|
(line 178)
|
| 4038 |
|
|
* program counter patching (Interactive CLI): Interactive Command Line.
|
| 4039 |
|
|
(line 51)
|
| 4040 |
|
|
* programmable interrupt controller configuration: Interrupt Configuration.
|
| 4041 |
|
|
(line 6)
|
| 4042 |
|
|
* PS2 configuration: Keyboard Configuration.
|
| 4043 |
|
|
(line 6)
|
| 4044 |
|
|
* q (Interactive CLI): Interactive Command Line.
|
| 4045 |
|
|
(line 11)
|
| 4046 |
|
|
* quitting (Interactive CLI): Interactive Command Line.
|
| 4047 |
|
|
(line 11)
|
| 4048 |
|
|
* r (Interactive CLI): Interactive Command Line.
|
| 4049 |
|
|
(line 14)
|
| 4050 |
|
|
* random_seed (memory configuration): Memory Configuration.
|
| 4051 |
98 |
jeremybenn |
(line 65)
|
| 4052 |
19 |
jeremybenn |
* refresh_rate (frame buffer configuration): Frame Buffer Configuration.
|
| 4053 |
82 |
jeremybenn |
(line 30)
|
| 4054 |
19 |
jeremybenn |
* refresh_rate (VGA configuration): Display Interface Configuration.
|
| 4055 |
|
|
(line 41)
|
| 4056 |
|
|
* reg_sim_reset: Concepts. (line 13)
|
| 4057 |
|
|
* register display (Interactive CLI): Interactive Command Line.
|
| 4058 |
|
|
(line 14)
|
| 4059 |
|
|
* register over time statistics: Configuring the Build.
|
| 4060 |
104 |
jeremybenn |
(line 69)
|
| 4061 |
19 |
jeremybenn |
* register patching (Interactive CLI): Interactive Command Line.
|
| 4062 |
|
|
(line 28)
|
| 4063 |
104 |
jeremybenn |
* regression testing: Regression Testing. (line 6)
|
| 4064 |
19 |
jeremybenn |
* Remote Serial Protocol: Debug Interface Configuration.
|
| 4065 |
|
|
(line 20)
|
| 4066 |
|
|
* reset (Interactive CLI): Interactive Command Line.
|
| 4067 |
|
|
(line 63)
|
| 4068 |
|
|
* reset hooks: Concepts. (line 13)
|
| 4069 |
|
|
* reset the simulator (Interactive CLI): Interactive Command Line.
|
| 4070 |
|
|
(line 63)
|
| 4071 |
|
|
* rev (ATA/ATAPI configuration): Disc Interface Configuration.
|
| 4072 |
|
|
(line 44)
|
| 4073 |
|
|
* rev (CPU configuration): CPU Configuration. (line 15)
|
| 4074 |
|
|
* rsp_enabled (debug interface configuration): Debug Interface Configuration.
|
| 4075 |
|
|
(line 20)
|
| 4076 |
|
|
* rsp_port (debug interface configuration): Debug Interface Configuration.
|
| 4077 |
|
|
(line 36)
|
| 4078 |
|
|
* rtx_type (Ethernet configuration): Ethernet Configuration.
|
| 4079 |
|
|
(line 46)
|
| 4080 |
|
|
* run (Interactive CLI): Interactive Command Line.
|
| 4081 |
|
|
(line 23)
|
| 4082 |
|
|
* running code (Interactive CLI): Interactive Command Line.
|
| 4083 |
|
|
(line 23)
|
| 4084 |
|
|
* running Or1ksim: Usage. (line 6)
|
| 4085 |
|
|
* runtime: Global Data Structures.
|
| 4086 |
|
|
(line 58)
|
| 4087 |
|
|
* runtime global structure: Global Data Structures.
|
| 4088 |
|
|
(line 58)
|
| 4089 |
|
|
* runtime.cpu: Global Data Structures.
|
| 4090 |
|
|
(line 62)
|
| 4091 |
|
|
* runtime.cpu.fout: Concepts. (line 7)
|
| 4092 |
|
|
* runtime.cuc: Global Data Structures.
|
| 4093 |
|
|
(line 62)
|
| 4094 |
|
|
* runtime.vapi: Global Data Structures.
|
| 4095 |
|
|
(line 62)
|
| 4096 |
|
|
* rx_channel (Ethernet configuration): Ethernet Configuration.
|
| 4097 |
|
|
(line 59)
|
| 4098 |
|
|
* rxfile (Ethernet configuration): Ethernet Configuration.
|
| 4099 |
|
|
(line 68)
|
| 4100 |
|
|
* sbp_bf_fwd (branch prediction configuration): Branch Prediction Configuration.
|
| 4101 |
|
|
(line 23)
|
| 4102 |
|
|
* sbp_bnf_fwd (branch prediction configuration): Branch Prediction Configuration.
|
| 4103 |
|
|
(line 28)
|
| 4104 |
98 |
jeremybenn |
* sbuf_len (CPU configuration): CPU Configuration. (line 101)
|
| 4105 |
19 |
jeremybenn |
* SDF (power management register): Power Management Configuration.
|
| 4106 |
|
|
(line 12)
|
| 4107 |
|
|
* section ata: Disc Interface Configuration.
|
| 4108 |
|
|
(line 6)
|
| 4109 |
|
|
* section bpb: Branch Prediction Configuration.
|
| 4110 |
|
|
(line 6)
|
| 4111 |
|
|
* section cpio: GPIO Configuration. (line 6)
|
| 4112 |
|
|
* section cpu: CPU Configuration. (line 6)
|
| 4113 |
|
|
* section cuc: CUC Configuration. (line 6)
|
| 4114 |
|
|
* section dc: Cache Configuration. (line 6)
|
| 4115 |
|
|
* section debug: Debug Interface Configuration.
|
| 4116 |
|
|
(line 6)
|
| 4117 |
|
|
* section dma: DMA Configuration. (line 6)
|
| 4118 |
|
|
* section dmmu: Memory Management Configuration.
|
| 4119 |
|
|
(line 6)
|
| 4120 |
|
|
* section ethernet: Ethernet Configuration.
|
| 4121 |
|
|
(line 6)
|
| 4122 |
|
|
* section fb: Frame Buffer Configuration.
|
| 4123 |
|
|
(line 6)
|
| 4124 |
|
|
* section generic: Generic Peripheral Configuration.
|
| 4125 |
|
|
(line 6)
|
| 4126 |
|
|
* section ic: Cache Configuration. (line 6)
|
| 4127 |
|
|
* section immu: Memory Management Configuration.
|
| 4128 |
|
|
(line 6)
|
| 4129 |
|
|
* section kb: Keyboard Configuration.
|
| 4130 |
|
|
(line 6)
|
| 4131 |
|
|
* section mc: Memory Controller Configuration.
|
| 4132 |
|
|
(line 6)
|
| 4133 |
|
|
* section memory: Memory Configuration.
|
| 4134 |
|
|
(line 6)
|
| 4135 |
|
|
* section pic: Interrupt Configuration.
|
| 4136 |
|
|
(line 6)
|
| 4137 |
|
|
* section pmu: Power Management Configuration.
|
| 4138 |
|
|
(line 6)
|
| 4139 |
|
|
* section sim: Simulator Behavior. (line 6)
|
| 4140 |
|
|
* section uart: UART Configuration. (line 6)
|
| 4141 |
|
|
* section vapi: Verification API Configuration.
|
| 4142 |
|
|
(line 6)
|
| 4143 |
|
|
* section vga: Display Interface Configuration.
|
| 4144 |
|
|
(line 6)
|
| 4145 |
|
|
* sections: Global Data Structures.
|
| 4146 |
|
|
(line 49)
|
| 4147 |
|
|
* sectors (ATA/ATAPI device configuration): Disc Interface Configuration.
|
| 4148 |
|
|
(line 125)
|
| 4149 |
|
|
* server_port (debug interface configuration): Debug Interface Configuration.
|
| 4150 |
|
|
(line 69)
|
| 4151 |
|
|
* server_port (verification API configuration): Verification API Configuration.
|
| 4152 |
|
|
(line 19)
|
| 4153 |
|
|
* set (Interactive CLI): Interactive Command Line.
|
| 4154 |
|
|
(line 146)
|
| 4155 |
|
|
* set breakpoint (Interactive CLI): Interactive Command Line.
|
| 4156 |
|
|
(line 57)
|
| 4157 |
|
|
* setdbch (Interactive CLI): Interactive Command Line.
|
| 4158 |
|
|
(line 141)
|
| 4159 |
|
|
* simple model: Configuring the Build.
|
| 4160 |
104 |
jeremybenn |
(line 37)
|
| 4161 |
19 |
jeremybenn |
* simulator configuration: Simulator Behavior. (line 6)
|
| 4162 |
|
|
* simulator configuration info (Interactive CLI): Interactive Command Line.
|
| 4163 |
|
|
(line 119)
|
| 4164 |
|
|
* simulator reset (Interactive CLI): Interactive Command Line.
|
| 4165 |
|
|
(line 63)
|
| 4166 |
|
|
* simulator statistics (Interactive CLI): Interactive Command Line.
|
| 4167 |
|
|
(line 83)
|
| 4168 |
|
|
* size (ATA/ATAPI device configuration): Disc Interface Configuration.
|
| 4169 |
|
|
(line 109)
|
| 4170 |
|
|
* size (generic peripheral configuration): Generic Peripheral Configuration.
|
| 4171 |
|
|
(line 30)
|
| 4172 |
|
|
* size (memory configuration): Memory Configuration.
|
| 4173 |
98 |
jeremybenn |
(line 92)
|
| 4174 |
19 |
jeremybenn |
* sleep mode (power management register): Power Management Configuration.
|
| 4175 |
|
|
(line 16)
|
| 4176 |
|
|
* slow down factor (power management register): Power Management Configuration.
|
| 4177 |
|
|
(line 12)
|
| 4178 |
|
|
* SME (power management register): Power Management Configuration.
|
| 4179 |
|
|
(line 16)
|
| 4180 |
|
|
* sockif (Ethernet configuration): Ethernet Configuration.
|
| 4181 |
|
|
(line 83)
|
| 4182 |
|
|
* sr (CPU configuration): CPU Configuration. (line 53)
|
| 4183 |
|
|
* stall (Interactive CLI): Interactive Command Line.
|
| 4184 |
|
|
(line 72)
|
| 4185 |
|
|
* stall the processor (Interactive CLI): Interactive Command Line.
|
| 4186 |
|
|
(line 72)
|
| 4187 |
|
|
* statistics, register over time: Configuring the Build.
|
| 4188 |
104 |
jeremybenn |
(line 69)
|
| 4189 |
19 |
jeremybenn |
* statistics, simulation (Interactive CLI): Interactive Command Line.
|
| 4190 |
|
|
(line 83)
|
| 4191 |
|
|
* stats (Interactive CLI): Interactive Command Line.
|
| 4192 |
|
|
(line 83)
|
| 4193 |
|
|
* stepping code (Interactive CLI): Interactive Command Line.
|
| 4194 |
|
|
(line 19)
|
| 4195 |
|
|
* store_hitdelay (data cache configuration): Cache Configuration.
|
| 4196 |
|
|
(line 54)
|
| 4197 |
|
|
* store_missdelay (data cache configuration): Cache Configuration.
|
| 4198 |
|
|
(line 58)
|
| 4199 |
|
|
* SUME (power management register): Power Management Configuration.
|
| 4200 |
|
|
(line 24)
|
| 4201 |
98 |
jeremybenn |
* superscalar (CPU configuration): CPU Configuration. (line 63)
|
| 4202 |
19 |
jeremybenn |
* suspend mode (power management register): Power Management Configuration.
|
| 4203 |
|
|
(line 24)
|
| 4204 |
|
|
* t (Interactive CLI): Interactive Command Line.
|
| 4205 |
|
|
(line 19)
|
| 4206 |
104 |
jeremybenn |
* target test code: Regression Testing. (line 63)
|
| 4207 |
19 |
jeremybenn |
* TCP/IP port range: Verification API Configuration.
|
| 4208 |
|
|
(line 23)
|
| 4209 |
|
|
* TCP/IP port range for or1ksim service: Debug Interface Configuration.
|
| 4210 |
|
|
(line 74)
|
| 4211 |
|
|
* TCP/IP port range for or1ksim-rsp service: Debug Interface Configuration.
|
| 4212 |
|
|
(line 41)
|
| 4213 |
104 |
jeremybenn |
* test code for host: Regression Testing. (line 57)
|
| 4214 |
|
|
* test code for target: Regression Testing. (line 63)
|
| 4215 |
|
|
* test make file: Regression Testing. (line 27)
|
| 4216 |
|
|
* test README: Regression Testing. (line 32)
|
| 4217 |
|
|
* testing: Regression Testing. (line 6)
|
| 4218 |
82 |
jeremybenn |
* tests, all enabled.: Configuring the Build.
|
| 4219 |
112 |
jeremybenn |
(line 110)
|
| 4220 |
19 |
jeremybenn |
* timings_file (CUC configuration): CUC Configuration. (line 46)
|
| 4221 |
|
|
* timings_fn (CUC configuration - deprecated): CUC Configuration.
|
| 4222 |
|
|
(line 46)
|
| 4223 |
|
|
* toggle breakpoint (Interactive CLI): Interactive Command Line.
|
| 4224 |
|
|
(line 57)
|
| 4225 |
|
|
* toggle debug channels (Interactive CLI): Interactive Command Line.
|
| 4226 |
|
|
(line 141)
|
| 4227 |
|
|
* toggle debug mode (Interactive CLI): Interactive Command Line.
|
| 4228 |
|
|
(line 151)
|
| 4229 |
|
|
* tx_channel (Ethernet configuration): Ethernet Configuration.
|
| 4230 |
|
|
(line 60)
|
| 4231 |
|
|
* txfile (Ethernet configuration): Ethernet Configuration.
|
| 4232 |
|
|
(line 69)
|
| 4233 |
|
|
* txfile (frame buffer configuration): Frame Buffer Configuration.
|
| 4234 |
82 |
jeremybenn |
(line 36)
|
| 4235 |
19 |
jeremybenn |
* txfile (VGA configuration): Display Interface Configuration.
|
| 4236 |
|
|
(line 47)
|
| 4237 |
|
|
* type (ATA/ATAPI device configuration): Disc Interface Configuration.
|
| 4238 |
|
|
(line 99)
|
| 4239 |
|
|
* type (memory configuration): Memory Configuration.
|
| 4240 |
98 |
jeremybenn |
(line 36)
|
| 4241 |
19 |
jeremybenn |
* type=pattern (memory configuration): Memory Configuration.
|
| 4242 |
98 |
jeremybenn |
(line 46)
|
| 4243 |
19 |
jeremybenn |
* type=random (memory configuration): Memory Configuration.
|
| 4244 |
98 |
jeremybenn |
(line 40)
|
| 4245 |
19 |
jeremybenn |
* type=unknown (memory configuration): Memory Configuration.
|
| 4246 |
98 |
jeremybenn |
(line 50)
|
| 4247 |
19 |
jeremybenn |
* type=zero (memory configuration): Memory Configuration.
|
| 4248 |
98 |
jeremybenn |
(line 54)
|
| 4249 |
19 |
jeremybenn |
* UART configuration: UART Configuration. (line 6)
|
| 4250 |
|
|
* UART I/O from/to a physical serial port: UART Configuration.
|
| 4251 |
|
|
(line 62)
|
| 4252 |
|
|
* UART I/O from/to an xterm: UART Configuration. (line 38)
|
| 4253 |
|
|
* UART I/O from/to files: UART Configuration. (line 33)
|
| 4254 |
|
|
* UART I/O from/to open file descriptors: UART Configuration. (line 58)
|
| 4255 |
|
|
* UART I/O from/to TCP/IP: UART Configuration. (line 45)
|
| 4256 |
|
|
* UART verification (VAPI): Verification API. (line 41)
|
| 4257 |
|
|
* unstall (Interactive CLI): Interactive Command Line.
|
| 4258 |
|
|
(line 78)
|
| 4259 |
|
|
* unstall the processor (Interactive CLI): Interactive Command Line.
|
| 4260 |
|
|
(line 78)
|
| 4261 |
|
|
* upr (CPU configuration): CPU Configuration. (line 21)
|
| 4262 |
|
|
* ustates (cache configuration): Cache Configuration. (line 33)
|
| 4263 |
|
|
* ustates (MMU configuration): Memory Management Configuration.
|
| 4264 |
|
|
(line 41)
|
| 4265 |
|
|
* VAPI configuration: Verification API Configuration.
|
| 4266 |
|
|
(line 6)
|
| 4267 |
|
|
* VAPI for Debug Unit: Verification API. (line 34)
|
| 4268 |
|
|
* VAPI for DMA: Verification API. (line 73)
|
| 4269 |
|
|
* VAPI for Ethernet: Verification API. (line 78)
|
| 4270 |
|
|
* VAPI for GPIO: Verification API. (line 88)
|
| 4271 |
|
|
* VAPI for UART: Verification API. (line 41)
|
| 4272 |
|
|
* vapi_id (debug interface configuration): Debug Interface Configuration.
|
| 4273 |
|
|
(line 80)
|
| 4274 |
|
|
* vapi_id (DMA configuration) <1>: Ethernet Configuration.
|
| 4275 |
|
|
(line 88)
|
| 4276 |
|
|
* vapi_id (DMA configuration): DMA Configuration. (line 38)
|
| 4277 |
|
|
* vapi_id (GPIO configuration): GPIO Configuration. (line 32)
|
| 4278 |
|
|
* vapi_id (UART configuration): UART Configuration. (line 85)
|
| 4279 |
|
|
* vapi_log_file (verification API configuration): Verification API Configuration.
|
| 4280 |
|
|
(line 41)
|
| 4281 |
|
|
* vapi_log_fn (verification API configuration - deprecated): Verification API Configuration.
|
| 4282 |
|
|
(line 41)
|
| 4283 |
|
|
* ver (CPU configuration): CPU Configuration. (line 15)
|
| 4284 |
|
|
* verbose (simulator configuration): Simulator Behavior. (line 10)
|
| 4285 |
|
|
* Verification API configuration: Verification API Configuration.
|
| 4286 |
|
|
(line 6)
|
| 4287 |
|
|
* Verilog memory dump (Interactive CLI): Interactive Command Line.
|
| 4288 |
|
|
(line 124)
|
| 4289 |
|
|
* VGA configuration: Display Interface Configuration.
|
| 4290 |
|
|
|
| 4291 |
|
|
|
| 4292 |
|
|
(line 50)
|
| 4293 |
|
|
|
| 4294 |
|
|
|
| 4295 |
|
|
|
| 4296 |
|
|
Tag Table:
|
| 4297 |
112 |
jeremybenn |
Node: Top814
|
| 4298 |
|
|
Node: Installation1224
|
| 4299 |
|
|
Node: Preparation1471
|
| 4300 |
|
|
Node: Configuring the Build1766
|
| 4301 |
|
|
Node: Build and Install7464
|
| 4302 |
|
|
Node: Known Issues8310
|
| 4303 |
|
|
Node: Usage11372
|
| 4304 |
|
|
Node: Standalone Simulator11586
|
| 4305 |
|
|
Node: Profiling Utility14489
|
| 4306 |
|
|
Node: Memory Profiling Utility15399
|
| 4307 |
|
|
Node: Simulator Library16764
|
| 4308 |
|
|
Node: Configuration24542
|
| 4309 |
|
|
Node: Configuration File Format25151
|
| 4310 |
|
|
Node: Configuration File Preprocessing25443
|
| 4311 |
|
|
Node: Configuration File Syntax25814
|
| 4312 |
|
|
Node: Simulator Configuration28599
|
| 4313 |
|
|
Node: Simulator Behavior28890
|
| 4314 |
|
|
Node: Verification API Configuration32934
|
| 4315 |
|
|
Node: CUC Configuration34874
|
| 4316 |
|
|
Node: Core OpenRISC Configuration36791
|
| 4317 |
|
|
Node: CPU Configuration37293
|
| 4318 |
|
|
Node: Memory Configuration41411
|
| 4319 |
|
|
Node: Memory Management Configuration47869
|
| 4320 |
|
|
Node: Cache Configuration50246
|
| 4321 |
|
|
Node: Interrupt Configuration52632
|
| 4322 |
|
|
Node: Power Management Configuration53368
|
| 4323 |
|
|
Node: Branch Prediction Configuration54645
|
| 4324 |
|
|
Node: Debug Interface Configuration56005
|
| 4325 |
|
|
Node: Peripheral Configuration60225
|
| 4326 |
|
|
Node: Memory Controller Configuration60851
|
| 4327 |
|
|
Node: UART Configuration64265
|
| 4328 |
|
|
Node: DMA Configuration67784
|
| 4329 |
|
|
Node: Ethernet Configuration69651
|
| 4330 |
|
|
Node: GPIO Configuration73627
|
| 4331 |
|
|
Node: Display Interface Configuration75260
|
| 4332 |
|
|
Node: Frame Buffer Configuration77569
|
| 4333 |
|
|
Node: Keyboard Configuration79433
|
| 4334 |
|
|
Node: Disc Interface Configuration81671
|
| 4335 |
|
|
Node: Generic Peripheral Configuration86614
|
| 4336 |
|
|
Node: Interactive Command Line88909
|
| 4337 |
|
|
Node: Verification API95883
|
| 4338 |
|
|
Node: Code Internals100313
|
| 4339 |
|
|
Node: Coding Conventions100896
|
| 4340 |
|
|
Node: Global Data Structures105323
|
| 4341 |
|
|
Node: Concepts107980
|
| 4342 |
|
|
Ref: Output Redirection108125
|
| 4343 |
|
|
Node: Internal Debugging108664
|
| 4344 |
|
|
Node: Regression Testing109188
|
| 4345 |
|
|
Node: GNU Free Documentation License112983
|