diff options
Diffstat (limited to 'README.sis')
-rw-r--r-- | README.sis | 348 |
1 files changed, 0 insertions, 348 deletions
diff --git a/README.sis b/README.sis deleted file mode 100644 index ffcc591..0000000 --- a/README.sis +++ /dev/null @@ -1,348 +0,0 @@ - -SIS - Sparc Instruction Simulator README file (v2.9, 16-01-2019) -------------------------------------------------------------------- - -1. Introduction - -The SIS is a SPARC V7/V8 architecture simulator. It consist of two parts, -the simulator core and a user defined memory module. The simulator -core executes the instructions while the memory module emulates memory -and peripherals. As of version 2.9, sis can also emulate a RISC-V -RV32IMACF processor. - -2. Usage - -The simulator is started as follows: - -sis [-leon2] [-leon3] [-uart1 uart_device1] [-uart2 uart_device2] - [-m cores] [-d clocks] [-nfp] [-freq freq] [-c batch_file] [-v] - [-r] [-tlim time] [-cov] [-gdb] [-port n] [files] - -By default, SIS emulates an ERC32 system. The -leon2 switch enables -LEON2 emulation, while the -leon3 switch enables emulation of a -LEON3 SOC system. When compiled for RISC-V (--target=riscv-rtems5), -the simulator emulates a RISC-V RV32IMACF cpu connected to GRLIB -IP cores. - -The emulated console uart is connected to stdin/stdout. The -uart[1,2] -switch can be used to connect the uarts to other devices. - -The '-nfp' will disable the simulated FPU, so each FPU instruction will -generate a FPU disabled trap. The '-freq' switch can be used to define -which "frequency" the simulator runs at. This is used by the 'perf' -command to calculated the MIPS figure for a particular configuration. -The frequency must be an integer indicating the frequency in MHz. - -The -c option indicates that sis commands should be read from 'batch_file' -at startup. - --v sets the debug level to 1, to provide some diagnostic messages. - --r starts execution immediately without an interactive shell. This is useful -for automated testing of large number of binaries. - --tlim can be used together with -r to limit the amount of simulated time that -the simulator runs for before exiting. The following units are recognized: -us, ms and s. To limit simulated time to 100 seconds, it should thus be -started with -r -tlim 100 s . - --m sets the number of cores (2 - 4) in a leon3 or RISC-V multi-processor system. - --d set the the number of clocks in each time-slice for multi-processor -simulation. Default is 50, set lower for higher accuracy. - --gdb will start a gdb server, listening on port 1234. An alternative port can -be specified with -port <nn>. - -Files to be loaded must be in one of the formats supported by the BFD library. -This inlude elf, a.out, srec and binary. On start-up, the files will be -loaded into the simulated memory. - -3. Internal commands - -Below is the description of commands that are recognized by the simulator. -The command-line is parsed using GNU readline. A command -history of 64 commands is maintained. Use the up/down arrows to recall -previous commands. For more details, see the readline documentation. - -* List of commands: - -batch <file> - -Execute a batch file of SIS commands. - -+bp <address> -break <address> - -Adds an breakpoint at address <address>. - -bp - -Prints all breakpoints - --bp <num> -delete - -Deletes breakpoint <num>. Use 'bp' or break to see which number is assigned -to the breakpoints. - -csr - -Show RISC-V CSR registers - -cont [inst_count] - -Continue execution at present position, optionally for [inst_count] -instructions. - -dis [addr] [count] - -Disassemble [count] instructions at address [addr]. Default values for -count is 16 and addr is the present address. - -echo <string> - -Print <string> to the simulator window. - -float - -Prints the FPU registers - -gdb [port] - -Starts the gdb server interface. Default port is 1234, but can be overriden using -the [port] argument. gdb should be started with 'tar extended-remote localhost:1234'. - -go <address> [inst_count] - -The go command will set pc to <address> and npc to <address> + 4, and start -execution. If inst_count is given, execution will stop after the specified -number of instructions. - -help - -Print a small help menu for the SIS commands. - -hist [trace_length] - -Enable the instruction trace buffer. The 'trace_length' last executed -instructions will be placed in the trace buffer. A 'hist' command without -a trace_length will display the trace buffer. Specifying a zero trace -length will disable the trace buffer. - -load <file_name> - -Loads a file into simulator memory. - -mem [addr] [count] - -Display memory at [addr] for [count] bytes. Same default values as above. - -quit - -Exits the simulator. - -perf [reset] - -The 'perf' command will display various execution statistics. A 'perf reset' -command will reset the statistics. This can be used if statistics shall -be calculated only over a part of the program. The 'run' and 'reset' -command also resets the statistic information. - -reg [reg_name] [value] - -Prints and sets the IU registers. 'reg' without parameters prints the IU -registers. 'reg [reg_name] [value]' sets the corresponding register to -[value]. Valid register names are psr, tbr, wim, y, g1-g7, o0-o7 and -l0-l7. - -reset - -Performs a power-on reset. This command is equal to 'run 0'. - -run [inst_count] - -Resets the simulator and starts execution from address 0. If an instruction -count is given (inst_count), the simulator will stop after the specified -number of instructions. The event queue is emptied but any set breakpoints -remain. - -step - -Equal to 'trace 1' - -sym - -List symbols and corresponding addresses in the loaded program. - -tra [inst_count] - -Starts the simulator at the present position and prints each instruction -it executes. If an instruction count is given (inst_count), the simulator -will stop after the specified number of instructions. - -wmem [addr] [data] - -Writes [data] to memory at [addr]. Data is written as a 32-bit word. - -wp - -Prints all watchpoints - -+wpr <address> - -Adds an read watchpoint at address <address>. - --wpr <num> - -Deletes read watchpoint <num>. Use 'wp' to see which number is assigned to -the watchpoints. - -+wpw <address> -watch <address> - -Adds an write watchpoint at address <address>. - --wpw <num> - -Deletes write watchpoint <num>. Use 'wp' to see which number is assigned to -the watchpoints. - -Typing a 'Ctrl-C' will interrupt a running simulator. - -Short forms of the commands are allowed, e.g 'c' 'co' or 'con' are all -interpreted as 'cont'. - -4. Using SIS with GDB - -To start the simulator inside gdb, use: - -target sim [options] - -The following options are supported: - - -leon2 Emulate a LEON2 system - - -leon3 Emulate a LEON3 system - - -nfp Disable FPU. FPops will cause an FPU disabled trap. - - -freq <f> Set the simulated "system clock" to <f> MHz. - - -v Verbose mode. - - -nogdb Disable GDB breakpoint handling (see below) - -To start debugging a program type 'load <program>' and debug as -usual. - -The native simulator commands can be reached using the GDB 'sim' -command: - -sim <sis_command> - -Direct simulator commands during a GDB session must be issued -with care not to disturb GDB's operation ... - -A program can be restarted in GDB by first issuing the load command, -followed by run. - -sis can also be connected to gdb when started standalone, using the gdb remote -insterface. Either start sis with -gdb, or issue the 'gdb' command inside sis, -and connect gdb with 'target extended-remote localhost:1234'. sis will operate -identical with built-in or remote interfaces. - -4.1 GDB breakpoint handling - -GDB inserts breakpoint in the form of the 'ta 1' instruction. The -GDB-integrated simulator will therefore recognize the breakpoint -instruction and return control to GDB. If the application uses -'ta 1', the breakpoint detection can be disabled with the -nogdb -switch. In this case however, GDB breakpoints will not work. - - -5. Simulator core - -In ERC32 mode, SIS emulates the behavior of the 90C601E and 90C602E -sparc IU and FPU from Matra MHS. These are roughly equivalent to the -Cypress C601 and C602. The simulator is reasonably cycle accurate, a simulator -time is maintained and incremented according the IU and FPU instruction timing. -The parallel execution between the IU and FPU is modelled, as well as -stalls due to operand dependencies (FPU). - -In Leon2/3 mode, the core emulates the Leon2/3 SPARC V8 core from -Gaisler Research. All SPARC V8 instructions are supported but -emulation is not fully cycle-true as the cache is not emulated. - -In RISC-V mode, a RV32IMACF profile is emulated. No cache or MMU -are modelled. - -6. Memory module - -The ERC32 memory module (erc32.c) emulates the functions of memory and -the MEC asic developed for the 90C601/2. It includes the following functions: - -* UART A & B -* Real-time clock -* General purpose timer -* Interrupt controller -* Breakpoint register -* Watchpoint register -* 16 Mbyte ROM -* 16 Mbyte RAM - -See README.erc32 on how the MEC functions are emulated. - -The Leon2 memory module (leon2.c) emulates on-chip peripherals and -external memory for a simple Leon2 system. The modules includes the -following functions: - -* AHB and APB buses -* One UART -* Interrupt controller -* Timer unit with two timers -* PROM/SRAM memory controller -* 16 Mbyte PROM, 16 Mbyte SRAM - -See README.leon2 for further details on Leon2 emulation. - -The Leon3 memory module (leon3.c) emulates on-chip peripherals and -external memory for a simple Leon3 system. The modules includes the -following functions: - -* AHB and APB buses with plug&play -* UART (APBUART) -* Interrupt controller (IRQMP) -* Timer unit with two timers (GPTIMER) -* PROM/SRAM memory controller (SRCTRL) -* 16 Mbyte PROM, 16 Mbyte SRAM - -The RISC-V cpu uses the same peripherals as Leon3, but implements the -RISC-V instructions set instead of SPARC. See README.riscv for further -details. - -7. FPU implementation - -The simulator maps floating-point operations on the hosts floating point -capabilities. This means that accuracy and generation of IEEE exceptions is -host dependent. - -8. Code coverage - -Code coverage data will be produce if sis is started with the -cov switch. -The coverage data will be stored in a file name same as the file used with -the load command, appended with .cov. For instance, if sis is run with -hello.exe, the coverage data will be stored in hello.exe.cov. The coverage -file is created when the simulator is exited. - -The coverage file data consists of a starting address, and a number of -coverage points indicating incremental 32-bit word addresses: - -0x40000000 0 0 0 19 9 1 1 1 1 0 ..... - -The coverage points are in hexadecimal format. Bit 0 (lsb) indicates an -executed instruction. Bit 3 indicates taken branch and bit 4 indicates -an untaken branch. Bits 2 and 3 are currently not used. - -For RISC-V, code coverage is only supported for 32-bit instructions, i.e. -the C-extension can not be used when code coverage is measured. |