У меня есть следующий код, файл c.sv
:
virtual class C#(parameter W = 32); // line #2 where error message points
static function logic [W-1 : 0] f(input logic [W-1 : 0] in);
return ~in;
endfunction
endclass
Затем я вызываю его из top.sv
:
`include "c.sv"
module top(input wire [3:0] key, ouptut wire [3:0] led);
assign led = C#(4)::f(sw);
endmodule
В ModelSim 10.3d он работает нормально, но Quartus II x64 15.0.1 build 150 сообщает об этой ошибке после анализа и синтеза:
Ошибка (10170): синтаксическая ошибка Verilog HDL в c.sv (2) рядом с текстом «виртуальный»; ожидая описания
Если я закомментирую inlcude "c.sv"
и заменю вызов функции простым индикатором ~, тогда он будет работать на плате разработчика.
Что я делаю неправильно?