This was asked in one of the interviews I faced with a product company.
Looks simple at first glance, but sometimes these questions might catch you off-guard.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | class base; int a; function new ( int val ); a = val; endfunction function void display(); $display("BASE:: A:%0d",a); endfunction endclass class derived extends base; function new (int val); super.new(19); a = val; endfunction function void display(); $display("DERIVED:: A:%0d",a); endfunction endclass module top; base b; derived d; initial begin b = new(10); d = new(20); b.display(); d.display(); b = d; b.display(); d.display(); end endmodule: top |
Guess the output in the following scenarioes.
- Without call to super.new(19) in line 19.
- With call to super.new(19)
- Without virtual method in Base class
- As-it-is
- With one line ' int a; ' added to the derived class code
- With adding virtual keyword in front of display() in Base class
- Repeat 2.1.1 and 2.1.2
=======================================================================
Answers :
1. Error-[SV-SNCIM] Super new call is missing
testbench.sv, 17$unit
Base class constructor specification is missing in derived class 'derived'.
Please add <base class>::new arguments to 'extends' specification or add
call to 'super.new' in <derived class>::new.
1 error
BASE:: A:10
DERIVED:: A:20
BASE:: A:20
DERIVED:: A:20
2.1.2 - Without virtual and with < int a; > in base class
Compiler version Q-2020.03-SP1-1; Runtime version Q-2020.03-SP1-1; Jan 12 07:21 2021
BASE:: A:10
DERIVED:: A:20
BASE:: A:19
DERIVED:: A:20
2.2.1 With virtual and without < int a; > in base class
Compiler version Q-2020.03-SP1-1; Runtime version Q-2020.03-SP1-1; Jan 12 07:22 2021
BASE:: A:10
DERIVED:: A:20
DERIVED:: A:20
DERIVED:: A:20
2.2.2 With virtual and with < int a; > in base class
Compiler version Q-2020.03-SP1-1; Runtime version Q-2020.03-SP1-1; Jan 12 07:23 2021
BASE:: A:10
DERIVED:: A:20
DERIVED:: A:20
DERIVED:: A:20
No comments:
Post a Comment