gpt4 book ai didi

system-verilog - SystemVerilog fork/join w/ "run()"类型函数和 SystemC

转载 作者:行者123 更新时间:2023-12-04 08:27:11 24 4
gpt4 key购买 nike

我正在尝试将内存 Controller 的 SystemVerilog 模型移植到 SystemC,并且想知道什么是最好的翻译方式 run() - 类型函数(即具有执行连续处理的永久循环)通过 fork 生成并加入 SystemC。这些 run()函数通常在模拟开始时产生。我的困惑是 SystemC 确实支持生成线程、fork 和 join,但我相信该语言的意图是 SC_THREAD来提供这种功能。有没有人对两种语言有足够的经验来发表评论?

注意:我相信这个问题更多地与约定有关,而不是技术上对或错的解决方案。可能它可以通过多种方式完成。

最佳答案

sc_thread 类似于 SystemVerilog 的 fork/join。两种语言都使用相同的非抢占式多线程语义来实现它们的线程。也就是说,一个线程会一直运行,直到它等待某事。此时,线程将控制权交给任何其他计划同时运行的线程。这两种语言都是有限制的确定性的。显然种子必须相同,但更改任何代码都会导致随机化发生变化。我相信这也包括线程运行的顺序,但我可能错了。

如上所述,您不应该在 SystemC 中使用 posix fork/join,因为该库不是线程安全的,也因为它打破了库的假设并引入了不确定性。

因此,只要 SV 代码不具有 SC 缺乏的功能,移植就应该很简单。

关于system-verilog - SystemVerilog fork/join w/ "run()"类型函数和 SystemC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13956606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com