0
我寫用於模擬和邏輯一個簡單的系統C程序驅動銷。靈敏度列表包含a,b作爲其成員。我想在主程序的這些行中驅動0,1,並根據敏感列表的定義,我和模塊應該運行並給我新的值。SystemC的靈敏度列表行爲/從主程序
#include<systemc.h>
SC_MODULE(digital_logic)
{
sc_in<sc_logic> a,b;
sc_out<sc_logic> c;
SC_CTOR(digital_logic)
{
SC_METHOD (process);
sensitive << a << b;
}
void process()
{
cout << "PRINT FROM MODULE\n";
c = a.read() & b.read();
cout << a.read() << b.read() << c << endl;
}
};
int sc_main(int argc , char* argv[])
{
sc_signal<sc_logic> a_in ,b_in , c_out , c_out2;
a_in = SC_LOGIC_1 , b_in = SC_LOGIC_1;
digital_logic digital_and1("digital_and1");
digital_and1 (a_in , b_in , c_out);
sc_start(200,SC_NS);
cout << "PRINT FROM SC_MAIN\n";
a_in = SC_LOGIC_1;
cout << c_out << endl;
b_in = SC_LOGIC_0;
cout << c_out << endl;
b_in = SC_LOGIC_1;
cout << c_out << endl;
return 0;
}
我預計,因爲靈敏度列表上的信號改變了輸出也會改變,但這是o/p。如何更改主程序中的信號,以便在不編寫單獨的測試臺的情況下模擬和門。
OUTPUT
PRINT FROM MODULE
11X
PRINT FROM SC_MAIN
1
1
1