modelsim-PEでprogram文が使えるの???

あけましておめでとうございます。
昨年はシクロクロスの話題からブログ記事を始めたらEDA関連がおろそかに成ったので、今年はEDA関連の話題から。。♪♪

Verification Engineer氏の連載・無償ツールで実践する「ハード・ソフト協調検証」
が始まりさっそく読んで見たら。。
下記blogを参照。。
http://blogs.yahoo.co.jp/verification_engineer

program pci_cpu( pci_interface bus, input logic CLK, input logic RST );
    bit [31:0] addr ..............
 ..............

あれmodelSimAEではprogram文が使えるの??
さっそくテストプログラムを作って走らせると。。
下記にテスト用に作ったprogram入りコードが
program test1 ;
task print ;
 $display("program exec") ;
endtask
endprogram : test1

module top ;
test1 test() ;

initial begin
test.print ;
end
endmodule

走らせると
# 6.5d

# vsim -c top 
.....
.....
# //  AND IS SUBJECT TO LICENSE TERMS.
# //
# Loading sv_std.std
# Loading work.top
# ** Fatal: (vsim-3904) SystemVerilog Program Blocks are not supported in Modelsim PE.
#    Time: 0 ns  Iteration: 0  Instance: /top File: ttt.v

Fatalになるじゃん!!怒)

もう一度、無償ツールで実践する「ハード・ソフト協調検証」を読み返すと。
 →(なお,本連載で使用するModelSim Altera Edition Starterはprogram記述をサポートしていない).
だって。。残念。。

でも
 program -> module
に書き換えると動作する。。下記参照
//program test1 ;
module test1 ;
task print ;
 $display("program exec") ;
endtask
//endprogram : test1
endmodule

実行結果

# Loading sv_std.std
# Loading work.top
# Loading work.test1
VSIM 1> run
run
# program exec
VSIM 2> 

たぶん「ハード・ソフト協調検証」にあるコードも動くと思うので後で試してみましょ。

systemVerilog DPI-C