/* * Copyright (c) 2019 -2021 MINRES Technolgies GmbH * * SPDX-License-Identifier: Apache-2.0 */ #ifndef SRC_VP_SYSTEM_H_ #define SRC_VP_SYSTEM_H_ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace vp { class system : public sc_core::sc_module { public: SC_HAS_PROCESS(system); // NOLINT sc_core::sc_vector> pins_o{"pins_o", 32}; sc_core::sc_vector> pins_oe_o{"pins_oe_o", 32}; sc_core::sc_vector> pins_i{"pins_i", 32}; sc_core::sc_out uart0_tx_o{"uart0_tx_o"}; sc_core::sc_in uart0_rx_i{"uart0_rx_i"}; sc_core::sc_vector> t0_clear_i{"t0_clear_i", vpvper::minres::timer::CLEAR_CNT}; sc_core::sc_vector> t0_tick_i{"t0_tick_i", vpvper::minres::timer::TICK_CNT - 1}; spi::spi_pkt_initiator_socket<> mspi0{"mspi0"}; sc_core::sc_in clk_i{"clk_i"}; sc_core::sc_in erst_n{"erst_n"}; system(sc_core::sc_module_name nm); private: sysc::riscv::core_complex core_complex{"core_complex"}; scc::router<> ahb_router, apbBridge; vpvper::minres::gpio_tl gpio0{"gpio0"}; vpvper::minres::uart_tl uart0{"uart0"}; vpvper::minres::timer_tl timer0{"timer0"}; vpvper::minres::aclint_tl aclint{"aclint"}; vpvper::minres::irq_tl irq_ctrl{"irq_ctrl"}; vpvper::minres::qspi_tl qspi{"qspi"}; scc::memory<128_kB, scc::LT> mem_ram{"mem_ram"}; scc::memory<8_kB, scc::LT> boot_rom{"boot_rom"}; sc_core::sc_signal mtime_clk{"mtime_clk"}; sc_core::sc_signal rst_s{"rst_s"}, mtime_int_s{"mtime_int_s"}, msip_int_s{"msip_int_s"}; sc_core::sc_vector> irq_int_s{"irq_int_s", 32}, local_int_s{"local_int_s", 16}; sc_core::sc_signal core_int_s{"core_int_s"}; sc_core::sc_signal mtime_s{"mtime_s"}; void gen_reset(); #include "../vp/gen/PipelinedMemoryBusToApbBridge.h" // IWYU pragma: keep }; } // namespace vp #endif /* SRC_VP_SYSTEM_H_ */