`定义对字符串的赋值

问题描述 投票:0回答:1

我正在编写一些 SV 代码。我有“定义值”,我想从终端使用 +define 来跟随“define ENV_TOP”。当我检索运行和初始化测试实例的值时,该值应该位于 config_db 块中。检查下面的代码。 正确的做法是什么?

`ifndef ENV_TOP 
   `define ENV_TOP tb
 `endif

  env_base `ENV_TOP;   //env_base is class and I should get "tb" here as I am not defining ENV_TOP

  virtual function void build_phase(uvm_phase phase);
    string env_scope = `ENV_TOP;  //I should get here "tb" as well.
      if (!uvm_config_db#(env_cfg)::get(this,env_scope,"env_cfg", env_cfg)) begin
         ...
       end

    
verilog system-verilog verification uvm
1个回答
0
投票

`define
文本转换为字符串标记需要另一个带有使用
`"
字符的参数的宏。

`define STR(s) `"s`"

  string env_scope = `STR(`ENV_TOP);  //should get here "tb" as well.

请参阅 IEEE 1800-2023 SystemVerilog LRM 中的第 22.5.1 `定义

© www.soinside.com 2019 - 2024. All rights reserved.