昨年(2012)のDVConのプレゼンテーション資料の8ページにある
SystemVerilog-2012の新機能(Multiple Inheritance)をModelSim Altera Editon 10.1bで確認しました。
Multiple Inheritanceは、Ready for SystemVerilog 2012で紹介した機能です。
SystemVerilog-2012の新機能(Multiple Inheritance)をModelSim Altera Editon 10.1bで確認しました。
Multiple Inheritanceは、Ready for SystemVerilog 2012で紹介した機能です。
確認したコードは、こちら。キューを使って、FIFOを実装しています。
interface class Put; pure virtual function void put( int a ); endclass interface class Get; pure virtual function int get(); endclass class Fifo_A implements Put, Get; int fifo[$]; function new(); endfunction virtual function void put( int a ); fifo.push_back(a); endfunction virtual function int get(); return fifo.pop_front(); endfunction endclass module test; Fifo_A fifo_a; initial begin fifo_a = new(); fifo_a.put(10); fifo_a.put(20); $display("fifo_a = %d", fifo_a.get() ); $display("fifo_a = %d", fifo_a.get() ); end endmodule
interfaceとimplementsを使っています。Javaのinterfaceとimplementsと似ていますね。
SystemVerilogでクラス(class)が導入され、extendsでクラスの継承ができるようになりました。
ただし、複数のクラスからの継承(Multiple Inheritance)はサポートしていませんでした。
ただし、複数のクラスからの継承(Multiple Inheritance)はサポートしていませんでした。
SystemVerilog-2012では、extendsではく、interfaceとimplements違った形で対応しています。
どうしてでしょうかね?
どうしてでしょうかね?
検証、Verification、SysytemVerilog、Mentor