我需要在 systemverilog 中对我的硬件的某些部分进行建模,它看起来如下所示:
我可以让两个踏板 -(SV 任务)并行运行。
Thread:
1. get_resource_from_manager() [sema.get(1) ??]
2. repeat(until_finish)
3. do_work()
4. give_contorl_to_thread1() [sema.put(1) ??]
5. wait_for_thread1_to_return_control() [sema.get(1) ??]
6. continue_work()
7. endrepeat
8. do_some_cleanup()
9. exit()
两个线程做同样的工作。我正在考虑使用信号量。我以前从未使用过它。线程将在第 5 行阻塞是一个有效的假设/事实吗?我想要实现的是,thread1 将通过在第 4 行中使用信号量 put() 将资源放弃给 thread2 -> 线程 2 将获取该资源并完成它的工作并最终使用 put 释放它。在这期间,thread1 将在第 5 行等待阻塞 get() 调用。