SignalSpyはMentor Graphics®のModelSimに組込みのツールです。アルデックのActive-HDLとRiviera-PROには、同等の機能を持つSignalAgentというツールがあります。SignalAgentはVHDLブロックからのVHDL信号を観測し、さらに任意のブロックの信号を駆動させることができます。混合言語のデザインでは、SignalAgentでデザイン階層内部のVerilogオブジェクトをVHDLから直接駆動することができます。また、SignalAgentではVerilogネットやレジスタから読んだ値でVHDL信号を駆動することもできます。
アルデックのSignalAgentの使用法はModelSimのSignalSpyと似ていますが、以下が必要となります。
所定のパッケージを宣言します。
library aldec; use aldec.signal_agent_pkg.all;
VHDLコードでは、プロシージャsignal_spyの代わりにsignal_agentを指定します。
Active-HDLとRiviera-PROに付属するSignalAgentの例もご参照ください。
SignalSpyの関数を編集してSignalAgentに移行することができます。SignalAgentの関数とSignalSpyの関数の対応を次の表に示します。
SignalSpy |
SignalAgent |
init_signal_spy |
signal_agent |
signal_force |
force_signal |
signal_release |
noforce_signal |
さらに詳しい説明については、Active-HDLやRiviera-PROのヘルプウィンドウをご参照ください。検索タブでforce_signalまたはsignal_agentを指定すれば該当部分のヘルプが表示されます。
ModelSim用に作成したソースコードを変更したくない場合は、アルデックのsignal_agentの上位にプロシージャsignal_spyを作成します。
package signal_spy_pkg is procedure signal_spy ( source_signal: string; destination_signal: string; verbose: integer ); attribute foreign of signal_spy: procedure is "VHPI systf; call_vhpi_signal_agent"; end package signal_spy_pkg; package body signal_spy_pkg is procedure signal_spy ( source_signal: string; destination_signal: string; verbose: integer ) is begin end procedure signal_spy; end package body signal_spy_pkg;
この方法では、パッケージを作業ライブラリなどにコンパイルしてから、次のようなライブラリ・コードを書きます。
use work.signal_spy_pkg.all;
元のファイルに必要な修正はこれだけです。