Line 47... |
Line 47... |
use std.textio.all;
|
use std.textio.all;
|
|
|
entity neorv32_tb_simple is
|
entity neorv32_tb_simple is
|
generic (
|
generic (
|
CPU_EXTENSION_RISCV_A : boolean := true;
|
CPU_EXTENSION_RISCV_A : boolean := true;
|
|
CPU_EXTENSION_RISCV_B : boolean := true;
|
CPU_EXTENSION_RISCV_C : boolean := true;
|
CPU_EXTENSION_RISCV_C : boolean := true;
|
CPU_EXTENSION_RISCV_E : boolean := false;
|
CPU_EXTENSION_RISCV_E : boolean := false;
|
CPU_EXTENSION_RISCV_M : boolean := true;
|
CPU_EXTENSION_RISCV_M : boolean := true;
|
CPU_EXTENSION_RISCV_U : boolean := true;
|
CPU_EXTENSION_RISCV_U : boolean := true;
|
CPU_EXTENSION_RISCV_Zbb : boolean := true;
|
|
CPU_EXTENSION_RISCV_Zicsr : boolean := true;
|
CPU_EXTENSION_RISCV_Zicsr : boolean := true;
|
CPU_EXTENSION_RISCV_Zifencei : boolean := true;
|
CPU_EXTENSION_RISCV_Zifencei : boolean := true;
|
EXT_IMEM_C : boolean := false; -- false: use and boot from proc-internal IMEM, true: use and boot from external (initialized) simulated IMEM (ext. mem A)
|
EXT_IMEM_C : boolean := false; -- false: use and boot from proc-internal IMEM, true: use and boot from external (initialized) simulated IMEM (ext. mem A)
|
MEM_INT_IMEM_SIZE : natural := 16*1024 -- size in bytes of processor-internal IMEM / external mem A
|
MEM_INT_IMEM_SIZE : natural := 16*1024 -- size in bytes of processor-internal IMEM / external mem A
|
);
|
);
|
Line 174... |
Line 174... |
INT_BOOTLOADER_EN => false, -- boot configuration: true = boot explicit bootloader; false = boot from int/ext (I)MEM
|
INT_BOOTLOADER_EN => false, -- boot configuration: true = boot explicit bootloader; false = boot from int/ext (I)MEM
|
-- On-Chip Debugger (OCD) --
|
-- On-Chip Debugger (OCD) --
|
ON_CHIP_DEBUGGER_EN => true, -- implement on-chip debugger
|
ON_CHIP_DEBUGGER_EN => true, -- implement on-chip debugger
|
-- RISC-V CPU Extensions --
|
-- RISC-V CPU Extensions --
|
CPU_EXTENSION_RISCV_A => CPU_EXTENSION_RISCV_A, -- implement atomic extension?
|
CPU_EXTENSION_RISCV_A => CPU_EXTENSION_RISCV_A, -- implement atomic extension?
|
|
CPU_EXTENSION_RISCV_B => CPU_EXTENSION_RISCV_B, -- implement bit-manipulation extension?
|
CPU_EXTENSION_RISCV_C => CPU_EXTENSION_RISCV_C, -- implement compressed extension?
|
CPU_EXTENSION_RISCV_C => CPU_EXTENSION_RISCV_C, -- implement compressed extension?
|
CPU_EXTENSION_RISCV_E => CPU_EXTENSION_RISCV_E, -- implement embedded RF extension?
|
CPU_EXTENSION_RISCV_E => CPU_EXTENSION_RISCV_E, -- implement embedded RF extension?
|
CPU_EXTENSION_RISCV_M => CPU_EXTENSION_RISCV_M, -- implement muld/div extension?
|
CPU_EXTENSION_RISCV_M => CPU_EXTENSION_RISCV_M, -- implement muld/div extension?
|
CPU_EXTENSION_RISCV_U => CPU_EXTENSION_RISCV_U, -- implement user mode extension?
|
CPU_EXTENSION_RISCV_U => CPU_EXTENSION_RISCV_U, -- implement user mode extension?
|
CPU_EXTENSION_RISCV_Zbb => CPU_EXTENSION_RISCV_Zbb,-- implement basic bit-manipulation sub-extension?
|
|
CPU_EXTENSION_RISCV_Zfinx => true, -- implement 32-bit floating-point extension (using INT reg!)
|
CPU_EXTENSION_RISCV_Zfinx => true, -- implement 32-bit floating-point extension (using INT reg!)
|
CPU_EXTENSION_RISCV_Zicsr => CPU_EXTENSION_RISCV_Zicsr, -- implement CSR system?
|
CPU_EXTENSION_RISCV_Zicsr => CPU_EXTENSION_RISCV_Zicsr, -- implement CSR system?
|
|
CPU_EXTENSION_RISCV_Zicntr => true, -- implement base counters?
|
|
CPU_EXTENSION_RISCV_Zihpm => true, -- implement hardware performance monitors?
|
CPU_EXTENSION_RISCV_Zifencei => CPU_EXTENSION_RISCV_Zifencei, -- implement instruction stream sync.?
|
CPU_EXTENSION_RISCV_Zifencei => CPU_EXTENSION_RISCV_Zifencei, -- implement instruction stream sync.?
|
CPU_EXTENSION_RISCV_Zmmul => false, -- implement multiply-only M sub-extension?
|
CPU_EXTENSION_RISCV_Zmmul => false, -- implement multiply-only M sub-extension?
|
-- Extension Options --
|
-- Extension Options --
|
FAST_MUL_EN => false, -- use DSPs for M extension's multiplier
|
FAST_MUL_EN => false, -- use DSPs for M extension's multiplier
|
FAST_SHIFT_EN => false, -- use barrel shifter for shift operations
|
FAST_SHIFT_EN => false, -- use barrel shifter for shift operations
|