小编ara*_*ser的帖子

UVM 阻塞分配竞争条件

我对 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 的所有成员都是静态的?

system-verilog uvm

5
推荐指数
1
解决办法
1755
查看次数

带循环检测的 Callgrind 性能分析

我第一次尝试使用 Callgrind/Kcachegrind 来分析我的 C++ 应用程序,我注意到需要更多时间的两个函数是:

  1. <周期1>(50%自我)和
  2. do_lookup_x(15% 自我)

现在,根据我的理解,周期 1 与递归调用函数所花费的时间的估计有关,但我不太清楚应该如何解释这里花费的如此长的时间。如果有一些周期,我想看看哪个函数被调用得更频繁并且最终占用了更多的CPU时间。如果我禁用循环检测(查看 -> 循环检测),则循环 1 会消失,但“自我”时间总计约为 60%,我不确定这是否是最好的做法。关于 do_lookup_x 我完全一无所知......

您能澄清一下我应该如何解释这些结果吗?

提前致谢。

c++ profiling callgrind kcachegrind

5
推荐指数
1
解决办法
4246
查看次数

来自 Windows 客户端的 x2go 分辨率

我很高兴使用 x2go 连接到远程 Ubuntu Server 16.04,其中 XFCE 从我的本地电脑安装,在 HiDPI 屏幕(13'')上的本地分辨率为 1920x1080。如果我从虚拟化的 Linux(带有 XFCE 的 Linux Mint 18.03)运行 x2go 客户端,一切正常,我可以看到远程桌面的非常清晰的图像。问题是,当我尝试直接从 Windows 10 连接时,图像模糊且分辨率错误。我尝试使用 x2go 客户端设置,但没办法,图像总是很糟糕。我也尝试使用 PyHoca 和不同的 X 服务器,但结果是一样的。

这是一个众所周知的问题吗?关于如何修复它的任何建议?

提前致谢。

linux ssh nomachine-nx

5
推荐指数
1
解决办法
6902
查看次数

OMNeT 发出复杂信号

我在 OMNeT 中的模块发出一些信号时遇到问题。特别是,我的一个模块有一系列要发出的信号,例如:

simsignal_t* signalInputInterarrivalTime;
...
signalInputInterarrivalTime = new simsignal_t[N];
Run Code Online (Sandbox Code Playgroud)

然后我对registerSignal数组中的每个元素使用不同的名称。这种方法有效,但是在我的 .ned 文件中,我必须使用@statistic与数组的最大大小一样多的行。这当然不是最好的方式,无论是参数还是可读性。是否可以声明一个要发出的信号向量,更适合我的情况?

omnet++

1
推荐指数
1
解决办法
1115
查看次数