Added clang format
This commit is contained in:
@@ -22,7 +22,7 @@
|
||||
|
||||
const unsigned ram_size = 256;
|
||||
|
||||
class rw_task_if: virtual public sc_interface {
|
||||
class rw_task_if : virtual public sc_interface {
|
||||
public:
|
||||
typedef sc_uint<8> addr_t;
|
||||
typedef sc_uint<8> data_t;
|
||||
@@ -31,38 +31,42 @@ public:
|
||||
data_t data;
|
||||
};
|
||||
|
||||
virtual data_t read(const addr_t*) = 0;
|
||||
virtual void write(const write_t*) = 0;
|
||||
virtual data_t read(const addr_t *) = 0;
|
||||
virtual void write(const write_t *) = 0;
|
||||
};
|
||||
|
||||
SCV_EXTENSIONS(rw_task_if::write_t){
|
||||
SCV_EXTENSIONS(rw_task_if::write_t) {
|
||||
public:
|
||||
scv_extensions<rw_task_if::addr_t> addr;
|
||||
scv_extensions<rw_task_if::data_t> data;
|
||||
SCV_EXTENSIONS_CTOR(rw_task_if::write_t) {
|
||||
SCV_FIELD(addr);
|
||||
SCV_FIELD(data);
|
||||
}
|
||||
scv_extensions<rw_task_if::addr_t> addr;
|
||||
scv_extensions<rw_task_if::data_t> data;
|
||||
SCV_EXTENSIONS_CTOR(rw_task_if::write_t) {
|
||||
SCV_FIELD(addr);
|
||||
SCV_FIELD(data);
|
||||
}
|
||||
};
|
||||
|
||||
class pipelined_bus_ports: public sc_module {
|
||||
class pipelined_bus_ports : public sc_module {
|
||||
public:
|
||||
sc_in<bool> clk;
|
||||
sc_inout<bool> rw;
|
||||
sc_inout<bool> addr_req;
|
||||
sc_inout<bool> addr_ack;
|
||||
sc_inout<sc_uint<8> > bus_addr;
|
||||
sc_inout<sc_uint<8>> bus_addr;
|
||||
sc_inout<bool> data_rdy;
|
||||
sc_inout<sc_uint<8> > bus_data;
|
||||
sc_inout<sc_uint<8>> bus_data;
|
||||
|
||||
SC_CTOR(pipelined_bus_ports) :
|
||||
clk("clk"), rw("rw"), addr_req("addr_req"), addr_ack("addr_ack"), bus_addr("bus_addr"), data_rdy("data_rdy"), bus_data(
|
||||
"bus_data") {
|
||||
}
|
||||
virtual void trace( sc_trace_file* tf ) const;
|
||||
SC_CTOR(pipelined_bus_ports)
|
||||
: clk("clk")
|
||||
, rw("rw")
|
||||
, addr_req("addr_req")
|
||||
, addr_ack("addr_ack")
|
||||
, bus_addr("bus_addr")
|
||||
, data_rdy("data_rdy")
|
||||
, bus_data("bus_data") {}
|
||||
virtual void trace(sc_trace_file *tf) const;
|
||||
};
|
||||
|
||||
void pipelined_bus_ports::trace( sc_trace_file* tf ) const {
|
||||
void pipelined_bus_ports::trace(sc_trace_file *tf) const {
|
||||
sc_trace(tf, clk, clk.name());
|
||||
sc_trace(tf, rw, rw.name());
|
||||
sc_trace(tf, addr_req, addr_req.name());
|
||||
@@ -72,46 +76,45 @@ void pipelined_bus_ports::trace( sc_trace_file* tf ) const {
|
||||
sc_trace(tf, bus_data, bus_data.name());
|
||||
}
|
||||
|
||||
class rw_pipelined_transactor: public rw_task_if, public pipelined_bus_ports {
|
||||
class rw_pipelined_transactor : public rw_task_if, public pipelined_bus_ports {
|
||||
|
||||
fifo_mutex addr_phase;fifo_mutex data_phase;
|
||||
fifo_mutex addr_phase;
|
||||
fifo_mutex data_phase;
|
||||
|
||||
scv_tr_stream pipelined_stream;
|
||||
scv_tr_stream addr_stream;
|
||||
scv_tr_stream data_stream;
|
||||
scv_tr_generator<sc_uint<8>, sc_uint<8> > read_gen;
|
||||
scv_tr_generator<sc_uint<8>, sc_uint<8> > write_gen;
|
||||
scv_tr_generator<sc_uint<8> > addr_gen;
|
||||
scv_tr_generator<_scv_tr_generator_default_data, sc_uint<8> > rdata_gen;
|
||||
scv_tr_generator<sc_uint<8> > wdata_gen;
|
||||
scv_tr_generator<sc_uint<8>, sc_uint<8>> read_gen;
|
||||
scv_tr_generator<sc_uint<8>, sc_uint<8>> write_gen;
|
||||
scv_tr_generator<sc_uint<8>> addr_gen;
|
||||
scv_tr_generator<_scv_tr_generator_default_data, sc_uint<8>> rdata_gen;
|
||||
scv_tr_generator<sc_uint<8>> wdata_gen;
|
||||
|
||||
public:
|
||||
rw_pipelined_transactor(sc_module_name nm)
|
||||
: pipelined_bus_ports(nm)
|
||||
, addr_phase("addr_phase")
|
||||
, data_phase("data_phase")
|
||||
, pipelined_stream((std::string(name()) +".pipelined_stream").c_str(), "transactor")
|
||||
, addr_stream( (std::string(name()) +".addr_stream").c_str(), "transactor")
|
||||
, data_stream((std::string(name()) +".data_stream").c_str(), "transactor")
|
||||
, read_gen("read", pipelined_stream, "addr", "data")
|
||||
, write_gen("write", pipelined_stream, "addr", "data")
|
||||
, addr_gen("addr", addr_stream, "addr")
|
||||
, rdata_gen("rdata", data_stream, NULL, "data")
|
||||
, wdata_gen("wdata", data_stream, "data")
|
||||
{
|
||||
}
|
||||
virtual data_t read(const addr_t* p_addr);
|
||||
virtual void write(const write_t * req);
|
||||
: pipelined_bus_ports(nm)
|
||||
, addr_phase("addr_phase")
|
||||
, data_phase("data_phase")
|
||||
, pipelined_stream((std::string(name()) + ".pipelined_stream").c_str(), "transactor")
|
||||
, addr_stream((std::string(name()) + ".addr_stream").c_str(), "transactor")
|
||||
, data_stream((std::string(name()) + ".data_stream").c_str(), "transactor")
|
||||
, read_gen("read", pipelined_stream, "addr", "data")
|
||||
, write_gen("write", pipelined_stream, "addr", "data")
|
||||
, addr_gen("addr", addr_stream, "addr")
|
||||
, rdata_gen("rdata", data_stream, NULL, "data")
|
||||
, wdata_gen("wdata", data_stream, "data") {}
|
||||
virtual data_t read(const addr_t *p_addr);
|
||||
virtual void write(const write_t *req);
|
||||
};
|
||||
|
||||
rw_task_if::data_t rw_pipelined_transactor::read(const addr_t* addr) {
|
||||
rw_task_if::data_t rw_pipelined_transactor::read(const addr_t *addr) {
|
||||
addr_phase.lock();
|
||||
scv_tr_handle h = read_gen.begin_transaction(*addr);
|
||||
h.record_attribute("data_size", sizeof(data_t));
|
||||
scv_tr_handle h1 = addr_gen.begin_transaction(*addr, "addr_phase", h);
|
||||
wait(clk->posedge_event());
|
||||
bus_addr = *addr;
|
||||
rw=false;
|
||||
rw = false;
|
||||
addr_req = 1;
|
||||
wait(addr_ack->posedge_event());
|
||||
wait(clk->negedge_event());
|
||||
@@ -132,14 +135,14 @@ rw_task_if::data_t rw_pipelined_transactor::read(const addr_t* addr) {
|
||||
return data;
|
||||
}
|
||||
|
||||
void rw_pipelined_transactor::write(const write_t * req) {
|
||||
void rw_pipelined_transactor::write(const write_t *req) {
|
||||
addr_phase.lock();
|
||||
scv_tr_handle h = write_gen.begin_transaction(req->addr);
|
||||
h.record_attribute("data_size", sizeof(data_t));
|
||||
scv_tr_handle h1 = addr_gen.begin_transaction(req->addr, "addr_phase", h);
|
||||
wait(clk->posedge_event());
|
||||
bus_addr = req->addr;
|
||||
rw=true;
|
||||
rw = true;
|
||||
addr_req = 1;
|
||||
wait(addr_ack->posedge_event());
|
||||
wait(clk->negedge_event());
|
||||
@@ -150,7 +153,7 @@ void rw_pipelined_transactor::write(const write_t * req) {
|
||||
|
||||
data_phase.lock();
|
||||
scv_tr_handle h2 = wdata_gen.begin_transaction(req->data, "data_phase", h);
|
||||
bus_data=req->data;
|
||||
bus_data = req->data;
|
||||
wait(data_rdy->posedge_event());
|
||||
wait(data_rdy->negedge_event());
|
||||
wdata_gen.end_transaction(h2);
|
||||
@@ -158,11 +161,11 @@ void rw_pipelined_transactor::write(const write_t * req) {
|
||||
data_phase.unlock();
|
||||
}
|
||||
|
||||
class test: public sc_module {
|
||||
class test : public sc_module {
|
||||
public:
|
||||
sc_port<rw_task_if> transactor;
|
||||
SC_HAS_PROCESS(test);
|
||||
test( ::sc_core::sc_module_name ){
|
||||
test(::sc_core::sc_module_name) {
|
||||
SC_THREAD(main1);
|
||||
SC_THREAD(main2);
|
||||
}
|
||||
@@ -170,16 +173,16 @@ public:
|
||||
void main2();
|
||||
};
|
||||
|
||||
class write_constraint: virtual public scv_constraint_base {
|
||||
class write_constraint : virtual public scv_constraint_base {
|
||||
public:
|
||||
scv_smart_ptr<rw_task_if::write_t> write;SCV_CONSTRAINT_CTOR(write_constraint) {
|
||||
scv_smart_ptr<rw_task_if::write_t> write;
|
||||
SCV_CONSTRAINT_CTOR(write_constraint) {
|
||||
SCV_CONSTRAINT(write->addr() <= ram_size);
|
||||
SCV_CONSTRAINT(write->addr() != write->data());
|
||||
}
|
||||
};
|
||||
|
||||
inline void process(scv_smart_ptr<int> data) {
|
||||
}
|
||||
inline void process(scv_smart_ptr<int> data) {}
|
||||
|
||||
inline void test::main1() {
|
||||
// simple sequential tests
|
||||
@@ -250,15 +253,15 @@ inline void test::main2() {
|
||||
process(data);
|
||||
}
|
||||
}
|
||||
class design: public pipelined_bus_ports {
|
||||
std::list<sc_uint<8> > outstandingAddresses;
|
||||
class design : public pipelined_bus_ports {
|
||||
std::list<sc_uint<8>> outstandingAddresses;
|
||||
std::list<bool> outstandingType;
|
||||
sc_uint<8> memory[ram_size];
|
||||
|
||||
public:
|
||||
SC_HAS_PROCESS(design);
|
||||
design(sc_module_name nm) :
|
||||
pipelined_bus_ports(nm) {
|
||||
design(sc_module_name nm)
|
||||
: pipelined_bus_ports(nm) {
|
||||
for (unsigned i = 0; i < ram_size; ++i) {
|
||||
memory[i] = i;
|
||||
}
|
||||
@@ -304,16 +307,15 @@ inline void design::data_phase() {
|
||||
}
|
||||
if (outstandingType.front() == false) {
|
||||
cout << "reading memory address " << outstandingAddresses.front() << " with value "
|
||||
<< memory[outstandingAddresses.front().to_ulong()] << endl;
|
||||
<< memory[outstandingAddresses.front().to_ulong()] << endl;
|
||||
bus_data = memory[outstandingAddresses.front().to_ulong()];
|
||||
data_rdy = 1;
|
||||
wait(clk->posedge_event());
|
||||
data_rdy = 0;
|
||||
|
||||
} else {
|
||||
cout << "writing memory address " << outstandingAddresses.front() << " with value "
|
||||
<< bus_data << endl;
|
||||
memory[outstandingAddresses.front().to_ulong()]=bus_data;
|
||||
cout << "writing memory address " << outstandingAddresses.front() << " with value " << bus_data << endl;
|
||||
memory[outstandingAddresses.front().to_ulong()] = bus_data;
|
||||
data_rdy = 1;
|
||||
wait(clk->posedge_event());
|
||||
data_rdy = 0;
|
||||
@@ -332,19 +334,19 @@ int sc_main(int argc, char *argv[]) {
|
||||
const char* fileName = "my_db.txlog";
|
||||
#else
|
||||
scv_tr_sqlite_init();
|
||||
const char* fileName = "my_db";
|
||||
const char *fileName = "my_db";
|
||||
#endif
|
||||
scv_tr_db db(fileName);
|
||||
scv_tr_db::set_default_db(&db);
|
||||
sc_trace_file* tf = sc_create_vcd_trace_file("my_db");
|
||||
sc_trace_file *tf = sc_create_vcd_trace_file("my_db");
|
||||
// create signals
|
||||
sc_clock clk("clk", 20.0, SC_NS, 0.5, 0.0, SC_NS, true);
|
||||
sc_signal<bool> rw;
|
||||
sc_signal<bool> addr_req;
|
||||
sc_signal<bool> addr_ack;
|
||||
sc_signal<sc_uint<8> > bus_addr;
|
||||
sc_signal<sc_uint<8>> bus_addr;
|
||||
sc_signal<bool> data_rdy;
|
||||
sc_signal<sc_uint<8> > bus_data;
|
||||
sc_signal<sc_uint<8>> bus_data;
|
||||
|
||||
// create modules/channels
|
||||
test t("t");
|
||||
@@ -380,4 +382,3 @@ int sc_main(int argc, char *argv[]) {
|
||||
sc_close_vcd_trace_file(tf);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user