我有两个数组@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) 我有一个像这样的哈希:
'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)
但它不起作用.
我是 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) 我正在尝试随机化一个变量,该变量可以取-5到21的值,$urandom_range仅生成正值,$random生成有符号值,但不是范围