1

我有一个现有的验证环境,其中包含简单的长度端口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;

*** 有很多显示器,每个人都有自己的idxevent_a并且event_b

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

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

4

1 回答 1

1

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

event event_a is rise (smp.port_a$[idx:idx])@clock;

作为上升时间表达式中不支持的位切片。(它也记录在“e语言参考”的“事件”一章中。

如果您只对此 64 位信号的一位感兴趣,您可以将此端口定义为 simple_port of bit 并将位切片放入 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;
于 2015-12-23T08:42:15.290 回答