C++ 错误:(E107)将接口绑定到端口失败:接口已绑定到端口:端口';MC8051_ALU().AM.port_27';(新加坡)

C++ 错误:(E107)将接口绑定到端口失败:接口已绑定到端口:端口';MC8051_ALU().AM.port_27';(新加坡),c++,systemc,C++,Systemc,你好,我是systemc的新手。我的任务是连接8051 alu的所有下部模块(即addsub、mutliplier、divider)。我写的代码编译时没有任何错误,但当我运行对象文件时,我得到以下错误 错误:(E107)将接口绑定到端口失败:接口已绑定到端口:端口'MC8051_ALU().AM.port_27'(sc_in) 这是mc8051_alu().cpp文件 #include "systemc.h" #include <alumux.h> #include <adds

你好,我是systemc的新手。我的任务是连接8051 alu的所有下部模块(即addsub、mutliplier、divider)。我写的代码编译时没有任何错误,但当我运行对象文件时,我得到以下错误 错误:(E107)将接口绑定到端口失败:接口已绑定到端口:端口'MC8051_ALU().AM.port_27'(sc_in)

这是mc8051_alu().cpp文件

#include "systemc.h"
#include <alumux.h>
#include <addsub_core.h>
#include <comb_mltplr.h>
#include <comb_divider.h>
#include <dcml_adjust.h>

SC_MODULE(mc8051_alu) {
//inputs of the block
sc_in< sc_bv<8> > rom_data_i,ram_data_i,acc_i;
sc_in< sc_bv<6> > cmd_i;
sc_in< sc_bv<2> > cy_i;
sc_in< sc_bv<1> > ov_i; 
//outs of th block 
sc_out< sc_bv<1> > new_ov_o; 
sc_out< sc_bv<2> > new_cy_o;
sc_out< sc_bv<8> > result_a_o,result_b_o;
//making an instance of every block 

//intrtnal signal of the block to connect the units alumux, addsub_core, alucore,_comb_mltplr,comb_divider and decimal_adjust together.
sc_signal< sc_bv<8> > s_alu_result;
sc_signal< sc_bv<2> > s_alu_new_cy;
sc_signal< sc_bv<8> > s_alu_op_a;
sc_signal< sc_bv<8> > s_alu_op_b;
sc_signal< sc_bv<4> > s_alu_cmd;
sc_signal< sc_bv<8> > s_dvdnd;
sc_signal< sc_bv<8> > s_dvsor;
sc_signal< sc_bv<8> > s_qutnt;
sc_signal< sc_bv<8> > s_rmndr;
sc_signal< sc_bv<8> > s_mltplcnd;
sc_signal< sc_bv<8> > s_mltplctr;
sc_signal< sc_bv<8> > s_product;
sc_signal< sc_bv<8> > s_dcml_data;
sc_signal< sc_bv<8> > s_dcml_rslt;
sc_signal< sc_bv<1> > s_dcml_cy;
sc_signal< sc_bv<8> > s_addsub_rslt;
sc_signal< sc_bv<2> > s_addsub_newcy;
sc_signal< sc_bv<1> > s_addsub_ov;
sc_signal< sc_bv<1> > s_addsub_cy;
sc_signal< sc_bv<1> > s_addsub;
sc_signal< sc_bv<8> > s_addsub_opa;
sc_signal< sc_bv<8> > s_addsub_opb;
//constructor of the module
SC_CTOR(mc8051_alu) 
{
// connecting alumux inputs and outputs 

  alumux am("AM");
  addsub_core asc("ASC");
  comb_mltplr cm("CM");
  comb_divider cd("CD");
  dcml_adjust da("DA");

  am.rom_data_i(rom_data_i);
  am.ram_data_i(ram_data_i);
  am.acc_i(acc_i);
  am.cmd_i(cmd_i);
  am.cy_i(cy_i);
  am.ov_i(ov_i);
  am.cy_o(new_cy_o);
  am.ov_o(new_ov_o);
  am.result_a_o(s_addsub_opa);
  am.result_b_o(result_b_o);
  am.result_i(s_alu_result);
  am.new_cy_i(s_alu_new_cy);
  am.addsub_rslt_i(s_addsub_rslt);
  am.addsub_cy_i(s_addsub_newcy);
  am.addsub_ov_i(s_addsub_ov);
  am.op_a_o(s_alu_op_a);
  am.op_b_o(s_alu_op_b);
  am.alu_cmd_o(s_alu_cmd);
  am.opa_o(s_addsub_opa);
  am.opb_o(s_addsub_opb);
  am.addsub_o(s_addsub);
  am.addsub_cy_o(s_addsub_cy);
  am.addsub_ov_i(s_addsub_ov);
  am.dvdnd_o(s_dvdnd);
  am.dvsor_o(s_dvsor);
  am.qutnt_i(s_qutnt);
  am.rmndr_i(s_rmndr);
  am.mltplcnd_o(s_mltplcnd);
  am.mltplctr_o(s_mltplctr);
  am.product_i(s_product);
  am.dcml_data_o(s_dcml_data);
  am.dcml_data_i(s_dcml_rslt);
  am.dcml_cy_i(s_dcml_cy); 

// connecting alucore inputs and outputs 
 // ac.op_a_i(s_alu_op_a);
 // ac.op_b_i(s_alu_op_b);
 // ac.alu_cmd_i(s_alu_cmd);
 // ac.cy_i(cy_i);
 // ac.cy_o(s_alu_new_cy);
 // ac.result_o(s_alu_result);

// connecting addsub_core inputs and outputs 
  asc.opa_i(result_a_o);
  asc.opb_i(s_addsub_opb);
  asc.addsub_i(s_addsub);
  asc.cy_i(s_addsub_cy);
  asc.cy_o(s_addsub_newcy);
  asc.ov_o(s_addsub_ov);
  asc.result_o(s_addsub_rslt);
// connecting comb_mltplr inputs and outputs 
  cm.mltplcnd_i(s_mltplcnd);
  cm.mltplctr_i(s_mltplctr);
  cm.product_o(s_product);
// connecting comb_divider inputs and outputs 
  cd.dvdnd_i(s_dvdnd);
  cd.dvsor_i(s_dvsor);
  cd.qutnt_o(s_qutnt);
  cd.rmndr_o(s_rmndr);
// connecting dcml_adjust inputs and outputs 
  da.data_i(s_dcml_data);
  da.cy_i(cy_i);
  da.data_o(s_dcml_rslt);
  da.cy_o(s_dcml_cy);
}
};
 #include "systemc.h"
#include "mc8051_alu().cpp"
//#include "stim.h"

int sc_main (int argc, char* argv[]) {


        sc_signal< sc_bv<6> > cmd_i; //= sc_uint<8>(1);
    sc_signal< sc_bv<8> > result_a_o,result_b_o,rom_data_i,ram_data_i,acc_i;

        sc_signal< sc_bv<2> > cy_i,new_cy_o;
        sc_signal< sc_bv<1> > ov_i,new_ov_o;
 mc8051_alu DUT("MC8051_ALU()");(//LINE WHERE ERROR IS COMING)
DUT.rom_data_i(rom_data_i);
DUT.ram_data_i(ram_data_i);
DUT.acc_i(acc_i);
DUT.cmd_i(cmd_i);
DUT.ov_i(ov_i);
DUT.cy_i(cy_i);
DUT.new_ov_o(new_ov_o);
DUT.new_cy_o(new_cy_o);
DUT.result_a_o(result_a_o);
DUT.result_b_o(result_b_o);

cmd_i= 0b010101;
sc_start(sc_time(1,SC_NS));

cout << "this is here"<< endl;
cout << cmd_i<< endl;

sc_stop();
return 0;
}
#包括“systemc.h”
#包括
#包括
#包括
#包括
#包括
SC_模块(mc8051_alu){
//块的输入
sc_inrom_data_i、ram_data_i、acc_i;
sc_Uincmd i;
sc_incy_i;
sc_inov_i;
//第四街区外
sc_out新版本;
sc_outnew_cy_o;
sc_out结果a_o,结果b_o;
//创建每个块的实例
//连接单元alumux、addsub_core、alucore、comb_mltplr、comb_除法器和十进制调整的块的内部信号。
sc_信号s_alu结果;
sc_信号s_alu新;
sc_信号s_alu op_a;
sc_信号s_alu op_b;
sc_信号s_alu cmd;
sc_信号s_DVND;
sc_信号s_dvsor;
sc_信号s_qtnt;
sc_信号s_rmndr;
sc_信号s_mltplcnd;
sc_信号s_mltplctr;
sc_信号s_产品;
sc_信号s_dcml_数据;
sc_信号s_dcml_rslt;
sc_信号s_dcml_cy;
sc_信号s_addsub_rslt;
sc_信号s_addsub_newcy;
sc_信号s_addsub_ov;
sc_信号s_addsub_cy;
sc_信号s_addsub;
sc_信号s_addsub_opa;
sc_信号s_addsub_opb;
//模块的构造函数
SC_-CTOR(mc8051_-alu)
{
//连接alumux输入和输出
alumux am(“am”);
addsub_核心asc(“asc”);
梳状物(“厘米”);
梳状分配器cd(“cd”);
dcml_调整da(“da”);
am.rom_data_i(rom_data_i);
ram_data_i(ram_data_i);
am.acc_i(acc_i);
am.cmd_i(cmd_i);
am.cy_i(cy_i);
am.ov_i(ov_i);
上午九时至下午五时(新西澳);
am.ov_o(new_ov_o);;
am.结果(s_addsub_opa);
am.result_b_o(result_b_o);
am.result_i(s_alu_结果);
am.new_cy_i(s_alu_new_cy);
am.addsub\U rslt\U i(s\U addsub\U rslt);
am.addsub_cy_i(s_addsub_newcy);
am.addsub_ov_i(s_addsub_ov);
上午九时三十分;
上午九时三十分;
am.alu_cmd_o(s_alu_cmd);
上午10时30分(s_addsub_opa);
am.opb_o(s_addsub_opb);
am.addsub_o(s_addsub);
am.addsub\U cy\o(s\U addsub\U cy);
am.addsub_ov_i(s_addsub_ov);
am.dvdnd_o(s_dvdnd);
am.dvsor_o(s_-dvsor);
am.qutnt_i(s_-qutnt);
am.rmndr_i(s_rmndr);
上午九时三十分;
上午九时三十分;
am.product_i(s_product);
am.dcml_数据_o(s_dcml_数据);
am.dcml\u data\u i(s\u dcml\u rslt);
am.dcml_cy_i(s_dcml_cy);
//连接核心输入和输出
//ac.op_a_i(s_alu_op_a);
//ac.op_b_i(s_alu_op_b);
//ac.alu_cmd_i(s_alu_cmd);
//ac.cy_i(cy_i);
//ac.CYU o(s\U alu\U new\U cy);
//ac.result_o(s_alu_结果);
//连接addsub_核心输入和输出
asc.opa_i(结果);
asc.opb_i(s_addsub_opb);
asc.addsub_i(s_addsub);
asc.CYU i(s_addsub_cy);
asc.CYU o(s_addsub_newcy);
asc.ov_o(s_addsub_ov);
asc.结果(s\U addsub\U rslt);
//连接comb_mltplr输入和输出
cm.mltplcnd_i(s_mltplcnd);
cm.mltplctr_i(s_mltplctr);
cm.产品(s产品);
//连接梳状分配器输入和输出
cd.dvdnd_i(s_dvdnd);
cd.dvsor_i(s_-dvsor);
cd.qutnt_o(s_-qutnt);
cd.rmndr_o(s_rmndr);
//连接dcml_调整输入和输出
da.数据i(s_dcml_数据);
da.cy_i(cy_i);;
da.数据(s_dcml_rslt);
da.cy_o(s_dcml_cy);
}
};
现在,当我想通过在main函数中编写一个测试台来运行它时,我得到了上述错误

这是我的main.cpp文件

#include "systemc.h"
#include <alumux.h>
#include <addsub_core.h>
#include <comb_mltplr.h>
#include <comb_divider.h>
#include <dcml_adjust.h>

SC_MODULE(mc8051_alu) {
//inputs of the block
sc_in< sc_bv<8> > rom_data_i,ram_data_i,acc_i;
sc_in< sc_bv<6> > cmd_i;
sc_in< sc_bv<2> > cy_i;
sc_in< sc_bv<1> > ov_i; 
//outs of th block 
sc_out< sc_bv<1> > new_ov_o; 
sc_out< sc_bv<2> > new_cy_o;
sc_out< sc_bv<8> > result_a_o,result_b_o;
//making an instance of every block 

//intrtnal signal of the block to connect the units alumux, addsub_core, alucore,_comb_mltplr,comb_divider and decimal_adjust together.
sc_signal< sc_bv<8> > s_alu_result;
sc_signal< sc_bv<2> > s_alu_new_cy;
sc_signal< sc_bv<8> > s_alu_op_a;
sc_signal< sc_bv<8> > s_alu_op_b;
sc_signal< sc_bv<4> > s_alu_cmd;
sc_signal< sc_bv<8> > s_dvdnd;
sc_signal< sc_bv<8> > s_dvsor;
sc_signal< sc_bv<8> > s_qutnt;
sc_signal< sc_bv<8> > s_rmndr;
sc_signal< sc_bv<8> > s_mltplcnd;
sc_signal< sc_bv<8> > s_mltplctr;
sc_signal< sc_bv<8> > s_product;
sc_signal< sc_bv<8> > s_dcml_data;
sc_signal< sc_bv<8> > s_dcml_rslt;
sc_signal< sc_bv<1> > s_dcml_cy;
sc_signal< sc_bv<8> > s_addsub_rslt;
sc_signal< sc_bv<2> > s_addsub_newcy;
sc_signal< sc_bv<1> > s_addsub_ov;
sc_signal< sc_bv<1> > s_addsub_cy;
sc_signal< sc_bv<1> > s_addsub;
sc_signal< sc_bv<8> > s_addsub_opa;
sc_signal< sc_bv<8> > s_addsub_opb;
//constructor of the module
SC_CTOR(mc8051_alu) 
{
// connecting alumux inputs and outputs 

  alumux am("AM");
  addsub_core asc("ASC");
  comb_mltplr cm("CM");
  comb_divider cd("CD");
  dcml_adjust da("DA");

  am.rom_data_i(rom_data_i);
  am.ram_data_i(ram_data_i);
  am.acc_i(acc_i);
  am.cmd_i(cmd_i);
  am.cy_i(cy_i);
  am.ov_i(ov_i);
  am.cy_o(new_cy_o);
  am.ov_o(new_ov_o);
  am.result_a_o(s_addsub_opa);
  am.result_b_o(result_b_o);
  am.result_i(s_alu_result);
  am.new_cy_i(s_alu_new_cy);
  am.addsub_rslt_i(s_addsub_rslt);
  am.addsub_cy_i(s_addsub_newcy);
  am.addsub_ov_i(s_addsub_ov);
  am.op_a_o(s_alu_op_a);
  am.op_b_o(s_alu_op_b);
  am.alu_cmd_o(s_alu_cmd);
  am.opa_o(s_addsub_opa);
  am.opb_o(s_addsub_opb);
  am.addsub_o(s_addsub);
  am.addsub_cy_o(s_addsub_cy);
  am.addsub_ov_i(s_addsub_ov);
  am.dvdnd_o(s_dvdnd);
  am.dvsor_o(s_dvsor);
  am.qutnt_i(s_qutnt);
  am.rmndr_i(s_rmndr);
  am.mltplcnd_o(s_mltplcnd);
  am.mltplctr_o(s_mltplctr);
  am.product_i(s_product);
  am.dcml_data_o(s_dcml_data);
  am.dcml_data_i(s_dcml_rslt);
  am.dcml_cy_i(s_dcml_cy); 

// connecting alucore inputs and outputs 
 // ac.op_a_i(s_alu_op_a);
 // ac.op_b_i(s_alu_op_b);
 // ac.alu_cmd_i(s_alu_cmd);
 // ac.cy_i(cy_i);
 // ac.cy_o(s_alu_new_cy);
 // ac.result_o(s_alu_result);

// connecting addsub_core inputs and outputs 
  asc.opa_i(result_a_o);
  asc.opb_i(s_addsub_opb);
  asc.addsub_i(s_addsub);
  asc.cy_i(s_addsub_cy);
  asc.cy_o(s_addsub_newcy);
  asc.ov_o(s_addsub_ov);
  asc.result_o(s_addsub_rslt);
// connecting comb_mltplr inputs and outputs 
  cm.mltplcnd_i(s_mltplcnd);
  cm.mltplctr_i(s_mltplctr);
  cm.product_o(s_product);
// connecting comb_divider inputs and outputs 
  cd.dvdnd_i(s_dvdnd);
  cd.dvsor_i(s_dvsor);
  cd.qutnt_o(s_qutnt);
  cd.rmndr_o(s_rmndr);
// connecting dcml_adjust inputs and outputs 
  da.data_i(s_dcml_data);
  da.cy_i(cy_i);
  da.data_o(s_dcml_rslt);
  da.cy_o(s_dcml_cy);
}
};
 #include "systemc.h"
#include "mc8051_alu().cpp"
//#include "stim.h"

int sc_main (int argc, char* argv[]) {


        sc_signal< sc_bv<6> > cmd_i; //= sc_uint<8>(1);
    sc_signal< sc_bv<8> > result_a_o,result_b_o,rom_data_i,ram_data_i,acc_i;

        sc_signal< sc_bv<2> > cy_i,new_cy_o;
        sc_signal< sc_bv<1> > ov_i,new_ov_o;
 mc8051_alu DUT("MC8051_ALU()");(//LINE WHERE ERROR IS COMING)
DUT.rom_data_i(rom_data_i);
DUT.ram_data_i(ram_data_i);
DUT.acc_i(acc_i);
DUT.cmd_i(cmd_i);
DUT.ov_i(ov_i);
DUT.cy_i(cy_i);
DUT.new_ov_o(new_ov_o);
DUT.new_cy_o(new_cy_o);
DUT.result_a_o(result_a_o);
DUT.result_b_o(result_b_o);

cmd_i= 0b010101;
sc_start(sc_time(1,SC_NS));

cout << "this is here"<< endl;
cout << cmd_i<< endl;

sc_stop();
return 0;
}
#包括“systemc.h”
#包括“mc8051_alu().cpp”
//#包括“刺激h”
int sc_main(int argc,char*argv[]){
sc_信号cmd_i;/=sc_uint(1);
sc_信号结果_a_o、结果_b_o、rom_数据_i、ram_数据_i、acc_i;
sc_信号CYU i,新_CYU o;
sc_信号ov_i,新ov_o;
mc8051_-alu-DUT(“mc8051_-alu()”)(//发生错误的行)
被测设备rom_数据_i(rom_数据_i);
DUT.ram_数据_i(ram_数据_i);
DUT.附件i(附件i);
DUT.cmd_i(cmd_i);
DUT.ov_i(ov_i);
DUT.cy_i(cy_i);
DUT.new_ov_o(new_ov_o);
DUT.new_cy_o(new_cy_o);
试验结果(结果);
试验结果(结果);
cmd_i=0b010101;
sc_启动(sc_时间(1,sc_NS));

cout最好命名所有对象,尤其是端口和信号,以便通过直接指向相关对象使错误消息更有意义。在模块构造函数初始化列表中执行此操作

没有所有的代码很难说,但最确定的是,您的错误来自“am.addsub_ov_i(s_addsub_ov);”。您的构造函数中有两行