1

同じことを行うを作成しなくても、仮想シーケンスがvr_ad write_regまたはマクロを直接呼び出す方法はありますか?read_regvr_ad_sequence

より明確に説明するために、これが私の現在の実装です。

<'
extend vr_ad_sequence_kind : [WR_DMA_POLL];
extend WR_DMA_POLL vr_ad_sequence {
    !dma_poll : DMA_POLL vr_ad_reg;

    body() @driver.clock is only {
        write_reg dma_poll val 0xdeadbeef;
    };
};

extend MAIN soc_tb_virtual_sequence {
    !write_dma_poll : WR_DMA_POLL vr_ad_sequence;

    body() @driver.clock is only {
        message(LOW, "TEST START");
        do write_dma_poll on driver.reg_driver;
    };
};
'>

なぜそれができないのですか、またはこの方法で実装することは可能ですか?

extend MAIN soc_tb_virtual_sequence {
    !dma_poll : DMA_POLL vr_ad_reg;

    body() @driver.clock is only {
        message(LOW, "TEST START");
        write_reg {.dest_driver == driver.reg_driver} dma_poll;
        read_reg {.dest_driver == driver.reg_driver} dma_poll;
    };
};

事前にご説明いただきありがとうございます。

4

1 に答える 1

3

これは、vr_ad 13.20 (またはそれより少し古い) 以降で可能です。あなたの質問にはほとんどそれがありました。正しい構文は次のとおりです。

extend MAIN soc_tb_virtual_sequence {
    !dma_poll : DMA_POLL vr_ad_reg;

    body() @driver.clock is only {
        message(LOW, "TEST START");
        write_reg {.driver == driver.reg_driver} dma_poll;
        read_reg {.driver == driver.reg_driver} dma_poll;
    };
};

最初の一連の{...}区切りは、レジスタへのアクセス方法を制限できる演算生成ブロックです。これらの制約は、アクセスの一部として生成される に渡されvr_ad_operationます。

于 2015-02-16T06:06:04.763 に答える