在verilog中协助函数调用

时间:2017-02-05 16:21:31

标签: verilog function-call

我正在尝试了解NoC仲裁代码。当我尝试使用Xilinx软件进行语法检查时,我收到错误“对于”localparam ARBITER_BIN_WIDTH = log2(ARBITER_WIDTH);“行,”常量表达式中不支持诸如'log2'之类的函数调用“。应该对这条线做什么改变? 我遇到问题的代码部分:

 parameter ARBITER_WIDTH    =4
      input integer number; begin   
      log2=0;   
      while(2**log2<number) begin   
        log2=log2+1;    
     end    
   end  
 endfunction // log2 

localparam ARBITER_BIN_WIDTH= log2(ARBITER_WIDTH);

1 个答案:

答案 0 :(得分:0)

参见IEEE标准Verilog®硬件描述语言LRM,在10.2.5,他们描述了Log的功能

function integer clogb2;
 input depth;
 integer i,result;
 begin
 for (i = 0; 2 ** i < depth; i = i + 1)
   result = i + 1;
   clogb2 = result;
 end
 endfunction

你能否证实,它对你有用吗?