1

我想向现有方法添加新输入,但不要更改之前对该方法的所有调用。Specman 是否支持方法的可选参数?就像在 C++ 中一样:

void cpp_func(int bla, int foo = 0) {
   //do something ...
};

然后你可以同时调用它cpp_func(10)and cpp_func(10, 0)。非常感谢任何帮助。

4

2 回答 2

4

是的,Specman 支持方法参数中的默认值表达式。

例如,下面的代码:

extend sys {
    goo() : uint is { return 111; };
    boo() : uint is { return 222; };

    foo(x: uint, y: uint = 100, z: uint = boo() + goo()) is {
        print x;
        print y;
        print z;
    };

    run() is only {
        foo(11);
        foo(11,22);
        foo(11,22,33);
    };
};

将导致:

  x = 11
  y = 100
  z = 333

  x = 11
  y = 22
  z = 333

  x = 11
  y = 22
  z = 33
于 2014-12-23T10:50:00.557 回答
0

您还可以执行以下操作:

必须设置“可选”参数的默认值(exp_fail:bit = 1)。

 check_bit(field: field_to_be_checked, exp_fail: bit = 1)@driver.clock is{};

所以默认情况下它将是 1,你不需要传递它:

check_bist_in_reg(BIT_NUM);

如果你愿意,只需像往常一样传递它:

check_bist_in_reg(BIT_NUM, 0);
于 2021-03-26T13:11:02.823 回答