对不起,这个问题不是特定的代码,我相信必须做更多的约定而不是技术上正确或错误的解决方案。可能它可以做到不止一种方式。SystemVerilog fork/join w /“run()”type函数和SystemC
我想将一个SystemVerilog模型的内存控制器移植到SystemC,并且想知道什么是翻译run()
类型函数(即使用永久循环进行连续处理)的最佳方法,它使用fork生成并加入到SystemC中。这些run()函数通常在仿真开始时产生。我的困惑是SystemC确实支持产卵线程,分叉和连接,但我相信该语言的意图是为SC_THREAD
提供这种功能。有没有人有足够的经验与两种语言评论?
谢谢!
由于SystemC是合作多任务处理,因此它是确定性的,而普通的POSIX线程是抢先式的多任务处理,因此是非确定性的,同时伴随着许多其他并发症。我强烈建议不要在POSIX线程中使用,因为这可能会使您的仿真不能重复生成转储。原谅我,如果这是显而易见的。无论如何,我确实认为你确实想使用'SC_THREAD'。 –
谢谢罗斯,这对我来说并不明显。我现在感兴趣,是否是SystemVerilog的多任务确定性?即连续的模拟会有相同的保证结果吗? – Rich
所有商用的Verilog/VHDL仿真器从重新运行的角度来看都是确定性的_给出相同的随机数发生器(RNG)种子number_,它是命令行上的一个可选参数。模拟器必须是确定性的,以便重现错误并生成信号转储(VCD/FSDB/VCD /等等)。无论如何,这是运行HDL仿真的全部要点。该范式更多的是[合作多任务](http://bit.ly/7epxWx)[RTOS](http://bit.ly/VUHRyb),而不是[抢先式多任务](http:///bit.ly/UdA2q5),这是Linux POSIX线程的范例。 –