Specman E error: Argument to change|fall|rise has to be (short) scalar
Specman E error: Argument to change|fall|rise has to be (short) scalar
我有一个现有的验证环境,其中包含长度为 LEN
的简单端口。
此外,还有一些事件,当只有一个相关端口的位上升时发生:
// Port declaration:
port_a : inout simple_port of uint(bits:LEN) is instance;
port_b : inout simple_port of uint(bits:LEN) is instance;
...
// Events that use the ports for 1 monitor:
event event_a is rise (smp.port_a$[idx:idx])@clock;
event event_b is rise (smp.port_b$[idx:idx])@clock;
*** 有很多显示器,每个显示器都有自己的idx
、event_a
和event_b
。
问题是我需要将 LEN
定义更改为 64,现在所有事件都失败了,因为 Specman 无法在 64 位总线上定义事件(即使事件实际上是 "look" 仅在 1 位..)
您知道如何解决该问题吗?感谢您的帮助。
实际上,不支持这种定义事件的形式:
event event_a is rise (smp.port_a$[idx:idx])@clock;
在 rise Temporal 表达式中不支持作为位片。 (它也记录在
‘e语言参考’中的‘事件’章节。
如果您只对这个 64 位信号的一位感兴趣,您可以将此端口定义为 simple_port 个位
并将位片放在hdl_path中,如下所示:
idx:uint(bits:6);
keep idx==34; // the specific bit to this monitor.
port_a : in simple_port of bit is instance;
keep port_a.hdl_path()==read_only(append("signal_name[",idx,":",idx,"]"));
然后将事件定义为:
event event_a is rise(port_a$)@sim;
我有一个现有的验证环境,其中包含长度为 LEN
的简单端口。
此外,还有一些事件,当只有一个相关端口的位上升时发生:
// Port declaration:
port_a : inout simple_port of uint(bits:LEN) is instance;
port_b : inout simple_port of uint(bits:LEN) is instance;
...
// Events that use the ports for 1 monitor:
event event_a is rise (smp.port_a$[idx:idx])@clock;
event event_b is rise (smp.port_b$[idx:idx])@clock;
*** 有很多显示器,每个显示器都有自己的idx
、event_a
和event_b
。
问题是我需要将 LEN
定义更改为 64,现在所有事件都失败了,因为 Specman 无法在 64 位总线上定义事件(即使事件实际上是 "look" 仅在 1 位..)
您知道如何解决该问题吗?感谢您的帮助。
实际上,不支持这种定义事件的形式:
event event_a is rise (smp.port_a$[idx:idx])@clock;
在 rise Temporal 表达式中不支持作为位片。 (它也记录在 ‘e语言参考’中的‘事件’章节。
如果您只对这个 64 位信号的一位感兴趣,您可以将此端口定义为 simple_port 个位 并将位片放在hdl_path中,如下所示:
idx:uint(bits:6);
keep idx==34; // the specific bit to this monitor.
port_a : in simple_port of bit is instance;
keep port_a.hdl_path()==read_only(append("signal_name[",idx,":",idx,"]"));
然后将事件定义为:
event event_a is rise(port_a$)@sim;