gpt4 book ai didi

syntax-error - UVM 序列体任务给出未知的编译错误

转载 作者:行者123 更新时间:2023-12-03 08:19:32 25 4
gpt4 key购买 nike

我有以下代码块,其中触发了语法错误:

 virtual task body();
forever begin
my_transaction m_req;
// Blocking wait for a transaction request:
p_sequencer.m_request_fifo.get(m_req);
// Generate response based on "req_kind" value:
if ( m_req.req_kind == REQ ) begin
`uvm_do_with(req, {req_kind == REQ;} )
end
else begin
`uvm_do_with(req, {req_kind == NO_REQ;} )
end
end
endtask
我收到以下错误消息:
Error-[SE] Syntax error
Following verilog source has syntax error :
"./src/my_transaction.sv", 77: token is ')'
if ( m_req.req_kind == REQ ) begin
^
如果我如下注释 if 和 else 行,则此代码块可以正常编译:
  virtual task body();
forever begin
my_transaction m_req;
// Blocking wait for a transaction request:
p_sequencer.m_request_fifo.get(m_req);
// Generate response based on "req_kind" value:
//if ( m_req.req_kind == REQ ) begin
`uvm_do_with(req, {req_kind == REQ;} )
//end
//else begin
`uvm_do_with(req, {req_kind == NO_REQ;} )
//end
end
endtask
我尝试评论这一行:
my_transaction m_req;
并且预计由于未定义 m_req 会引发错误标识符。但是代码实际上可以编译!
req_kind 的定义是:
class my_transaction extends uvm_sequence_item;
typedef enum {REQ, NO_REQ} req_kind_e;
rand req_kind_e req_kind;
...
...
...
和类(class) my_transaction 是在存在编译错误的文件中转发的类型:
typedef class my_transaction ;
有问题的代码块是序列库中的一个序列,其中 m_request_fifo是从定序器中用于检索序列的端口。
我正在编译这个文件和其他文件。编译器错误信息是否具有误导性?我可以在代码中寻找哪些其他地方来了解问题的根源?
可能是什么问题?

最佳答案

uvm_sequence 的声明源代码类是:

virtual class uvm_sequence #(
type REQ = uvm_sequence_item,
type RSP = REQ
) extends uvm_sequence_base
REQ是一个类型参数。您将其用于其他用途是错误的/混淆了您的编译器。

关于syntax-error - UVM 序列体任务给出未知的编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63502244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com