Line 1... |
Line 1... |
-- #################################################################################################
|
-- #################################################################################################
|
-- # << NEORV32 - Default Testbench >> #
|
-- # << NEORV32 - Default Processor Testbench >> #
|
-- # ********************************************************************************************* #
|
-- # ********************************************************************************************* #
|
-- # The processor is configured to use a maximum of functional units (for testing purpose). #
|
-- # The processor is configured to use a maximum of functional units (for testing purpose). #
|
-- # Use the "User Configuration" section to configure the testbench according to your needs. #
|
-- # Use the "User Configuration" section to configure the testbench according to your needs. #
|
-- # See NEORV32 data sheet (docs/NEORV32.pdf) for more information. #
|
-- # See NEORV32 data sheet for more information. #
|
-- # ********************************************************************************************* #
|
-- # ********************************************************************************************* #
|
-- # BSD 3-Clause License #
|
-- # BSD 3-Clause License #
|
-- # #
|
-- # #
|
-- # Copyright (c) 2021, Stephan Nolting. All rights reserved. #
|
-- # Copyright (c) 2021, Stephan Nolting. All rights reserved. #
|
-- # #
|
-- # #
|
Line 191... |
Line 191... |
-- General --
|
-- General --
|
CLOCK_FREQUENCY => f_clock_c, -- clock frequency of clk_i in Hz
|
CLOCK_FREQUENCY => f_clock_c, -- clock frequency of clk_i in Hz
|
BOOTLOADER_EN => false, -- implement processor-internal bootloader?
|
BOOTLOADER_EN => false, -- implement processor-internal bootloader?
|
USER_CODE => x"12345678", -- custom user code
|
USER_CODE => x"12345678", -- custom user code
|
HW_THREAD_ID => 0, -- hardware thread id (hartid) (32-bit)
|
HW_THREAD_ID => 0, -- hardware thread id (hartid) (32-bit)
|
|
-- On-Chip Debugger (OCD) --
|
|
ON_CHIP_DEBUGGER_EN => true, -- implement on-chip debugger
|
-- RISC-V CPU Extensions --
|
-- RISC-V CPU Extensions --
|
CPU_EXTENSION_RISCV_A => true, -- implement atomic extension?
|
CPU_EXTENSION_RISCV_A => true, -- implement atomic extension?
|
CPU_EXTENSION_RISCV_B => true, -- implement bit manipulation extensions?
|
CPU_EXTENSION_RISCV_B => true, -- implement bit manipulation extensions?
|
CPU_EXTENSION_RISCV_C => true, -- implement compressed extension?
|
CPU_EXTENSION_RISCV_C => true, -- implement compressed extension?
|
CPU_EXTENSION_RISCV_E => false, -- implement embedded RF extension?
|
CPU_EXTENSION_RISCV_E => false, -- implement embedded RF extension?
|
Line 248... |
Line 250... |
)
|
)
|
port map (
|
port map (
|
-- Global control --
|
-- Global control --
|
clk_i => clk_gen, -- global clock, rising edge
|
clk_i => clk_gen, -- global clock, rising edge
|
rstn_i => rst_gen, -- global reset, low-active, async
|
rstn_i => rst_gen, -- global reset, low-active, async
|
|
-- JTAG on-chip debugger interface (available if ON_CHIP_DEBUGGER_EN = true) --
|
|
jtag_trst_i => '1', -- low-active TAP reset (optional)
|
|
jtag_tck_i => '0', -- serial clock
|
|
jtag_tdi_i => '0', -- serial data input
|
|
jtag_tdo_o => open, -- serial data output
|
|
jtag_tms_i => '0', -- mode select
|
-- Wishbone bus interface (available if MEM_EXT_EN = true) --
|
-- Wishbone bus interface (available if MEM_EXT_EN = true) --
|
wb_tag_o => wb_cpu.tag, -- request tag
|
wb_tag_o => wb_cpu.tag, -- request tag
|
wb_adr_o => wb_cpu.addr, -- address
|
wb_adr_o => wb_cpu.addr, -- address
|
wb_dat_i => wb_cpu.rdata, -- read data
|
wb_dat_i => wb_cpu.rdata, -- read data
|
wb_dat_o => wb_cpu.wdata, -- write data
|
wb_dat_o => wb_cpu.wdata, -- write data
|
Line 293... |
Line 301... |
cfs_out_o => open, -- custom CFS outputs
|
cfs_out_o => open, -- custom CFS outputs
|
-- NCO output (available if IO_NCO_EN = true) --
|
-- NCO output (available if IO_NCO_EN = true) --
|
nco_o => open, -- numerically-controlled oscillator channels
|
nco_o => open, -- numerically-controlled oscillator channels
|
-- NeoPixel-compatible smart LED interface (available if IO_NEOLED_EN = true) --
|
-- NeoPixel-compatible smart LED interface (available if IO_NEOLED_EN = true) --
|
neoled_o => open, -- async serial data line
|
neoled_o => open, -- async serial data line
|
-- system time input from external MTIME (available if IO_MTIME_EN = false) --
|
-- System time --
|
mtime_i => (others => '0'), -- current system time
|
mtime_i => (others => '0'), -- current system time from ext. MTIME (if IO_MTIME_EN = false)
|
|
mtime_o => open, -- current system time from int. MTIME (if IO_MTIME_EN = true)
|
-- Interrupts --
|
-- Interrupts --
|
nm_irq_i => nmi_ring, -- non-maskable interrupt
|
nm_irq_i => nmi_ring, -- non-maskable interrupt
|
soc_firq_i => soc_firq_ring, -- fast interrupt channels
|
soc_firq_i => soc_firq_ring, -- fast interrupt channels
|
mtime_irq_i => '0', -- machine software interrupt, available if IO_MTIME_EN = false
|
mtime_irq_i => '0', -- machine software interrupt, available if IO_MTIME_EN = false
|
msw_irq_i => msi_ring, -- machine software interrupt
|
msw_irq_i => msi_ring, -- machine software interrupt
|