我对 SystemVerilog 中的竞争条件有疑问,尤其是 UVM 中。在标准情况下,我们拥有多个驱动程序,它们在同一时钟前端驱动我们的待测试器件,在记分板中生成一些函数调用。这些调用是同时进行的,并且它们检查/修改黄金参考模型中的一些共享变量是现实的。如果这些操作通过非阻塞分配来完成,则不会有问题,但通过阻塞分配可能会出现竞争条件。克服这个问题的最佳方法是什么?不在类中实现黄金参考模型?提前致谢
记分板的伪代码示例可以是:
function void write_A(input TrA A);
if(GRF.b >= 100 && A.a==1)
GRF.c = 1;
endfunction
function void write_B(input TrB B);
GRF.b+=B.b;
endfunction
Run Code Online (Sandbox Code Playgroud)
当然结果取决于这两个函数的执行顺序,这是未知的。可以通过某种同步机制来解决,但是如果有许多写入并行函数,事情就会变得更加困难。使用非阻塞分配将使情况变得更加清晰和简单......也许解决方案可以是让 GRF 的所有成员都是静态的?
我第一次尝试使用 Callgrind/Kcachegrind 来分析我的 C++ 应用程序,我注意到需要更多时间的两个函数是:
现在,根据我的理解,周期 1 与递归调用函数所花费的时间的估计有关,但我不太清楚应该如何解释这里花费的如此长的时间。如果有一些周期,我想看看哪个函数被调用得更频繁并且最终占用了更多的CPU时间。如果我禁用循环检测(查看 -> 循环检测),则循环 1 会消失,但“自我”时间总计约为 60%,我不确定这是否是最好的做法。关于 do_lookup_x 我完全一无所知......
您能澄清一下我应该如何解释这些结果吗?
提前致谢。
我很高兴使用 x2go 连接到远程 Ubuntu Server 16.04,其中 XFCE 从我的本地电脑安装,在 HiDPI 屏幕(13'')上的本地分辨率为 1920x1080。如果我从虚拟化的 Linux(带有 XFCE 的 Linux Mint 18.03)运行 x2go 客户端,一切正常,我可以看到远程桌面的非常清晰的图像。问题是,当我尝试直接从 Windows 10 连接时,图像模糊且分辨率错误。我尝试使用 x2go 客户端设置,但没办法,图像总是很糟糕。我也尝试使用 PyHoca 和不同的 X 服务器,但结果是一样的。
这是一个众所周知的问题吗?关于如何修复它的任何建议?
提前致谢。
我在 OMNeT 中的模块发出一些信号时遇到问题。特别是,我的一个模块有一系列要发出的信号,例如:
simsignal_t* signalInputInterarrivalTime;
...
signalInputInterarrivalTime = new simsignal_t[N];
Run Code Online (Sandbox Code Playgroud)
然后我对registerSignal数组中的每个元素使用不同的名称。这种方法有效,但是在我的 .ned 文件中,我必须使用@statistic与数组的最大大小一样多的行。这当然不是最好的方式,无论是参数还是可读性。是否可以声明一个要发出的信号向量,更适合我的情况?
c++ ×1
callgrind ×1
kcachegrind ×1
linux ×1
nomachine-nx ×1
omnet++ ×1
profiling ×1
ssh ×1
uvm ×1