gpt4 book ai didi

c++ - 错误 : ‘sc_unit’ was not declared in this scope (SystemC-2. 3.0)

转载 作者:行者123 更新时间:2023-11-28 06:49:58 24 4
gpt4 key购买 nike

// first_counter.cpp
SC_MODULE (first_counter) {
sc_in_clk clock; // clock input of the design
sc_in<bool> reset; // active high, synchronous reset input
sc_in<bool> enable; // active high enable signal for counter
sc_out<sc_unit<4>> counter_out; //4-bit vector output of the counter

// local variables here
sc_unit<4> count;

// code starts here
// This is for synchronous reset
void incr_count () {
if (reset.read() == 1) { // at every rising edge of clock, check reset is active,
count = 0; // if zero, initialize count register
counter_out.write(count);
} else if (enable.read() == 1) { // if enable is active, increment the counter;
count = count + 1;
counter_out.write(count);
cout<<"@"<<sc_time_stamp() <<"::Incremented Counter" << counter_out.read()<<endl;
}
} // end of function incr_count;

// constructor for the counter (postive edge triggered one)
// trigger the below block with respect to positive edge of the clock and also whenever reset changes states.
SC_CTOR(first_counter) {
cout<<"Executing new"<<endl;
SC_METHOD(incr_count);
sensitive << reset;
sensitive << clock.pos();
}
}; // End of Module counter


//// first_counter_tb.cpp
#include "systemc.h"
#include "first_counter.cpp"

int sc_main (int argc, char* argv[]) {
sc_signal<bool> clock;
sc_signal<bool> reset;
sc_signal<bool> enable;
sc_signal<sc_unit<4>> counter_out;
int i=0;

//connect the DUT
first_counter counter("COUNTER");
counter.clock(clock);
counter.reset(reset);
counter.enable(enable);
counter.counter_out(counter_out);

sc_start(1, SC_NS);

// open VCD file
sc_trace_file *wf=sc_create_vcd_trace_file("counter");
sc_trace(wf, clock, "clock");
sc_trace(wf, reset, "reset");
sc_trace(wf, enable, "enable");
sc_trace(wf, counter_out, "count");

//initialize all variables
reset = 0;
enable = 0;
for (i=0; i<5; i++) {
clock = 0;
sc_start(1, SC_NS);
clock=1;
sc_start(1, SC_NS);
}
reset = 1; // assert the reset
cout << "@" << sc_time_stamp() << "Asserting reset\n" << endl;
for (i=0; i<10; i++) {
clock = 0;
sc_start(1, SC_NS);
clock=1;
sc_start(1, SC_NS);
}
reset = 0; // De-assert the reset
cout << "@" << sc_time_stamp() << "De-Asserting reset\n" << endl;
for (i=0; i<5; i++) {
clock = 0;
sc_start(1, SC_NS);
clock = 1;
sc_start(1, SC_NS);
}
count << "@" << sc_time_stamp() << "Asserting Enable\n" << endl;
enable =1;
for (i=0; i<20; i++){
clock =0;
sc_start(1, SC_NS);
clock =1;
sc_start(1, SC_NS);
}
cout << "@" << sc_time_stamp() << "De-asserting Enable\n" << endl;
enable = 0; // De-assert enable

cout << "@" << sc_time_stamp() << "Terminating simulation\n" << endl;
sc_close_vcd_trace_file(wf);
return 0; //terminate simulation
}

当我编译它时,出现以下错误。但我不知道如何解决这个问题。root@ubuntu:/mnt/lnx-arch/systemc-2.3.0/workspace/picoE/first_counter#制作 g++-我。 -I/mnt/lnx-arch/systemc-2.3.0/include -L. -L/mnt/lnx-arch/systemc-2.3.0/lib-linux64 > -Wl,-rpath=/mnt/lnx-arch/systemc-2.3.0/lib-linux64 -o first_counter_tb first_counter_tb.cpp > -lsystemc -2.3.0 -lm

In file included from first_counter_tb.cpp:3:0:
first_counter.cpp:12:9: error: ‘sc_unit’ was not declared in this scope
first_counter.cpp:12:21: error: ‘counter_out’ was not declared in this scope
first_counter.cpp:12:21: error: template argument 1 is invalid
first_counter.cpp:15:2: error: ‘sc_unit’ does not name a type
first_counter.cpp: In member function ‘void first_counter::incr_count()’:
first_counter.cpp:21:4: error: ‘count’ was not declared in this scope
first_counter.cpp:22:4: error: ‘counter_out’ was not declared in this scope
first_counter.cpp:24:4: error: ‘count’ was not declared in this scope
first_counter.cpp:25:4: error: ‘counter_out’ was not declared in this scope
first_counter_tb.cpp: In function ‘int sc_main(int, char**)’:
first_counter_tb.cpp:9:12: error: ‘sc_unit’ was not declared in this scope
first_counter_tb.cpp:9:24: error: ‘counter_out’ was not declared in this scope
first_counter_tb.cpp:9:24: error: template argument 1 is invalid
first_counter_tb.cpp:17:11: error: ‘struct first_counter’ has no member named ‘counter_out’
first_counter_tb.cpp:53:2: error: ‘count’ was not declared in this scope
make: *** [first_counter_tb] Error 1

最佳答案

错别字。它应该是 sc_uint 而不是 sc_unit

关于c++ - 错误 : ‘sc_unit’ was not declared in this scope (SystemC-2. 3.0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24153125/

24 4 0
文章推荐: c++ - 限制用户输入
文章推荐: javascript - 在 Google Chrome 中使用 JavaScript 从