OpenCores
URL https://opencores.org/ocsvn/an-fpga-implementation-of-low-latency-noc-based-mpsoc/an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk

Subversion Repositories an-fpga-implementation-of-low-latency-noc-based-mpsoc

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [src_processor/] [new_lm32/] [config/] [lm32_config_gen.v] - Rev 48

Compare with Previous | Blame | View Log

`ifdef LM32_CONFIG_V
`else
`define LM32_CONFIG_V
 
//
// EXCEPTION VECTORS BASE ADDRESS
//
 
// Base address for exception vectors
`define CFG_EBA_RESET 32'h00000000
 
// Base address for the debug exception vectors. If the DC_RE flag is
// set or the at_debug signal is asserted (see CFG_ALTERNATE_EBA) this
// will also be used for normal exception vectors.
`define CFG_DEBA_RESET 32'h00000000
 
// Enable exception vector remapping by external signal
//`define CFG_ALTERNATE_EBA
 
 
//
// ALU OPTIONS
//
 
// Enable sign-extension instructions  
`define CFG_SIGN_EXTEND_${SIGN_EXTEND}
 
// Shifter
// You may either enable the piplined or the multi-cycle barrel
// shifter. The multi-cycle shifter will stall the pipeline until
// the result is available after 32 cycles.
// If both options are disabled, only "right shift by one bit" is
// available.
 
`define CFG_BARREL_SHIFT_${BARREL_SHIFT}
 
`ifdef CFG_BARREL_SHIFT_MULTI_CYCLE
	`define CFG_MC_BARREL_SHIFT_ENABLED
 
`else 
	`ifdef  CFG_BARREL_SHIFT_PIPE_LINE
		`define CFG_PL_BARREL_SHIFT_ENABLED
	`endif
`endif 
 
 
// Multiplier
// The multiplier is available either in a multi-cycle version or
// in a pipelined one. The multi-cycle multiplier stalls the pipe
// for 32 cycles. If both options are disabled, multiply operations
// are not supported.
 
`define CFG_MULTIPLY_${MULTIPLIER_TYPE}
 
`ifdef CFG_MULTIPLY_MULTI_CYCLE
	`define CFG_MC_MULTIPLY_ENABLED
 
`else 
	`ifdef  CFG_MULTIPLY_PIPE_LINE
		`define CFG_PL_MULTIPLY_ENABLED
	`endif
`endif 
 
 
 
 
 
// Enable the multi-cycle divider. Stalls the pipe until the result
// is ready after 32 cycles. If disabled, the divide operation is not
// supported.
 
`define CFG_DIVIDE_${DIVIDOR_TYPE}
 
`ifdef CFG_DIVIDE_MULTI_CYCLE
	`define CFG_MC_DIVIDE_ENABLED
`endif
 
 
//
// INTERRUPTS
//
 
// Enable support for 32 hardware interrupts
`define CFG_INTERRUPTS_ENABLED
 
// Enable level-sensitive interrupts. The interrupt line status is
// reflected in the IP register, which is then read-only.
//`define CFG_LEVEL_SENSITIVE_INTERRUPTS
 
 
//
// USER INSTRUCTION
//
 
// Enable support for the user opcode.
//`define CFG_USER_ENABLED
 
 
//
// MEMORY MANAGEMENT UNIT
//
 
// Enable instruction and data translation lookaside buffers and
// restricted user mode.
//`define CFG_MMU_ENABLED
 
 
//
// CACHE
//
 
// Instruction cache
`define CFG_ICACHE_${INSTRUCTION_CACHE}
`define CFG_ICACHE_ASSOCIATIVITY   ${ICACHE_ASSOCIATIVITY}
`define CFG_ICACHE_SETS            ${ICACHE_SETS}
`define CFG_ICACHE_BYTES_PER_LINE  16
`define CFG_ICACHE_BASE_ADDRESS    32'h00000000
`define CFG_ICACHE_LIMIT           32'h7fffffff
 
// Data cache
`define CFG_DCACHE_${DATA_CACHE}
`define CFG_DCACHE_ASSOCIATIVITY   ${DCACHE_ASSOCIATIVITY}
`define CFG_DCACHE_SETS            ${DCACHE_SETS}
`define CFG_DCACHE_BYTES_PER_LINE  16
`define CFG_DCACHE_BASE_ADDRESS    32'h00000000
`define CFG_DCACHE_LIMIT           32'h7fffffff
 
 
//
// DEBUG OPTION
//
 
// Globally enable debugging
//`define CFG_DEBUG_ENABLED
 
// Enable the hardware JTAG debugging interface.
// Note: to use this, there must be a special JTAG module for your
//       device. At the moment, there is only support for the
//       Spartan-6.
//`define CFG_JTAG_ENABLED
 
// JTAG UART is a communication chanel which uses JTAG to transmit
// and receive bytes to and from the host computer.
//`define CFG_JTAG_UART_ENABLED
 
// Enable reading and writing to the memory and writing CSRs using
// the JTAG interface.
//`define CFG_HW_DEBUG_ENABLED
 
// Number of hardware watchpoints, max. 4
//`define CFG_WATCHPOINTS 32'h4
 
// Enable hardware breakpoints
//`define CFG_ROM_DEBUG_ENABLED
 
// Number of hardware breakpoints, max. 4
//`define CFG_BREAKPOINTS 32'h4
 
// Put the processor into debug mode by an external signal. That is,
// raise a breakpoint exception. This is useful if you have a debug
// monitor and a serial line and you want to trap into the monitor on a
// BREAK symbol on the serial line.
//`define CFG_EXTERNAL_BREAK_ENABLED
 
 
//
// REGISTER FILE
//
 
// The following option explicitly infers block RAM for the register
// file. There is extra logic to avoid parallel writes and reads.
// Normally, if your synthesizer is smart enough, this should not be
// necessary because it will automatically infer block RAM for you.
//`define CFG_EBR_POSEDGE_REGISTER_FILE
 
// Explicitly infers block RAM, too. But it uses two different clocks,
// one being shifted by 180deg, for the read and write port. Therefore,
// no additional logic to avoid the parallel write/reads.
//`define CFG_EBR_NEGEDGE_REGISTER_FILE
 
 
//
// MISCELLANEOUS
//
 
// Exceptions on wishbone bus errors
//`define CFG_BUS_ERRORS_ENABLED
 
// Enable the cycle counter
`define CFG_CYCLE_COUNTER_ENABLED
 
// Embedded instruction ROM using on-chip block RAM
//`define CFG_IROM_ENABLED
//`define CFG_IROM_INIT_FILE     "NONE"
//`define CFG_IROM_BASE_ADDRESS  32'h10000000
//`define CFG_IROM_LIMIT         32'h10000fff
 
// Embedded data RAM using on-chip block RAM
//`define CFG_DRAM_ENABLED
//`define CFG_DRAM_INIT_FILE     "NONE"
//`define CFG_DRAM_BASE_ADDRESS  32'h20000000
//`define CFG_DRAM_LIMIT         32'h20000fff
 
// Trace unit
//`define CFG_TRACE_ENABLED
 
// Resolve unconditional branches already in the X stage (UNTESTED!)
//`define CFG_FAST_UNCONDITIONAL_BRANCH
 
// log2 function
// If your simulator/synthesizer does not support the $clog2 system
// function you can use a constant function instead.
 
//function integer clog2;
//  input integer value;
//  begin
//    value = value - 1;
//    for (clog2 = 0; value > 0; clog2 = clog2 + 1)
//      value = value >> 1;
//  end
//endfunction
//
//`define CLOG2 clog2
 
`define CLOG2 $clog2
 
`endif
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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