小编jsk*_*och的帖子

uvm_event和系统verilog事件差异

uvm_eventSystemVerilog 的优势是什么event?有人能用小伪代码解释一下吗?

system-verilog uvm

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

当我们总是从uvm_sequence_item扩展时为什么要使用uvm_transaction类?

我正在学习UVM教程的基础知识.我读到的任何地方总是从事务对象扩展uvm_sequence_item而不是uvm_transaction因为uvm_sequence_item有事务ID等其他功能.如果是这样的话,为什么uvm_transaction类甚至在UVM类层次结构中呢?

uvm_transaction除了uvm_sequence_item延伸之外,谁在使用?

是因为遗产吗?

system-verilog uvm

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

SystemVerilog`force`如何工作?

我有一个模块层次结构,我试图force在不同的模块接口上获得不同的值.我正在研究一个组件,其任务是将事务注入层次结构中的模块,绕过层次结构中较高层的模块.我想我可以使用force控制信号,以便从更高的模块中脱离驱动器并开始进入感兴趣的模块.所以我一直试图看看力量是如何运作的.完整代码位于http://www.edaplayground.com/x/69PB.特别是,我试图理解initial块内这两个语句的效果:

force u_DataReceiveTop.u_DataReceiveWrap.DataReceiveIfWrp_inst.valid = 1'b0;
force u_DataReceiveTop.valid = 1'b1;
Run Code Online (Sandbox Code Playgroud)

我所期望的价值观是:

u_DataReceiveTop.u_DataReceiveWrap.DataReceiveIfWrp_inst.valid == 0
u_DataReceiveTop.valid == 1
Run Code Online (Sandbox Code Playgroud)

但我从波浪中看到:

u_DataReceiveTop.u_DataReceiveWrap.DataReceiveIfWrp_inst.valid == 1
u_DataReceiveTop.valid == 1
Run Code Online (Sandbox Code Playgroud)

force u_DataReceiveTop.valid = 1'b1;即使存在另一种力量,就好像第二种力量陈述已经沿着等级传播.这里发生了什么?

verilog system-verilog

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

verilog中的卷曲括号

我正在查看程序并找到以下代码:

{a2, a1} <= {a1, b};
Run Code Online (Sandbox Code Playgroud)

我不确定我所经历的程序是用Verilog还是SystemVerilog编写的.我知道花括号用于Verilog中的连接操作,但后来我并没有完全遵循这里的连接类型.此外,由于我不确定给定的片段是否在Verilog或SystemVerilog中,我对代码感到困惑.花括号还表示SystemVerilog中的另一个操作......?

提前致谢

verilog system-verilog

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

Verilog HDL 是否支持 $clog2 任务?

当我在程序中使用它时,产生了一个错误($clog2不支持)。但是我看到我们的 StackOverflowers$clog2在他们的程序中使用了task。请告诉我如何使用它。

verilog fpga system-verilog

0
推荐指数
2
解决办法
8071
查看次数

将for_each与std :: unique_ptr一起使用

当我尝试使用for_each算法时,我遇到以下错误std::unique_ptr.我在下面的profile.h部分放大了它.

奇怪的是,如果我将其更改为能够编译std::shared_ptr,我怀疑它是按值获取容器的元素,因此不喜欢对unique_ptrs的引用.但是,我希望它unique_ptr理想情况下,因为这些任务应该放在ToRun_容器内,并Completed_在任务执行后移动到容器,所以shared_ptr这里没有任何好处.

我得到的错误是:

调用类型为'的对象没有匹配函数(Lambda at Profile.cpp:429:54)'

__f(*__第一);

这是指这行代码:

for_each(ToRun_.begin(), ToRun_.end(), [&os](std::unique_ptr<Task>& e){
  if (e){
    os << e->getName() <<'\n';
  }
});
Run Code Online (Sandbox Code Playgroud)

在我将其转换为使用智能指针之前,我使用了原始指针,我可以保证e->getName()100%工作.我的困惑是为什么在这种情况下它不起作用?我该怎么做才能使它正常工作?

Profile.h

#include <algorithm>
#include <vector>
#include <map>
#include <iostream>
#include "Task.h"
#include "Global.h" //Where my user defined global functions go

class Profile{
  std::vector<std::unique_ptr<Task>>ToRun_;
  std::vector<std::unique_ptr<Task>>Completed_;
  std::vector<std::string>menu_;
  //Ownership of ofstream object
  std::ofstream& of_;
public:
  Profile (const char* filename, std::ofstream& os, ARAIG_sensors& as);
  virtual …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm lambda unique-ptr c++11

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

标签 统计

system-verilog ×5

verilog ×3

uvm ×2

algorithm ×1

c++ ×1

c++11 ×1

fpga ×1

lambda ×1

unique-ptr ×1