Macros Specman宏:如何使用可选标记?

Macros Specman宏:如何使用可选标记?,macros,specman,e,Macros,Specman,E,我有一个定义端口的宏: -- Create simple port define <p_def'struct_member> "p_def <name'name> <type'type>" as { <name'name> : inout simple_port of <type'type> is instance; keep bind(<name'name>,empty); }; 我无法在Specman

我有一个定义端口的宏:

-- Create simple port
define <p_def'struct_member> "p_def <name'name> <type'type>" as {
    <name'name> : inout simple_port of <type'type> is instance;
    keep bind(<name'name>,empty);
};

我无法在Specman e语言参考中找到如何知道
可选标记
[如果有人感兴趣,答案是什么:

define <p_def'struct_member> "p_def <name'name>[\[<len'name>\]] <type'type>" as computed {
   if <len'name> == NULL {
      result = appendf("%s : inout simple_port of %s is instance; \n keep bind(%s,empty);", <name'name>, <type'type>, <name'name>);
   } else { // list
      result = appendf("%s[%s] : list of inout simple_port of %s is instance; keep for each in %s { bind(it,empty); };", <name'name>, <len'name>, <type'type>, <name'name>);
   };
};
将[\[”定义为计算值{
若有,),;
}else{//list
result=appendf(“%s[%s]:%s的inout简单_端口列表是实例;在%s中为每个端口保留{bind(it,empty);};”,);
};
};

顺便说一下,可选参数的正确名称应该是
而不是
,是的,使用
定义为计算的
宏(而不是
定义为
)正是根据输入/参数创建不同备选方案的方法。
p_def my_list_of_ports[10] bit;
define <p_def'struct_member> "p_def <name'name>[\[<len'name>\]] <type'type>" as computed {
   if <len'name> == NULL {
      result = appendf("%s : inout simple_port of %s is instance; \n keep bind(%s,empty);", <name'name>, <type'type>, <name'name>);
   } else { // list
      result = appendf("%s[%s] : list of inout simple_port of %s is instance; keep for each in %s { bind(it,empty); };", <name'name>, <len'name>, <type'type>, <name'name>);
   };
};