インターフェイスメソッド/タスクがそのサイクルで呼び出された場合にのみ、そのサイクルでアサートするイネーブル信号を合成することは可能ですか? 次のようなものが必要です。
interface RAM (logic clk);
logic enable;
// ...
always_ff @(posedge clk) enable = 0;
task Read(input address_t address);
enable = 1;
// ...
endtask
//...
modport server(input clk, input enable, ...);
modport client(input clk, export Read, ...);
endinterface
上記は明らかに違法です。私が持っていた唯一のアイデアは、以前の状態を保存し、現在と以前の割り当てがalways_ffで同じかどうかを比較し、タスクの呼び出しで否定することです。ただし、これは実用的ではないようです。非常に具体的であるため、P&R 中に最適化される可能性は低くなります。私が本当に必要としているのは、割り当て時に割り当てられた値を受け取り、それ以外の場合はデフォルト値になるというセマンティクスを持つ論理要素です。