summaryrefslogtreecommitdiff
path: root/src/systemc/tests/systemc/misc/stars/star111004/io_controller.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/systemc/tests/systemc/misc/stars/star111004/io_controller.h')
-rw-r--r--src/systemc/tests/systemc/misc/stars/star111004/io_controller.h191
1 files changed, 191 insertions, 0 deletions
diff --git a/src/systemc/tests/systemc/misc/stars/star111004/io_controller.h b/src/systemc/tests/systemc/misc/stars/star111004/io_controller.h
new file mode 100644
index 000000000..a63274904
--- /dev/null
+++ b/src/systemc/tests/systemc/misc/stars/star111004/io_controller.h
@@ -0,0 +1,191 @@
+/*****************************************************************************
+
+ Licensed to Accellera Systems Initiative Inc. (Accellera) under one or
+ more contributor license agreements. See the NOTICE file distributed
+ with this work for additional information regarding copyright ownership.
+ Accellera licenses this file to you under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with the
+ License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied. See the License for the specific language governing
+ permissions and limitations under the License.
+
+ *****************************************************************************/
+
+/*****************************************************************************
+
+ io_controller.h --
+
+ Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15
+
+ *****************************************************************************/
+
+/*****************************************************************************
+
+ MODIFICATION LOG - modifiers, enter your name, affiliation, date and
+ changes you are making here.
+
+ Name, Affiliation, Date:
+ Description of Modification:
+
+ *****************************************************************************/
+
+/*############################################################################
+# Siemens AG copyright 2000
+# All Rights Reserved
+#
+# File name : io_controller.h
+#
+# Title : I/O-Controller
+#
+# Purpose : definitions for I/O-Controller-module
+#
+# Author : Hannes Muhr
+# PSE EZE MSA
+#
+##############################################################################
+# Modification History :
+#
+#
+##############################################################################*/
+
+#ifndef IO_CONTROLLER_INC
+#define IO_CONTROLLER_INC
+
+#ifdef LOGGING
+#include <fstream>
+#endif
+#include "systemc.h"
+//#include "mii_if.h"
+//#include "mbdatm.h"
+
+// class semaphore {
+
+// bool value;
+
+// public:
+// semaphore();
+// void P();
+// void V();
+// bool get_value();
+// };
+
+//void sc_trace(sc_trace_file *, const semaphore&, const std::string&);
+
+#ifdef LOGGING
+/* stream for logging */
+extern ofstream flog;
+#endif
+
+#define MII_FIFO_SIZE 400
+#define SCAN_INTERVAL 200000 // 200 us
+#define NS *1e-9
+
+SC_MODULE(io_controller_m){
+
+ /* ports */
+ sc_in_clk clk_i486_if;
+
+ sc_out<sc_uint<30> > addr30_o;
+ sc_inout<sc_uint<32> > data32_i;
+ sc_out<sc_uint<32> > data32_o;
+ sc_out<bool> ads_n_o;
+ sc_out<bool> wr_n_o;
+ sc_in<bool> rdy_n_i;
+ sc_in<bool> ar_i;
+ sc_in<bool> res_n_i;
+
+ sc_out<sc_uint<4> > mii_data4_o;
+ sc_out<bool> mii_en_o;
+ sc_in<sc_uint<4> > mii_data4_i;
+ sc_in<bool> mii_en_i;
+ sc_in<bool> mii_coll_det;
+ sc_in_clk clk_mii;
+
+ /* signals */
+ sc_signal<sc_uint<32> > mux_data32;
+ sc_signal<sc_uint<32> > in_fifo_data32;
+ sc_signal<sc_uint<32> > out_fifo_data32;
+ sc_signal<sc_uint<32> > control_data32;
+ sc_signal<bool> out_fifo_en;
+ sc_signal<bool> out_fifo_act;
+ sc_signal<bool> in_fifo_en;
+ sc_signal<bool> control_en;
+ sc_signal<bool> out_fifo_reset;
+
+ /* variables */
+ sc_uint<32> addr_tx_frame_ptr;
+ sc_uint<32> rx_ptr_array;
+ sc_signal<bool> value;
+
+ void P();
+ void V();
+ bool get_value();
+ // semaphore sem;
+
+ /* modules */
+// mux_m *mux;
+// shifter_m *shifter;
+// out_fifo_m *out_fifo;
+// in_fifo_m *in_fifo;
+
+ SC_CTOR(io_controller_m){
+
+ SC_CTHREAD(control_read, clk_i486_if.pos());
+
+// mux = new mux_m("mux");
+// mux->clk(clk_mii);
+// mux->data4_o(mii_data4_o);
+// mux->data32_i(mux_data32);
+// mux->en_i(out_fifo_act);
+// mux->en_o(mii_en_o);
+
+// shifter = new shifter_m("shifter");
+// shifter->clk(clk_mii);
+// shifter->data32_o(in_fifo_data32);
+// shifter->data4_i(mii_data4_i);
+// shifter->en_i(mii_en_i);
+// shifter->en_o(in_fifo_en);
+
+// out_fifo = new out_fifo_m("out_fifo");
+// out_fifo->clk_out(clk_mii);
+// out_fifo->clk_in(clk_i486_if);
+// out_fifo->data32_o(mux_data32);
+// out_fifo->data32_i(out_fifo_data32);
+// out_fifo->en_i(out_fifo_en);
+// out_fifo->act_o(out_fifo_act);
+// out_fifo->reset(out_fifo_reset);
+
+// in_fifo = new in_fifo_m("in_fifo");
+// in_fifo->clk_out(clk_i486_if);
+// in_fifo->clk_in(clk_mii);
+// in_fifo->data32_o(control_data32);
+// in_fifo->data32_i(in_fifo_data32);
+// in_fifo->en_i(in_fifo_en);
+// in_fifo->en_o(control_en);
+
+// /* Initialize */
+// in_fifo_data32 = (sc_uint<32>) 0;
+// mux_data32 = (sc_uint<32>) 0;
+// out_fifo_en = 0;
+// out_fifo_act = 0;
+// //en_o = 0;
+// in_fifo_en = 0;
+// control_en = 0;
+// out_fifo_reset = 0;
+
+ }
+ void control_write();
+ void control_read();
+ sc_uint<32> read_from_memory(sc_uint<32>);
+ void write_into_memory(sc_uint<32>, sc_uint<32>);
+
+};
+
+#endif
+