小编Gra*_*e90的帖子

查找与第二个数组的元素匹配的数组元素

我有两个数组@uarts@txd它看起来像这样

@uarts = qw(uart_1 uart_10 uart_3 uart_9 ); 
@txd = qw(PIO_uart_1 PIO_2_uart_1 PIO_uart_3 PIO_uart_10 PIO_uart_5 PIO_uart_9 PIO_uart_7);
Run Code Online (Sandbox Code Playgroud)

我想只提取那些@txd包含任何元素的元素 @uarts.我为它编写的代码如下,但不起作用.

my @array;
for (my $i = 0 ; $i <= $#uarts ; $i++) {
  @array = grep { $_ =~ /$uarts[$i]/ } (@txd);
  print "@array\n";
}
Run Code Online (Sandbox Code Playgroud)

arrays perl data-structures

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

如何对哈希的所有键进行特定更改?

我有一个像这样的哈希:

   'IRQ_VSAFE_LPM_ASC_0' => '140',
   'IRQ_VSAFE_LPM_ASC_1' => '141'.......and so on
Run Code Online (Sandbox Code Playgroud)

我想在散列中的所有键中用ASC_1替换ASC_.我试过这个:

foreach $_(keys $hash)   
{ 
s/ASC_/ASC_1/g; 
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

perl

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

我在尝试将数据从记分板传递到序列时遇到错误,如何摆脱它?

我是 UVM 的新手,我正在尝试验证一个内存设计,在该设计中我尝试多次运行写入序列,然后是相同次数的读取序列,以便我可以读取我正在写入的相同地址并进行比较。为此,我尝试创建一个从 uvm_object 扩展的新类,并带有一个队列来存储我正在写入的地址,以便我可以在读取序列中使用它们,并在记分板中实例化这个类,然后将类的句柄发送到通过 uvm_config_db 读取序列,现在的问题是我能够在队列中存储地址但无法在读取序列中获取类句柄......这是检查的正确方法还是有更好的方法来检查从内存中写入和读取,请帮助我!

整个代码链接(尚未完成):https : //www.edaplayground.com/x/3iTr 相关代码片段:这是我创建的用于存储地址的类

        class address_list extends uvm_object;
        reg[7:0]addr_q[$];
        function new(string name);
        super.new(name);
        endfunction 
        endclass;
Run Code Online (Sandbox Code Playgroud)

在我的记分牌中,我将带有地址队列的类的句柄传递给读取序列,这是记分牌的片段

       virtual function void write(mem_seq_item pkt);
       if(pkt.wr_en==1)
       begin
       pkt_qu_write.push_back(pkt);
       addr.addr_q.push_back(pkt.addr);
     uvm_config_db#(address_list)::set(uvm_root::get(),"*","address",addr); 
       end
       if(pkt.rd_en==1)
       pkt_qu_read.push_back(pkt);
        `uvm_info(get_type_name(),$sformatf("Adder list is 
 %p",addr.addr_q),UVM_LOW)
    endfunction : write
Run Code Online (Sandbox Code Playgroud)

在我的阅读序列中,我试图获得句柄

     virtual task body();
     repeat(3)
    `uvm_do(wr_seq)
     if(!uvm_config_db#(address_list)::get(this, " ", "address", addr_))
    `uvm_fatal("NO_VIF",{"virtual interface must be set for:",get_full_name(),".addr_"}); 

    `uvm_info(get_type_name(),$sformatf("ADDR IS %p",addr_),UVM_LOW)

     repeat(3)
     `uvm_do(rd_seq)
     endtask

Error-[ICTTFC] Incompatible complex type usage
mem_sequence.sv, 137 {line where i try to get …
Run Code Online (Sandbox Code Playgroud)

system-verilog uvm

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

如何在不使用 systemverilog 中的约束的情况下将变量的值随机化在 -5 到 21 之间?

我正在尝试随机化一个变量,该变量可以取-5到21的值,$urandom_range仅生成正值,$random生成有符号值,但不是范围

system-verilog

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

标签 统计

perl ×2

system-verilog ×2

arrays ×1

data-structures ×1

uvm ×1