Merge branch 'master' into develop
Conflicts: .cproject .settings/language.settings.xml CMakeLists.txt examples/simple_system/gpio.cpp examples/simple_system/plic.cpp sc-components
This commit is contained in:
		| @@ -7,4 +7,4 @@ add_executable (ahb_bfm | ||||
| # Link the executable to the sc_components library. Since the sc_components library has | ||||
| # public include directories we will use those link directories when building | ||||
| # transaction_recording | ||||
| target_link_libraries (ahb_bfm LINK_PUBLIC scc ${CONAN_LIBS}) | ||||
| target_link_libraries (ahb_bfm LINK_PUBLIC scc) | ||||
|   | ||||
| @@ -1,16 +1,14 @@ | ||||
| #include <tlm/ahb/bfm/initiator.h> | ||||
| #include <tlm/ahb/bfm/target.h> | ||||
| #include <scc/initiator_mixin.h> | ||||
| #include <scc/target_mixin.h> | ||||
| #include <ahb/bfm/initiator.h> | ||||
| #include <ahb/bfm/target.h> | ||||
| #include <tlm/scc/initiator_mixin.h> | ||||
| #include <tlm/scc/target_mixin.h> | ||||
| #include <scc/configurable_tracer.h> | ||||
| #include <scc/configurer.h> | ||||
| #include <scc/report.h> | ||||
| #include <scc/scv_tr_db.h> | ||||
| #include <scc/tracer.h> | ||||
| #include <scc/traceable.h> | ||||
| #include <scv.h> | ||||
| #include <cci_utils/broker.h> | ||||
| #include <iostream> | ||||
| #include <fstream> | ||||
|  | ||||
| using namespace sc_core; | ||||
| using namespace scc; | ||||
| @@ -18,8 +16,8 @@ using namespace scc; | ||||
| class testbench: public sc_module, public scc::traceable { | ||||
| public: | ||||
|     enum { WIDTH=64}; | ||||
|     scc::initiator_mixin<tlm::tlm_initiator_socket<WIDTH>> isck{"isck"}; | ||||
|     tlm::ahb::bfm::initiator<WIDTH> intor{"intor"}; | ||||
|     tlm::scc::initiator_mixin<tlm::tlm_initiator_socket<WIDTH>> isck{"isck"}; | ||||
|     ahb::bfm::initiator<WIDTH> intor{"intor"}; | ||||
|     sc_core::sc_clock                         HCLK{"HCLK", 10_ns}; | ||||
|     sc_core::sc_signal<bool>                  HRESETn{"HRESETn"}; | ||||
|     sc_core::sc_signal<sc_dt::sc_uint<32>>    HADDR{"HADDR"}; | ||||
| @@ -35,8 +33,8 @@ public: | ||||
|     sc_core::sc_signal<bool>                   HRESP{"HRESP"}; | ||||
|     sc_core::sc_signal<bool>                   HSEL{"HSEL"}; | ||||
|  | ||||
|     tlm::ahb::bfm::target<WIDTH> target{"target"}; | ||||
|     scc::target_mixin<tlm::tlm_target_socket<WIDTH>> tsck{"tsck"}; | ||||
|     ahb::bfm::target<WIDTH> target{"target"}; | ||||
|     tlm::scc::target_mixin<tlm::tlm_target_socket<WIDTH>> tsck{"tsck"}; | ||||
|  | ||||
|     testbench(sc_module_name nm):sc_module(nm){ | ||||
|         SC_HAS_PROCESS(testbench); | ||||
|   | ||||
| @@ -63,7 +63,7 @@ gpio::gpio(sc_module_name nm) | ||||
|     SC_METHOD(reset_cb); | ||||
|     sensitive << rst_i; | ||||
|     dont_initialize(); | ||||
|     auto pins_i_cb =[this](unsigned int tag, tlm::tlm_signal_gp<>& gp, | ||||
|     auto pins_i_cb =[this](unsigned int tag, tlm::scc::tlm_signal_gp<>& gp, | ||||
|             tlm::tlm_phase& phase, sc_time& delay)->tlm::tlm_sync_enum{ | ||||
|         this->pin_input(tag, gp, delay); | ||||
|         return tlm::TLM_COMPLETED; | ||||
| @@ -73,7 +73,7 @@ gpio::gpio(sc_module_name nm) | ||||
|         s.register_nb_transport(pins_i_cb, i); | ||||
|         ++i; | ||||
|     } | ||||
|     auto iof0_i_cb =[this](unsigned int tag, tlm::tlm_signal_gp<>& gp, | ||||
|     auto iof0_i_cb =[this](unsigned int tag, tlm::scc::tlm_signal_gp<>& gp, | ||||
|             tlm::tlm_phase& phase, sc_time& delay)->tlm::tlm_sync_enum{ | ||||
|         last_iof0[tag]=gp.get_value(); | ||||
|         this->iof_input(tag, 0, gp, delay); | ||||
| @@ -84,7 +84,7 @@ gpio::gpio(sc_module_name nm) | ||||
|         s.register_nb_transport(iof0_i_cb, i); | ||||
|         ++i; | ||||
|     } | ||||
|     auto iof1_i_cb =[this](unsigned int tag, tlm::tlm_signal_gp<>& gp, | ||||
|     auto iof1_i_cb =[this](unsigned int tag, tlm::scc::tlm_signal_gp<>& gp, | ||||
|             tlm::tlm_phase& phase, sc_time& delay)->tlm::tlm_sync_enum{ | ||||
|         last_iof1[tag]=gp.get_value(); | ||||
|         this->iof_input(tag, 1, gp, delay); | ||||
| @@ -125,7 +125,7 @@ void gpio::clock_cb() { | ||||
| 	this->clk = clk_i.read(); | ||||
| } | ||||
|  | ||||
| tlm::tlm_phase gpio::write_output(tlm::tlm_signal_gp<bool>& gp, size_t i, bool val) { | ||||
| tlm::tlm_phase gpio::write_output(tlm::scc::tlm_signal_gp<bool>& gp, size_t i, bool val) { | ||||
|     sc_time delay{SC_ZERO_TIME}; | ||||
|     tlm::tlm_phase phase{ tlm::BEGIN_REQ }; | ||||
|     gp.set_command(tlm::TLM_WRITE_COMMAND); | ||||
| @@ -137,7 +137,7 @@ tlm::tlm_phase gpio::write_output(tlm::tlm_signal_gp<bool>& gp, size_t i, bool v | ||||
|  | ||||
| void gpio::update_pins(uint32_t changed_bits) { | ||||
|     sc_inout_rv<32>::data_type out_val; | ||||
|     tlm::tlm_signal_gp<bool> gp; | ||||
|     tlm::scc::tlm_signal_gp<bool> gp; | ||||
|     bool val{false}; | ||||
|     for(size_t i=0, mask = 1; i<32; ++i, mask<<=1){ | ||||
|         if(changed_bits&mask){ | ||||
| @@ -159,7 +159,7 @@ void gpio::update_pins(uint32_t changed_bits) { | ||||
|     } | ||||
| } | ||||
|  | ||||
| void gpio::pin_input(unsigned int tag, tlm::tlm_signal_gp<bool>& gp, sc_time& delay) { | ||||
| void gpio::pin_input(unsigned int tag, tlm::scc::tlm_signal_gp<bool>& gp, sc_time& delay) { | ||||
|     if(delay>SC_ZERO_TIME){ | ||||
|         wait(delay); | ||||
|         delay=SC_ZERO_TIME; | ||||
| @@ -174,11 +174,11 @@ void gpio::pin_input(unsigned int tag, tlm::tlm_signal_gp<bool>& gp, sc_time& de | ||||
|     } | ||||
| } | ||||
|  | ||||
| void gpio::forward_pin_input(unsigned int tag, tlm::tlm_signal_gp<bool>& gp) { | ||||
| void gpio::forward_pin_input(unsigned int tag, tlm::scc::tlm_signal_gp<bool>& gp) { | ||||
|     const auto mask = 1U<<tag; | ||||
|     if(regs->iof_en&mask){ | ||||
|         auto& socket = regs->iof_sel&mask?iof1_o[tag]:iof0_o[tag]; | ||||
|         tlm::tlm_signal_gp<> new_gp; | ||||
|         tlm::scc::tlm_signal_gp<> new_gp; | ||||
|         for(size_t i=0; i<socket.size(); ++i){ | ||||
|             sc_time delay{SC_ZERO_TIME}; | ||||
|             tlm::tlm_phase phase{tlm::BEGIN_REQ}; | ||||
| @@ -191,7 +191,7 @@ void gpio::forward_pin_input(unsigned int tag, tlm::tlm_signal_gp<bool>& gp) { | ||||
|     } | ||||
| } | ||||
|  | ||||
| void gpio::iof_input(unsigned int tag, unsigned iof_idx, tlm::tlm_signal_gp<>& gp, sc_time& delay) { | ||||
| void gpio::iof_input(unsigned int tag, unsigned iof_idx, tlm::scc::tlm_signal_gp<>& gp, sc_time& delay) { | ||||
|     if(delay>SC_ZERO_TIME){ | ||||
|          wait(delay); | ||||
|          delay=SC_ZERO_TIME; | ||||
| @@ -204,7 +204,7 @@ void gpio::iof_input(unsigned int tag, unsigned iof_idx, tlm::tlm_signal_gp<>& g | ||||
|             for(size_t i=0; i<socket.size(); ++i){ | ||||
|                 sc_time delay{SC_ZERO_TIME}; | ||||
|                 tlm::tlm_phase phase{tlm::BEGIN_REQ}; | ||||
|                 tlm::tlm_signal_gp<> new_gp; | ||||
|                 tlm::scc::tlm_signal_gp<> new_gp; | ||||
|                 new_gp.set_command(tlm::TLM_WRITE_COMMAND); | ||||
|                 auto val = gp.get_value(); | ||||
|                 new_gp.set_value(val); | ||||
|   | ||||
| @@ -38,9 +38,9 @@ | ||||
| #define _GPIO_H_ | ||||
|  | ||||
| #include "scc/tlm_target.h" | ||||
| #include "scc/signal_target_mixin.h" | ||||
| #include "scc/signal_initiator_mixin.h" | ||||
| #include <tlm/tlm_signal.h> | ||||
| #include "tlm/scc/signal_target_mixin.h" | ||||
| #include "tlm/scc/signal_initiator_mixin.h" | ||||
| #include <tlm/scc/tlm_signal.h> | ||||
|  | ||||
| namespace sysc { | ||||
|  | ||||
| @@ -54,13 +54,13 @@ public: | ||||
|     sc_core::sc_in<bool> rst_i; | ||||
|     // sc_core::sc_inout_rv<32> pins_io; | ||||
|  | ||||
|     sc_core::sc_vector<scc::tlm_signal_bool_out> pins_o; | ||||
|     sc_core::sc_vector<scc::tlm_signal_bool_in>  pins_i; | ||||
|     sc_core::sc_vector<tlm::scc::tlm_signal_bool_out> pins_o; | ||||
|     sc_core::sc_vector<tlm::scc::tlm_signal_bool_in>  pins_i; | ||||
|  | ||||
|     sc_core::sc_vector<scc::tlm_signal_bool_opt_out> iof0_o; | ||||
|     sc_core::sc_vector<scc::tlm_signal_bool_opt_out> iof1_o; | ||||
|     sc_core::sc_vector<scc::tlm_signal_bool_opt_in>  iof0_i; | ||||
|     sc_core::sc_vector<scc::tlm_signal_bool_opt_in>  iof1_i; | ||||
|     sc_core::sc_vector<tlm::scc::tlm_signal_bool_opt_out> iof0_o; | ||||
|     sc_core::sc_vector<tlm::scc::tlm_signal_bool_opt_out> iof1_o; | ||||
|     sc_core::sc_vector<tlm::scc::tlm_signal_bool_opt_in>  iof0_i; | ||||
|     sc_core::sc_vector<tlm::scc::tlm_signal_bool_opt_in>  iof1_i; | ||||
|  | ||||
|     gpio(sc_core::sc_module_name nm); | ||||
|     virtual ~gpio() override; // need to keep it in source file because of fwd declaration of gpio_regs | ||||
| @@ -69,16 +69,16 @@ protected: | ||||
|     void clock_cb(); | ||||
|     void reset_cb(); | ||||
|     void update_pins(uint32_t changed_bits); | ||||
|     void pin_input(unsigned int tag, tlm::tlm_signal_gp<>& gp, sc_core::sc_time& delay); | ||||
|     void forward_pin_input(unsigned int tag, tlm::tlm_signal_gp<>& gp); | ||||
|     void iof_input(unsigned int tag, unsigned iof_idx, tlm::tlm_signal_gp<>& gp, sc_core::sc_time& delay); | ||||
|     void pin_input(unsigned int tag, tlm::scc::tlm_signal_gp<>& gp, sc_core::sc_time& delay); | ||||
|     void forward_pin_input(unsigned int tag, tlm::scc::tlm_signal_gp<>& gp); | ||||
|     void iof_input(unsigned int tag, unsigned iof_idx, tlm::scc::tlm_signal_gp<>& gp, sc_core::sc_time& delay); | ||||
|     sc_core::sc_time clk; | ||||
|     std::array<bool, 32> last_iof0, last_iof1; | ||||
|     std::unique_ptr<gpio_regs> regs; | ||||
|     std::shared_ptr<sysc::WsHandler> handler; | ||||
|  | ||||
| private: | ||||
|     tlm::tlm_phase write_output(tlm::tlm_signal_gp<>& gp, size_t i, bool val); | ||||
|     tlm::tlm_phase write_output(tlm::scc::tlm_signal_gp<>& gp, size_t i, bool val); | ||||
| }; | ||||
|  | ||||
| } /* namespace sysc */ | ||||
|   | ||||
| @@ -22,7 +22,6 @@ | ||||
|  | ||||
| #include "simple_system.h" | ||||
| #include <scc/report.h> | ||||
| #include <scc/scv_tr_db.h> | ||||
| #include <scc/tracer.h> | ||||
| #include <boost/program_options.hpp> | ||||
|  | ||||
|   | ||||
| @@ -49,7 +49,7 @@ public: | ||||
|     sc_core::sc_signal<bool> s_rst; | ||||
|     sc_core::sc_vector<sc_core::sc_signal<bool>> s_global_interrupts; | ||||
|     sc_core::sc_signal<bool, sc_core::SC_MANY_WRITERS> s_core_interrupt; | ||||
|     sc_core::sc_vector<tlm::tlm_signal<>> s_gpio; | ||||
|     sc_core::sc_vector<tlm::scc::tlm_signal<>> s_gpio; | ||||
|  | ||||
|     simple_system(sc_core::sc_module_name nm); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user