如何在界面中添加功能?我正在尝试使用具有计算sum和carry的函数的接口来实现半加法器。以下是我的代码。在没有函数的情况下尝试时,使用补充的行来运行。
module top_ha_interface;
ha_interface nh1();
ha h1(nh1);
ha_tb h2(nh1);
endmodule
interface ha_interface;
logic sum,c_out;
logic a,b;
function summ(a,b,output sum,c_out);
sum=a^b;
c_out=a&b;
endfunction
endinterface
module ha(ha_interface nh1);
// assign nh1.sum=nh1.a^nh1.b;
// assign nh1.c_out=nh1.a&nh1.b;
nh1.summ(nh1.a,nh1.b);
endmodule
module ha_tb(ha_interface nh1);
initial
begin
nh1.a=1'b1;
nh1.b=1'b0;
#10 $display($time,"ns\t",nh1.sum,nh1.c_out);
nh1.a=1'b1;
nh1.b=1'b1;
#20 $display($time,"ns\t",nh1.sum,nh1.c_out);
nh1.a=1'b0;
nh1.b=1'b0;
#30 $display($time,"ns\t",nh1.sum,nh1.c_out);
end
endmodule
答案 0 :(得分:1)
函数是可综合的,但必须在verilog的任何程序块中使用。 (像总是或初始)
任务和void函数在过程中被称为语句 块
您的代码需要修改:
module ha(ha_interface nh1);
// assign nh1.sum=nh1.a^nh1.b;
// assign nh1.c_out=nh1.a&nh1.b;
always @ (*)
nh1.summ(nh1.a,nh1.b, nh1.sum, nh1.c_out);
endmodule