specman e宏循环

时间:2011-06-24 03:05:23

标签: macros verification specman

我正在尝试编写一个用循环定义实例的宏(未计算),例如,如果它是一个计算宏,那就是:

define <def_struct'statement> "def_struct <str_name'name> <number'num> to <other'name>" as computed {

         result.add(appendf("extend %s { ", <other'name> ) );
                 for i from 0 to <number'num> do {
                    result.add(appendf("%s_%d : %s;", <str_name'name> ,i,<str_name'name> ));
                 };
          result.add("};"); }

是否可以对不是计算宏的宏执行相同的操作?

我的语法可能有问题,但看看这个想法......

1 个答案:

答案 0 :(得分:0)

在您的computed as示例中,您正在创建一组同一类的实例。为什么不实例化结构列表?

myStructs : list of MyStruct_s;

如果需要,您可以根据索引限制列表中的每个项目,如:

keep for each (s) using index (i) in myStructs {
    i==0 => s.fooBar == BAZ;
    s.name == appendf("this is struct %d",i);
};