blob: d44ba43cbf8b49cff55f975b395eba24bd8e3fe4 [file] [log] [blame]
Stefan Kristianssonf179cc62011-11-26 19:04:55 +00001/* sim.cfg -- Simulator configuration script file
2 Copyright (C) 2001-2002, Marko Mlinar, markom@opencores.org
3
4This file is part of OpenRISC 1000 Architectural Simulator.
5It contains the default configuration and help about configuring
6the simulator.
7
8This program is free software; you can redistribute it and/or modify
9it under the terms of the GNU General Public License as published by
10the Free Software Foundation; either version 2 of the License, or
11(at your option) any later version.
12
13This program is distributed in the hope that it will be useful,
14but WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16GNU General Public License for more details.
17
18You should have received a copy of the GNU General Public License
19along with this program; if not, write to the Free Software
20Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
21
22
23/* INTRODUCTION
24
25 The ork1sim has various parameters, that are set in configuration files
26 like this one. The user can switch between configurations at startup by
27 specifying the required configuration file with the -f <filename.cfg> option.
28 If no configuration file is specified or1ksim searches for the default
29 configuration file sim.cfg. First it searches for './sim.cfg'. If this
30 file is not found, it searches for '~/or1k/sim.cfg'. If this file is
31 not found too, it reverts to the built-in default configuration.
32
33 NOTE: Users should not rely on the built-in configuration, since the
34 default configuration may differ between version.
35 Rather create a configuration file that sets all critical values.
36
37 This file may contain (standard C) comments only - no // support.
38
39 Configure files may be be included, using:
40 include "file_name_to_include"
41
42 Like normal configuration files, the included file is divided into
43 sections. Each section is described in detail also.
44
45 Some section have subsections. One example of such a subsection is:
46
47 device <index>
48 instance specific parameters...
49 enddevice
50
51 which creates a device instance.
52*/
53
54
55/* MEMORY SECTION
56
57 This section specifies how the memory is generated and the blocks
58 it consists of.
59
60 type = random/unknown/pattern
61 Specifies the initial memory values.
62 'random' generates random memory using seed 'random_seed'.
63 'pattern' fills memory with 'pattern'.
64 'unknown' does not specify how memory should be generated,
65 leaving the memory in a undefined state. This is the fastest
66 option.
67
68 random_seed = <value>
69 random seed for randomizer, used if type = 'random'.
70
71 pattern = <value>
72 pattern to fill memory, used if type = 'pattern'.
73
74 nmemories = <value>
75 number of memory instances connected
76
77 baseaddr = <hex_value>
78 memory start address
79
80 size = <hex_value>
81 memory size
82
83 name = "<string>"
84 memory block name
85
86 ce = <value>
87 chip enable index of the memory instance
88
89 mc = <value>
90 memory controller this memory is connected to
91
92 delayr = <value>
93 cycles, required for read access, -1 if instance does not support reading
94
95 delayw = <value>
96 cycles, required for write access, -1 if instance does not support writing
97
98 log = "<filename>"
99 filename, where to log memory accesses to, no log, if log command is not specified
100*/
101
102
103section memory
104 pattern = 0x00
105 type = unknown /* Fastest */
106
107 name = "FLASH"
108 ce = 0
109 mc = 0
110 baseaddr = 0xf0000000
111 size = 0x01000000
112 delayr = 1
113 delayw = -1
114end
115
116section memory
117 pattern = 0x00
118 type = unknown /* Fastest */
119
120 name = "RAM"
121 ce = 1
122 mc = 0
123 baseaddr = 0x00000000
124 size = 0x02000000
125 delayr = 1
126 delayw = 1
127end
128
129section memory
130 pattern = 0x00
131 type = unknown /* Fastest */
132
133 name = "SRAM"
134 mc = 0
135 ce = 2
136 baseaddr = 0xa4000000
137 size = 0x00100000
138 delayr = 1
139 delayw = 2
140end
141
142
143/* IMMU SECTION
144
145 This section configures the Instruction Memory Manangement Unit
146
147 enabled = 0/1
148 '0': disabled
149 '1': enabled
150 (NOTE: UPR bit is set)
151
152 nsets = <value>
153 number of ITLB sets; must be power of two
154
155 nways = <value>
156 number of ITLB ways
157
158 pagesize = <value>
159 instruction page size; must be power of two
160
161 entrysize = <value>
162 instruction entry size in bytes
163
164 ustates = <value>
165 number of ITLB usage states (2, 3, 4 etc., max is 4)
166
167 hitdelay = <value>
168 number of cycles immu hit costs
169
170 missdelay = <value>
171 number of cycles immu miss costs
172*/
173
174section immu
175 enabled = 1
176 nsets = 64
177 nways = 1
178 pagesize = 8192
179 hitdelay = 0
180 missdelay = 0
181end
182
183
184/* DMMU SECTION
185
186 This section configures the Data Memory Manangement Unit
187
188 enabled = 0/1
189 '0': disabled
190 '1': enabled
191 (NOTE: UPR bit is set)
192
193 nsets = <value>
194 number of DTLB sets; must be power of two
195
196 nways = <value>
197 number of DTLB ways
198
199 pagesize = <value>
200 data page size; must be power of two
201
202 entrysize = <value>
203 data entry size in bytes
204
205 ustates = <value>
206 number of DTLB usage states (2, 3, 4 etc., max is 4)
207
208 hitdelay = <value>
209 number of cycles dmmu hit costs
210
211 missdelay = <value>
212 number of cycles dmmu miss costs
213*/
214
215section dmmu
216 enabled = 1
217 nsets = 64
218 nways = 1
219 pagesize = 8192
220 hitdelay = 0
221 missdelay = 0
222end
223
224
225/* IC SECTION
226
227 This section configures the Instruction Cache
228
229 enabled = 0/1
230 '0': disabled
231 '1': enabled
232 (NOTE: UPR bit is set)
233
234 nsets = <value>
235 number of IC sets; must be power of two
236
237 nways = <value>
238 number of IC ways
239
240 blocksize = <value>
241 IC block size in bytes; must be power of two
242
243 ustates = <value>
244 number of IC usage states (2, 3, 4 etc., max is 4)
245
246 hitdelay = <value>
247 number of cycles ic hit costs
248
249 missdelay = <value>
250 number of cycles ic miss costs
251*/
252
253section ic
254 enabled = 1
255 nsets = 512
256 nways = 1
257 blocksize = 16
258 hitdelay = 1
259 missdelay = 1
260end
261
262
263/* DC SECTION
264
265 This section configures the Data Cache
266
267 enabled = 0/1
268 '0': disabled
269 '1': enabled
270 (NOTE: UPR bit is set)
271
272 nsets = <value>
273 number of DC sets; must be power of two
274
275 nways = <value>
276 number of DC ways
277
278 blocksize = <value>
279 DC block size in bytes; must be power of two
280
281 ustates = <value>
282 number of DC usage states (2, 3, 4 etc., max is 4)
283
284 load_hitdelay = <value>
285 number of cycles dc load hit costs
286
287 load_missdelay = <value>
288 number of cycles dc load miss costs
289
290 store_hitdelay = <value>
291 number of cycles dc load hit costs
292
293 store_missdelay = <value>
294 number of cycles dc load miss costs
295*/
296
297section dc
298 enabled = 1
299 nsets = 512
300 nways = 1
301 blocksize = 16
302 load_hitdelay = 1
303 load_missdelay = 1
304 store_hitdelay = 1
305 store_missdelay = 1
306end
307
308
309/* SIM SECTION
310
311 This section specifies how or1ksim should behave.
312
313 verbose = 0/1
314 '0': don't print extra messages
315 '1': print extra messages
316
317 debug = 0-9
318 0 : no debug messages
319 1-9: debug message level.
320 higher numbers produce more messages
321
322 profile = 0/1
323 '0': don't generate profiling file 'sim.profile'
324 '1': don't generate profiling file 'sim.profile'
325
326 prof_fn = "<filename>"
327 optional filename for the profiling file.
328 valid only if 'profile' is set
329
330 mprofile = 0/1
331 '0': don't generate memory profiling file 'sim.mprofile'
332 '1': generate memory profiling file 'sim.mprofile'
333
334 mprof_fn = "<filename>"
335 optional filename for the memory profiling file.
336 valid only if 'mprofile' is set
337
338 history = 0/1
339 '0': don't track execution flow
340 '1': track execution flow
341 Execution flow can be tracked for the simulator's
342 'hist' command. Useful for back-trace debugging.
343
344 iprompt = 0/1
345 '0': start in <not interactive prompt> (so what do we start in ???)
346 '1': start in interactive prompt.
347
348 exe_log = 0/1
349 '0': don't generate execution log.
350 '1': generate execution log.
351
352 exe_log = default/hardware/simple/software
353 type of execution log, default is used when not specified
354
355 exe_log_start = <value>
356 index of first instruction to start logging, default = 0
357
358 exe_log_end = <value>
359 index of last instruction to end logging; not limited, if omitted
360
361 exe_log_marker = <value>
362 <value> specifies number of instructions before horizontal marker is
363 printed; if zero, markers are disabled (default)
364
365 exe_log_fn = "<filename>"
366 filename for the exection log file.
367 valid only if 'exe_log' is set
368
369 clkcycle = <value>[ps|ns|us|ms]
370 specifies time measurement for one cycle
371*/
372
373section sim
374 verbose = 1
375 debug = 0
376 profile = 0
377 history = 0
378
379 clkcycle = 10ns
380end
381
382
383/* SECTION VAPI
384
385 This section configures the Verification API, used for Advanced
386 Core Verification.
387
388 enabled = 0/1
389 '0': disbable VAPI server
390 '1': enable/start VAPI server
391
392 server_port = <value>
393 TCP/IP port to start VAPI server on
394
395 log_enabled = 0/1
396 '0': disable VAPI requests logging
397 '1': enable VAPI requests logging
398
399 hide_device_id = 0/1
400 '0': don't log device id (for compatability with old version)
401 '1': log device id
402
403
404 vapi_fn = <filename>
405 filename for the log file.
406 valid only if log_enabled is set
407*/
408
409section VAPI
410 enabled = 0
411 server_port = 9998
412 log_enabled = 0
413 vapi_log_fn = "vapi.log"
414end
415
416
417/* CPU SECTION
418
419 This section specifies various CPU parameters.
420
421 ver = <value>
422 rev = <value>
423 specifies version and revision of the CPU used
424
425 upr = <value>
426 changes the upr register
427
428 sr = <value>
429 sets the initial Supervision Register value
430 supervisor mode (SM) and fixed one (FO) set = 0x8001
431 exception prefix high (EPH, vectors@0xf0000000) = 0x4000
432 together, (SM | FO | EPH) = 0xc001
433 superscalar = 0/1
434 '0': CPU is scalar
435 '1': CPU is superscalar
436 (modify cpu/or32/execute.c to tune superscalar model)
437
438 hazards = 0/1
439 '0': don't track data hazards in superscalar CPU
440 '1': track data hazards in superscalar CPU
441 If tracked, data hazards can be displayed using the
442 simulator's 'r' command.
443
444 dependstats = 0/1
445 '0': don't calculate inter-instruction dependencies.
446 '1': calculate inter-instruction dependencies.
447 If calculated, inter-instruction dependencies can be
448 displayed using the simulator's 'stat' command.
449
450 sbuf_len = <value>
451 length of store buffer (<= 256), 0 = disabled
452*/
453
454section cpu
455 ver = 0x12
456 cfg = 0x00
457 rev = 0x01
458 sr = 0x8001 /*SPR_SR_FO | SPR_SR_SM | SPR_SR_EPH */
459 /* upr = */
460 superscalar = 0
461 hazards = 0
462 dependstats = 0
463 sbuf_len = 0
464end
465
466
467/* PM SECTION
468
469 This section specifies Power Management parameters
470
471 enabled = 0/1
472 '0': disable power management
473 '1': enable power management
474*/
475
476section pm
477 enabled = 0
478end
479
480
481/* BPB SECTION
482
483 This section specifies how branch prediction should behave.
484
485 enabled = 0/1
486 '0': disable branch prediction
487 '1': enable branch prediction
488
489 btic = 0/1
490 '0': disable branch target instruction cache model
491 '1': enable branch target instruction cache model
492
493 sbp_bf_fwd = 0/1
494 Static branch prediction for 'l.bf'
495 '0': don't use forward prediction
496 '1': use forward prediction
497
498 sbp_bnf_fwd = 0/1
499 Static branch prediction for 'l.bnf'
500 '0': don't use forward prediction
501 '1': use forward prediction
502
503 hitdelay = <value>
504 number of cycles bpb hit costs
505
506 missdelay = <value>
507 number of cycles bpb miss costs
508*/
509
510section bpb
511 enabled = 0
512 btic = 0
513 sbp_bf_fwd = 0
514 sbp_bnf_fwd = 0
515 hitdelay = 0
516 missdelay = 0
517end
518
519
520/* DEBUG SECTION
521
522 This sections specifies how the debug unit should behave.
523
524 enabled = 0/1
525 '0': disable debug unit
526 '1': enable debug unit
527
528 gdb_enabled = 0/1
529 '0': don't start gdb server
530 '1': start gdb server at port 'server_port'
531
532 server_port = <value>
533 TCP/IP port to start gdb server on
534 valid only if gdb_enabled is set
535
536 vapi_id = <hex_value>
537 Used to create "fake" vapi log file containing the JTAG proxy messages.
538*/
539section debug
540 enabled = 0
541/* gdb_enabled = 0 */
542/* server_port = 9999*/
543 rsp_enabled = 1
544 rsp_port = 50001
545end
546
547
548/* MC SECTION
549
550 This section configures the memory controller
551
552 enabled = 0/1
553 '0': disable memory controller
554 '1': enable memory controller
555
556 baseaddr = <hex_value>
557 address of first MC register
558
559 POC = <hex_value>
560 Power On Configuration register
561
562 index = <value>
563 Index of this memory controller amongst all the memory controllers
564*/
565
566section mc
567 enabled = 0
568 baseaddr = 0x93000000
569 POC = 0x00000008 /* Power on configuration register */
570 index = 0
571end
572
573
574/* UART SECTION
575
576 This section configures the UARTs
577
578 enabled = <0|1>
579 Enable/disable the peripheral. By default if it is enabled.
580
581 baseaddr = <hex_value>
582 address of first UART register for this device
583
584
585 channel = <channeltype>:<args>
586
587 The channel parameter indicates the source of received UART characters
588 and the sink for transmitted UART characters.
589
590 The <channeltype> can be either "file", "xterm", "tcp", "fd", or "tty"
591 (without quotes).
592
593 A) To send/receive characters from a pair of files, use a file
594 channel:
595
596 channel=file:<rxfile>,<txfile>
597
598 B) To create an interactive terminal window, use an xterm channel:
599
600 channel=xterm:[<xterm_arg>]*
601
602 C) To create a bidirectional tcp socket which one could, for example,
603 access via telnet, use a tcp channel:
604
605 channel=tcp:<port number>
606
607 D) To cause the UART to read/write from existing numeric file
608 descriptors, use an fd channel:
609
610 channel=fd:<rx file descriptor num>,<tx file descriptor num>
611
612 E) To connect the UART to a physical serial port, create a tty
613 channel:
614
615 channel=tty:device=/dev/ttyS0,baud=9600
616
617 irq = <value>
618 irq number for this device
619
620 16550 = 0/1
621 '0': this device is a UART16450
622 '1': this device is a UART16550
623
624 jitter = <value>
625 in msecs... time to block, -1 to disable it
626
627 vapi_id = <hex_value>
628 VAPI id of this instance
629*/
630
631section uart
632 enabled = 1
633 baseaddr = 0x90000000
634 irq = 2
635 /* channel = "file:uart0.rx,uart0.tx" */
636 /* channel = "tcp:10084" */
637 channel = "xterm:"
638 jitter = -1 /* async behaviour */
639 16550 = 1
640end
641
642
643/* DMA SECTION
644
645 This section configures the DMAs
646
647 enabled = <0|1>
648 Enable/disable the peripheral. By default if it is enabled.
649
650 baseaddr = <hex_value>
651 address of first DMA register for this device
652
653 irq = <value>
654 irq number for this device
655
656 vapi_id = <hex_value>
657 VAPI id of this instance
658*/
659
660section dma
661 enabled = 1
662 baseaddr = 0x9a000000
663 irq = 11
664end
665
666
667/* ETHERNET SECTION
668
669 This section configures the ETHERNETs
670
671 enabled = <0|1>
672 Enable/disable the peripheral. By default if it is enabled.
673
674 baseaddr = <hex_value>
675 address of first ethernet register for this device
676
677 dma = <value>
678 which controller is this ethernet "connected" to
679
680 irq = <value>
681 ethernet mac IRQ level
682
683 rtx_type = <value>
684 use 0 - file interface, 1 - socket interface
685
686 rx_channel = <value>
687 DMA channel used for RX
688
689 tx_channel = <value>
690 DMA channel used for TX
691
692 rxfile = "<filename>"
693 filename, where to read data from
694
695 txfile = "<filename>"
696 filename, where to write data to
697
698 sockif = "<ifacename>"
699 interface name of ethernet socket
700
701 vapi_id = <hex_value>
702 VAPI id of this instance
703*/
704
705section ethernet
706 enabled = 1
707 baseaddr = 0x92000000
708 /* dma = 0 */
709 irq = 4
710 rtx_type = "tap"
711 tap_dev = "tap0"
712 /* tx_channel = 0 */
713 /* rx_channel = 1 */
714 rxfile = "eth0.rx"
715 txfile = "eth0.tx"
716 sockif = "eth0"
717end
718
719
720/* GPIO SECTION
721
722 This section configures the GPIOs
723
724 enabled = <0|1>
725 Enable/disable the peripheral. By default if it is enabled.
726
727 baseaddr = <hex_value>
728 address of first GPIO register for this device
729
730 irq = <value>
731 irq number for this device
732
733 base_vapi_id = <hex_value>
734 first VAPI id of this instance
735 GPIO uses 8 consecutive VAPI IDs
736*/
737
738section gpio
739 enabled = 0
740 baseaddr = 0x91000000
741 irq = 3
742 base_vapi_id = 0x0200
743end
744
745/* VGA SECTION
746
747 This section configures the VGA/LCD controller
748
749 enabled = <0|1>
750 Enable/disable the peripheral. By default if it is enabled.
751
752 baseaddr = <hex_value>
753 address of first VGA register
754
755 irq = <value>
756 irq number for this device
757
758 refresh_rate = <value>
759 number of cycles between screen dumps
760
761 filename = "<filename>"
762 template name for generated names (e.g. "primary" produces "primary0023.bmp")
763*/
764
765section vga
766 enabled = 0
767 baseaddr = 0x97100000
768 irq = 8
769 refresh_rate = 100000
770 filename = "primary"
771end
772
773
774/* TICK TIMER SECTION
775
776 This section configures tick timer
777
778 enabled = 0/1
779 whether tick timer is enabled
780*/
781
782section pic
783 enabled = 1
784 edge_trigger = 1
785end
786
787/* FB SECTION
788
789 This section configures the frame buffer
790
791 enabled = <0|1>
792 Enable/disable the peripheral. By default if it is enabled.
793
794 baseaddr = <hex_value>
795 base address of frame buffer
796
797 paladdr = <hex_value>
798 base address of first palette entry
799
800 refresh_rate = <value>
801 number of cycles between screen dumps
802
803 filename = "<filename>"
804 template name for generated names (e.g. "primary" produces "primary0023.bmp")
805*/
806
807section fb
808 enabled = 0
809 baseaddr = 0x97000000
810 refresh_rate = 1000000
811 filename = "primary"
812end
813
814
815/* KBD SECTION
816
817 This section configures the PS/2 compatible keyboard
818
819 baseaddr = <hex_value>
820 base address of the keyboard device
821
822 rxfile = "<filename>"
823 filename, where to read data from
824*/
825
826section kbd
827 enabled = 0
828 irq = 5
829 baseaddr = 0x94000000
830 rxfile = "kbd.rx"
831end
832
833
834/* ATA SECTION
835
836 This section configures the ATA/ATAPI host controller
837
838 baseaddr = <hex_value>
839 address of first ATA register
840
841 enabled = <0|1>
842 Enable/disable the peripheral. By default if it is enabled.
843
844 irq = <value>
845 irq number for this device
846
847 debug = <value>
848 debug level for ata models.
849 0: no debug messages
850 1: verbose messages
851 3: normal messages (more messages than verbose)
852 5: debug messages (normal debug messages)
853 7: flow control messages (debug statemachine flows)
854 9: low priority message (display everything the code does)
855
856 dev_type0/1 = <value>
857 ata device 0 type
858 0: NO_CONNeCT: none (not connected)
859 1: FILE : simulated harddisk
860 2: LOCAL : local system harddisk
861
862 dev_file0/1 = "<filename>"
863 filename for simulated ATA device
864 valid only if dev_type0 == 1
865
866 dev_size0/1 = <value>
867 size of simulated hard-disk (in MBytes)
868 valid only if dev_type0 == 1
869
870 dev_packet0/1 = <value>
871 0: simulated ATA device does NOT implement PACKET command feature set
872 1: simulated ATA device does implement PACKET command feature set
873
874 FIXME: irq number
875*/
876
877section ata
878 enabled = 0
879 baseaddr = 0x9e000000
880 irq = 15
881
882end