系统verilog接口与功能

时间:2016-02-06 16:16:54

标签: system-verilog

如何在界面中添加功能?我正在尝试使用具有计算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

1 个答案:

答案 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