/* * Copyright (c) 2019 -2021 MINRES Technolgies GmbH * * SPDX-License-Identifier: Apache-2.0 */ #ifndef _PLATFORM_H_ #define _PLATFORM_H_ #include "minres/irq.h" #include "minres/timer.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace tgc_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}; sc_core::sc_out ssclk_o{"ssclk_o"}; sc_core::sc_vector> dq_o{"dq_o", 4}; sc_core::sc_vector> dq_oe_o{"dq_oe_o", 4}; sc_core::sc_vector> dq_i{"dq_i", 4}; 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_vp::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 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"}; void gen_reset(); #include "../vp/gen/PipelinedMemoryBusToApbBridge.h" }; } /* namespace sysc */ #endif /* _PLATFORM_H_ */