class Packet;
int addr;
function display ();
$display ("[Base] addr= %0d", addr);
endfunction
endclass
class :final ExtPacket extends Packet;
int data;
function display ();
$display ("[Child] addr= %0d data= %0d", addr, data);
endfunction
endclass
module tb;
Packet bc; // bc stands for BaseClass
ExtPacket sc; // sc stands for SubClass
initial begin
bc = new ();
bc.addr = 12;
bc.display ();
sc = new();
sc.data = 11;
sc.display ();
end
endmodule
When i ran this code i am getting error , as below
Parsing design file ‘design.sv’
Parsing design file ‘testbench.sv’
Error-[SE] Syntax error
Following verilog source has syntax error :
“testbench.sv”, 12: token is ‘:’
class :final ExtPacket extends Packet;
^
1 error — but from LRM
“The final specifier, preceded by a colon, when applied to classes, specifies that a class shall not be extended:
class :final TopPacket extends LinkedPacket;
…
endclass
class BrokenPacket extends TopPacket; // ILLEGAL: TopPacket specified final!
An attempt to extend a class that was specified as final shall result in an error.” - I am seeing use of final in class. But Synopsys VCS and siemens Questa both throwing error. Pls help on this