【发布时间】:2012-12-26 13:59:42
【问题描述】:
我有类似下面的伪代码:
for (lets say 10 iterations)
begin
// Do some configuration changes
fork
begin
///apply input to design
end
begin
while (1)
/// at particular point update expected status / values
end
begin
while (1)
/// read status and verify with expected values
end
join_any
end
来自代码:只有输入的应用程序才能中断分叉,因为其他 2 个线程正在 while (1) 下工作 我想在 for 的每次迭代之间禁用所有线程,即一旦应用输入流 - 禁用所有生成的线程,直到下一次迭代开始(使用新配置)
所以我将上面的代码修改为
....
join_any
disable_fork
end
但是,这似乎也禁用了 for 循环/或类似的东西,我不明白,但效果是测试挂起。 谁能解释一下原因和解决方法?
【问题讨论】:
-
这可能会变成一个无用的问题:在禁用不会导致更多事务的分叉后,我没有释放信号量。我目前正在调试,稍后会更新
-
你想完成什么?你确定你需要一个并行块吗?
-
谢谢@Adam12 是的,这些块需要并行,我需要验证功能的方式。我正在尝试验证在更新特定寄存器时读取是否提供有效数据。是的,问题是因为我没有发布信号量。我已经解决了它并且它现在可以正常工作了
标签: verification system-verilog