1

長さの単純なポートを持つ既存の検証環境がありますLEN。さらに、関連するポートのビットの 1 つだけが立ち上がったときに発生するイベントがあります。

  // 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

問題は、define を 64 に変更する必要がありLEN、Specman が 64 ビットのバスでイベントを定義できないため、すべてのイベントが失敗することです (イベントは実際には 1 ビットでしか「見えない」にもかかわらず..)

この問題を回避する方法はありますか? 助けてくれてありがとう。

4

1 に答える 1

1

実際には、この形式のイベント定義はサポートされていません。

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

as ビット スライス インは、ライズ テンポラル式内ではサポートされていません。(これは、「e language referene」の「イベント」の章にも記載されています。

この 64 ビット信号の 1 ビットのみに関心がある場合は、代わりにこのポートをビットの 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;
于 2015-12-23T08:42:15.290 に答える