Events 规格错误:改变|下降|上升的参数必须是(短)标量

Events 规格错误:改变|下降|上升的参数必须是(短)标量,events,specman,e,Events,Specman,E,我有一个现有的验证环境,具有长度为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 moni

我有一个现有的验证环境,具有长度为
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\u a
event\u b

问题是我需要将
LEN
define更改为64,所有事件现在都失败,因为Specman无法在64位总线上定义事件(即使事件实际上仅在1位上“查看”)


你知道如何解决这个问题吗?感谢您的帮助。

实际上,不支持这种形式的事件定义:

event event_a is rise (smp.port_a$[idx:idx])@clock;
在上升时间表达式中不支持位切片。(也记录在 “e语言引用”中的“事件”章节

如果您只对该64位信号的一位感兴趣,则可以将该端口定义为简单的\u位端口 并将位片放入hdl_路径中,如下所示:

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;