Specman是否支持方法的可选参数?

时间:2014-12-23 09:57:24

标签: optional-parameters specman e

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

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

然后您可以将其称为cpp_func(10)cpp_func(10, 0)。 非常感谢任何帮助。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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);