【问题标题】:systemverilog, signal concatenationsystemverilog,信号连接
【发布时间】:2015-02-03 11:13:04
【问题描述】:

我在设计中有一个 VHDL 记录,例如

   TYPE  signal_record IS RECORD
          signal_0  : std_ulogic;
          signal_1  : std_ulogic;
 ...
          signal_31  : std_ulogic;
   END RECORD;

在我的 SV 测试台上,我想对 systemverilog 中的每个 signal_%d 应用一个断言。

generate
    for (genvar i = 0; i < 31; i++)
        begin : 
            assert property(pp_one_property(clk, {`PATH_TO_SIGNAL.signal_,i}));
        end
endgenerate

但这不起作用,因为 systemverilog 会期望一个信号作为断言属性的第二个参数。

有什么技巧可以在这些信号上动态应用断言吗?

【问题讨论】:

    标签: concatenation vhdl record system-verilog


    【解决方案1】:

    很遗憾,您必须全部手写。连接运算符不会创建新的标识符。如果您要将记录作为一个数组而不是 32 个单独的字段,您可以这样做,因为您可以根据 genvar 对条目进行索引。

    【讨论】:

    • 用 Python 很容易做到这一点......动态语言的乐趣 :)
    • @chiggs 或者有反射的语言。
    • 确实 - 宏只能让你到目前为止(参见 UVM 源代码)。验证极大地受益于反射/自省能力,所以很遗憾在 SystemVerilog 上投入了这么多精力。
    • 遗憾的是,人们仍然需要将信号列表声明为标量,而不是像原本应该的那样将它们设为数组。
    【解决方案2】:

    SystemVerilog 允许您使用两个连续的重音符(即 ``)从文本宏构建标识符,而无需引入空格。这可能是您最接近您想要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-06
      相关资源
      最近更新 更多