# # LEON configuration written in linux configuration language # # Written by Jiri Gaisler, Aeroflex Gaisler # # Comments and bug reports to support@gaisler.com # # define_bool CONFIG_PERI_LCONF y mainmenu_name "LEON Processor Configuration" mainmenu_option next_comment comment 'Synthesis ' choice 'Target technology ' \ "Generic CONFIG_SYN_GENERIC \ Atmel-ATC35 CONFIG_SYN_ATC35 \ Atmel-ATC25 CONFIG_SYN_ATC25 \ Atmel-ATC18 CONFIG_SYN_ATC18 \ UMC-FS90 CONFIG_SYN_FS90 \ UMC-0.18 CONFIG_SYN_UMC018 \ TSMC-0.25 CONFIG_SYN_TSMC025 \ Actel-Proasic CONFIG_SYN_PROASIC \ Actel-Axcel CONFIG_SYN_AXCEL \ Xilinx-Virtex CONFIG_SYN_VIRTEX \ Xilinx-Virtex2 CONFIG_SYN_VIRTEX2" Generic if [ "$CONFIG_SYN_GENERIC" != "y" ]; then bool 'Infer cache and trace buffer RAM' CONFIG_SYN_INFER_RAM bool 'Infer register file' CONFIG_SYN_INFER_REGF if [ "$CONFIG_SYN_VIRTEX" = "y" -o "$CONFIG_SYN_VIRTEX2" = "y"]; then bool 'Infer ROM' CONFIG_SYN_INFER_ROM fi if [ "$CONFIG_SYN_VIRTEX" != "y" -a "$CONFIG_SYN_AXCEL" != "y" \ -a "$CONFIG_SYN_VIRTEX2" != "y" -a "$CONFIG_SYN_PROASIC" != "y" ]; then bool 'Infer pads' CONFIG_SYN_INFER_PADS fi if [ "$CONFIG_SYN_AXCEL" != "y" -a "$CONFIG_SYN_PROASIC" != "y" ]; then bool 'Infer PCI pads' CONFIG_SYN_INFER_PCI_PADS fi fi bool 'Infer multiplier' CONFIG_SYN_INFER_MULT if [ "$CONFIG_SYN_GENERIC" = "y" -o "$CONFIG_SYN_VIRTEX" = "y" \ -o "$CONFIG_SYN_AXCEL" = "y" -o "$CONFIG_SYN_ATC25" = "y" \ -o "$CONFIG_SYN_INFER_REGF" = "y" -o "$CONFIG_SYN_VIRTEX2" = "y"]; then bool 'Improve register file write timing' CONFIG_SYN_RFTYPE fi if [ "$CONFIG_SYN_ATC25" = "y" -o "$CONFIG_SYN_VIRTEX" = "y" -o "$CONFIG_SYN_VIRTEX2" = "y"\ -o "$CONFIG_SYN_ATC18" = "y" -o "$CONFIG_SYN_TSMC025" = "y" ]; then if [ "$CONFIG_SYN_INFER_RAM" != "y" ]; then bool 'Use dual-port RAM for DSU trace buffer ' \ CONFIG_SYN_TRACE_DPRAM $CONFIG_SYN_ATC25 $CONFIG_SYN_ATC18 \ $CONFIG_SYN_VIRTEX $CONFIG_SYN_TSMC025 $CONFIG_SYN_VIRTEX2 fi fi endmenu mainmenu_option next_comment comment 'Clock generation' if [ "$CONFIG_SYN_VIRTEX" = "y" -o "$CONFIG_SYN_VIRTEX2" = "y" ]; then bool 'Use Virtex CLKDLL for clock generation' CONFIG_CLK_VIRTEX fi if [ "$CONFIG_SYN_VIRTEX2" = "y" -a "$CONFIG_CLK_VIRTEX" != "y"]; then bool 'Use Virtex-II DCM for clock generation' CONFIG_CLK_VIRTEX2 fi if [ "$CONFIG_CLK_VIRTEX" = "y"]; then choice ' System clock multiplier (CLKDLL)' \ "1/2 CONFIG_CLKDLL_1_2 \ 1 CONFIG_CLKDLL_1_1 \ 2 CONFIG_CLKDLL_2_1" 1 fi if [ "$CONFIG_CLK_VIRTEX2" = "y"]; then choice ' System clock multiplier (DCM)' \ "2/3 CONFIG_DCM_2_3 \ 3/4 CONFIG_DCM_3_4 \ 4/5 CONFIG_DCM_4_5 \ 1 CONFIG_DCM_1_1 \ 5/4 CONFIG_DCM_5_4 \ 4/3 CONFIG_DCM_4_3 \ 3/2 CONFIG_DCM_3_2 \ 5/3 CONFIG_DCM_5_3 \ 2 CONFIG_DCM_2_1 \ 3 CONFIG_DCM_3_1 \ 4 CONFIG_DCM_4_1" 1 fi if [ "$CONFIG_SYN_AXCEL" = "y" ]; then bool 'Use global clock pad (Actel AX)' CONFIG_AXCEL_HCLKBUF fi if [ "$CONFIG_SYN_VIRTEX2" = "y" -o "$CONFIG_CLK_VIRTEX" = "y"]; then bool 'Enable CLKDLL for PCI clock' CONFIG_PCI_DLL fi if [ "$CONFIG_PCI_DLL" != "y" ]; then bool 'Use PCI clock as system clock' CONFIG_PCI_SYSCLK fi endmenu mainmenu_option next_comment comment 'Processor ' mainmenu_option next_comment comment 'Integer unit ' int 'SPARC register windows' CONFIG_IU_NWINDOWS 8 bool 'SPARC V8 MUL/DIV instructions' CONFIG_IU_V8MULDIV if [ "$CONFIG_IU_V8MULDIV" = "y" ]; then choice 'Hardware multiplier latency' \ "1-cycle CONFIG_IU_MUL_LATENCY_1 \ 2-cycles CONFIG_IU_MUL_LATENCY_2 \ 4-cycles CONFIG_IU_MUL_LATENCY_4 \ 5-cycles CONFIG_IU_MUL_LATENCY_5 \ 35-cycles CONFIG_IU_MUL_LATENCY_35" 5-cycles fi dep_bool 'SPARC V8e SMAC/UMAC instructions ' CONFIG_IU_MUL_MAC $CONFIG_IU_MUL_LATENCY_4 $CONFIG_IU_V8MULDIV int 'Load delay' CONFIG_IU_LDELAY 1 bool 'Fast jump-address generation ' CONFIG_IU_FASTJUMP bool 'ICC interlock ' CONFIG_IU_ICCHOLD bool 'Fast instruction decoding ' CONFIG_IU_FASTDECODE if [ "$CONFIG_SYN_TSMC025" = "y" -o "$CONFIG_SYN_UMC018" = "y" \ -o "$CONFIG_SYN_FS90" = "y" -o "$CONFIG_SYN_PROASIC" = "y" \ -o "$CONFIG_SYN_ATC18" = "y" \ -o "$CONFIG_SYN_AXCEL" = "y" -o "$CONFIG_SYN_ATC25" = "y" ]; then bool 'Register file power-saving ' CONFIG_IU_RFPOW fi int 'Hardware watchpoints' CONFIG_IU_WATCHPOINTS 0 endmenu mainmenu_option next_comment comment 'Floating-point unit' bool 'Enable FPU ' CONFIG_FPU_ENABLE if [ "$CONFIG_FPU_ENABLE" = "y" ]; then choice 'FPU core' \ "GRFPU CONFIG_FPU_GRFPU \ Meiko CONFIG_FPU_MEIKO \ LTH CONFIG_FPU_LTH" GRFPU int 'FSR version ID' CONFIG_FPU_VER 0 fi endmenu mainmenu_option next_comment comment 'Co-processor' bool 'Enable co-processor ' CONFIG_CP_ENABLE if [ "$CONFIG_CP_ENABLE" = "y" ]; then string 'Co-processor configuration' CONFIG_CP_CFG "cp_none" fi endmenu mainmenu_option next_comment comment 'Cache system ' comment 'Instruction cache ' choice 'Associativity (sets) ' \ "1 CONFIG_ICACHE_ASSO1 \ 2 CONFIG_ICACHE_ASSO2 \ 3 CONFIG_ICACHE_ASSO3 \ 4 CONFIG_ICACHE_ASSO4" 1 choice 'Set size (kbytes/set)' \ "1 CONFIG_ICACHE_SZ1 \ 2 CONFIG_ICACHE_SZ2 \ 4 CONFIG_ICACHE_SZ4 \ 8 CONFIG_ICACHE_SZ8 \ 16 CONFIG_ICACHE_SZ16 \ 32 CONFIG_ICACHE_SZ32 \ 64 CONFIG_ICACHE_SZ64" 2 choice 'Line size (bytes/line)' \ "16 CONFIG_ICACHE_LZ16 \ 32 CONFIG_ICACHE_LZ32" 16 if [ "$CONFIG_ICACHE_ASSO1" != "y" ]; then choice 'Replacement alorithm' \ "Random CONFIG_ICACHE_ALGORND \ LRR CONFIG_ICACHE_ALGOLRR \ LRU CONFIG_ICACHE_ALGOLRU" Random bool 'Cache locking ' CONFIG_ICACHE_LOCK fi comment 'Data cache' choice 'Associativity (sets)' \ "1 CONFIG_DCACHE_ASSO1 \ 2 CONFIG_DCACHE_ASSO2 \ 3 CONFIG_DCACHE_ASSO3 \ 4 CONFIG_DCACHE_ASSO4" 1 choice 'Set size (kbytes/set)' \ "1 CONFIG_DCACHE_SZ1 \ 2 CONFIG_DCACHE_SZ2 \ 4 CONFIG_DCACHE_SZ4 \ 8 CONFIG_DCACHE_SZ8 \ 16 CONFIG_DCACHE_SZ16 \ 32 CONFIG_DCACHE_SZ32 \ 64 CONFIG_DCACHE_SZ64" 2 choice 'Line size (bytes/line)' \ "16 CONFIG_DCACHE_LZ16 \ 32 CONFIG_DCACHE_LZ32" 16 if [ "$CONFIG_DCACHE_ASSO1" != "y" ]; then choice 'Replacement alorithm' \ "Random CONFIG_DCACHE_ALGORND \ LRR CONFIG_DCACHE_ALGOLRR \ LRU CONFIG_DCACHE_ALGOLRU" Random bool 'Cache locking ' CONFIG_DCACHE_LOCK fi if [ "$CONFIG_SYN_ATC25" = "y" -o "$CONFIG_SYN_VIRTEX" = "y" -o "$CONFIG_SYN_VIRTEX2" = "y" \ -o "$CONFIG_SYN_ATC18" = "y" -o "$CONFIG_SYN_TSMC025" = "y" ]; then if [ "$CONFIG_SYN_INFER_RAM" != "y" -a "$CONFIG_MMU_ENABLE" != "y" ]; then bool 'AHB snooping ' CONFIG_DCACHE_SNOOP fi fi if [ "$CONFIG_DCACHE_SNOOP" = "y" ]; then choice 'Snoop implementation' \ "Slow CONFIG_DCACHE_SNOOP_SLOW \ Fast CONFIG_DCACHE_SNOOP_FAST" Slow fi if [ "$CONFIG_DCACHE_ASSO1" != "y" ]; then bool 'Fast read-data generation ' CONFIG_DCACHE_RFAST fi if [ "$CONFIG_DCACHE_ASSO1" != "y" ]; then bool 'Fast write-data generation ' CONFIG_DCACHE_WFAST fi if [ "$CONFIG_MMU_ENABLE" != "y" ]; then bool 'Enable local data RAM ' CONFIG_DCACHE_LRAM fi if [ "$CONFIG_DCACHE_LRAM" = "y" ]; then choice 'Local data RAM size (kbytes)' \ "1 CONFIG_DCACHE_LRAM_SZ1 \ 2 CONFIG_DCACHE_LRAM_SZ2 \ 4 CONFIG_DCACHE_LRAM_SZ4 \ 8 CONFIG_DCACHE_LRAM_SZ8 \ 16 CONFIG_DCACHE_LRAM_SZ16 \ 32 CONFIG_DCACHE_LRAM_SZ32 \ 64 CONFIG_DCACHE_LRAM_SZ64" 2 hex ' Local RAM start address (8 MSB) ' CONFIG_DCACHE_LRSTART 0x8f fi endmenu mainmenu_option next_comment comment 'MMU' bool 'Enable MMU ' CONFIG_MMU_ENABLE if [ "$CONFIG_MMU_ENABLE" = "y" ]; then choice 'MMU type ' \ "combined CONFIG_MMU_COMBINED \ split CONFIG_MMU_SPLIT" combined choice 'TLB replacement sheme ' \ "LRU CONFIG_MMU_REPARRAY \ Increment CONFIG_MMU_REPINCREMENT" increment choice 'Instruction (or combined) TLB entries' \ "2 CONFIG_MMU_I2 \ 4 CONFIG_MMU_I4 \ 8 CONFIG_MMU_I8 \ 16 CONFIG_MMU_I16 \ 32 CONFIG_MMU_I32" 8 if [ "$CONFIG_MMU_SPLIT" = "y" ]; then choice 'Data TLB entries' \ "2 CONFIG_MMU_D2 \ 4 CONFIG_MMU_D4 \ 8 CONFIG_MMU_D8 \ 16 CONFIG_MMU_D16 \ 32 CONFIG_MMU_D32" 8 fi bool 'Enable Diagnostic Access ' CONFIG_MMU_DIAG fi endmenu mainmenu_option next_comment comment 'Debug support unit ' bool 'Debug support unit ' CONFIG_DSU_ENABLE if [ "$CONFIG_DSU_ENABLE" = "y" ]; then bool 'Trace buffer' CONFIG_DSU_TRACEBUF if [ "$CONFIG_DSU_TRACEBUF" = "y" ]; then bool 'Mixed instruction/AHB tracing' CONFIG_DSU_MIXED_TRACE choice 'Trace buffer lines' \ "64 CONFIG_DSU_TRACESZ64 \ 128 CONFIG_DSU_TRACESZ128 \ 256 CONFIG_DSU_TRACESZ256 \ 512 CONFIG_DSU_TRACESZ512 \ 1024 CONFIG_DSU_TRACESZ1024" 128 fi fi endmenu endmenu mainmenu_option next_comment comment 'AMBA configuration' int 'Default AHB master' CONFIG_AHB_DEFMST 0 bool 'AHB split-transaction support ' CONFIG_AHB_SPLIT endmenu mainmenu_option next_comment comment 'Memory controller' bool '8-bit PROM/SRAM bus support ' CONFIG_MCTRL_8BIT bool '16-bit PROM/SRAM bus support ' CONFIG_MCTRL_16BIT bool 'RAM write protection ' CONFIG_PERI_WPROT bool 'Write strobe timing feedback ' CONFIG_MCTRL_WFB bool '5th SRAM chip-select ' CONFIG_MCTRL_5CS bool 'SDRAM controller ' CONFIG_MCTRL_SDRAM if [ "$CONFIG_MCTRL_SDRAM" = "y" ]; then bool 'Inverted SDRAM clock' CONFIG_MCTRL_SDRAM_INVCLK bool 'Separate address and data buses' CONFIG_MCTRL_SDRAM_SEPBUS fi endmenu mainmenu_option next_comment comment 'Peripherals ' bool 'LEON configuration register ' CONFIG_PERI_LCONF bool 'Secondary interrupt controller ' CONFIG_PERI_IRQ2 if [ "$CONFIG_PERI_IRQ2" = "y" ]; then string 'Sec. interrupt controller configuration ' CONFIG_PERI_IRQ2_CFG "irq2none" fi bool 'Watchdog ' CONFIG_PERI_WDOG bool 'AHB status register ' CONFIG_PERI_AHBSTAT bool 'On-chip AHB RAM ' CONFIG_AHBRAM_ENABLE if [ "$CONFIG_AHBRAM_ENABLE" = "y" ]; then choice 'AHB RAM size (Kbyte)' \ "1 CONFIG_AHBRAM_SZ1 \ 2 CONFIG_AHBRAM_SZ2 \ 4 CONFIG_AHBRAM_SZ4 \ 8 CONFIG_AHBRAM_SZ8 \ 16 CONFIG_AHBRAM_SZ16 \ 32 CONFIG_AHBRAM_SZ32 \ 64 CONFIG_AHBRAM_SZ64" 4 fi mainmenu_option next_comment comment 'Ethernet interface ' bool 'Enable Ethernet interface ' CONFIG_ETH_ENABLE if [ "$CONFIG_ETH_ENABLE" = "y" ]; then int 'TX FIFO depth' CONFIG_ETH_TXFIFO 8 int 'RX FIFO depth' CONFIG_ETH_RXFIFO 8 int 'AHB burst length' CONFIG_ETH_BURST 4 fi endmenu mainmenu_option next_comment comment 'PCI interface ' bool 'Enable PCI interface ' CONFIG_PCI_ENABLE if [ "$CONFIG_PCI_ENABLE" = "y" ]; then choice 'PCI core' \ "Simple-target CONFIG_PCI_SIMPLE_TARGET" Simple-target hex 'PCI vendor ID' CONFIG_PCI_VENDORID 16E3 hex 'PCI device ID' CONFIG_PCI_DEVICEID 0210 hex 'PCI revision ID' CONFIG_PCI_REVID 1 if [ "$CONFIG_PCI_FAST_TARGET" = "y" -o "$CONFIG_PCI_MASTER_TARGET" = "y" ]; then choice 'PCI FIFO depth' \ "8 CONFIG_PCI_FIFO8 \ 16 CONFIG_PCI_FIFO16 \ 32 CONFIG_PCI_FIFO32 \ 64 CONFIG_PCI_FIFO64 \ 128 CONFIG_PCI_FIFO128" 8 fi if [ "$CONFIG_PCI_TRACE" = "y" ]; then choice 'PCI trace buffer depth' \ "256 CONFIG_PCI_TRACE256 \ 512 CONFIG_PCI_TRACE512 \ 1024 CONFIG_PCI_TRACE1024 \ 2048 CONFIG_PCI_TRACE2048 \ 4096 CONFIG_PCI_TRACE4096" 256 fi bool 'PCI reset affects complete processor' CONFIG_PCI_RESETALL bool 'PCI arbiter ' CONFIG_PCI_ARBEN fi endmenu endmenu mainmenu_option next_comment comment 'Boot options' choice 'Boot selection ' \ "Memory CONFIG_BOOT_EXTPROM \ Internal-PROM CONFIG_BOOT_INTPROM \ Both CONFIG_BOOT_MIXPROM" Memory if [ "$CONFIG_BOOT_EXTPROM" != "y" ]; then int 'RAM read waitstates' CONFIG_BOOT_RWS 0 int 'RAM write waitstates' CONFIG_BOOT_WWS 0 int 'System clock frequency' CONFIG_BOOT_SYSCLK 25000000 int 'UART baud rate' CONFIG_BOOT_BAUDRATE 38400 bool 'Use external baud rate setting (PIO[7:0]) ' CONFIG_BOOT_EXTBAUD int 'Internal boot PROM address bits' CONFIG_BOOT_PROMABITS 11 fi endmenu mainmenu_option next_comment comment 'VHDL Debugging ' bool 'Accelerated UART tracing ' CONFIG_DEBUG_UART bool 'Integer unit register writes ' CONFIG_DEBUG_IURF dep_bool 'Floating-point unit register writes ' CONFIG_DEBUG_FPURF $CONFIG_FPU_ENABLE bool 'Continue on reset trap ' CONFIG_DEBUG_NOHALT bool '32-bit program counters ' CONFIG_DEBUG_PC32 if [ "$CONFIG_FT_ENABLE" = "y" ]; then if [ "$CONFIG_FT_RF_ENABLE" = "y" ]; then bool 'Inject register-file errors ' CONFIG_DEBUG_RFERR fi if [ "$CONFIG_FT_CACHEMEM_ENABLE" = "y" ]; then bool 'Inject cache memory errors ' CONFIG_DEBUG_CACHEMEMERR fi fi endmenu