ワイヤの名前や階層パスを事前に指定せずに、Verilogタスクで任意のワイヤを特定の値に強制する方法はありますか?できれば、可能なワイヤごとに大量のifステートメントを記述する必要はありません。
私の目標は、このタスクを使用してテストベンチの観点から任意のワイヤを駆動できるように、十分にモジュール化することです。
私がやりたいことの例:
task force;
input value;
input [8*N-1:0] string; // Assume N is large enough
begin
force ... = value;
end
endtask
3つのドット「...」は、渡されたワイヤのパスになります(例:counter0.clk0.in_enable)。
64本のワイヤーがあり、そのうちのいくつかを強制的に高くしたいとします。それらは単一のバス上になく、すべて異なる名前または階層パスを持っています。テストベンチのセットアップでは、ドライブしたいワイヤーのテーブルを特定の値に読み取り、各ワイヤーをこのVerilogタスクに渡すC関数を記述しますが、どのワイヤーをハイにドライブするかをシミュレーターに指示するにはどうすればよいですか?タスク自体で毎回すべてのワイヤを書き出しますか?
私がこれを行うことができる場合、それを行う正しい方法は何ですか?私がこれを行うことができない場合、代わりに何を提案できますか?