semaphore

semaphoreの例題です。

semaphoreには、つぎのような関数(メソッド)があります。

・ new

・ put

・ get

・ trg_get

putとgetの引数はデフォルト値として1が指定されていますので、

引数を指定しない場合は、put(1)、get(1)と同じことになります。

添付ファイル(semaphore.sv)をModelSim AE 6.4a Starter Editionでシミュレーションした結果は、次のようになります。

# vsim -do {run ;quit} -c test_sem

# Loading sv_std.std

# Loading work.test_sem

# run

# 1:sem1.try_get = 1 at 5

# 1:sem1.put at 5

# 1:sem2.try_get = 1 at 20

# 2:sem2.get at 20

# 1:sem2.try_get = 0 at 40

# 2:sem2.put at 40

# 2:done at 40

# 1:sem2.try_get = 0 at 40

# 3:sem2.get at 40

# 1:sem2.try_get = 1 at 50

# 3:sem2.put at 50

# 3:done at 50

# quit