2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

【FPGA/CPLD】 XILINX/ALTERA/Lattice/Actel #31

891 :774ワット発電中さん:2023/11/20(月) 15:17:27.24 ID:k1b6X5vi.net
完全にエスパー話なんですけど、verilogの直接配線wireと疑似直接配線的なregで信号伝達に変化って出ます?
FPGAのmodelsimでのシミュレーションでテストベンチ下のメインモジュール下にモジュールAの1つ目のインスタンス、モジュールAの2つ目のインスタンスがある状態で、
メインモジュールに入力AがあってモジュールAに入力Bがあって、
テストベンチからメインモジュールのAを通ってモジュールA の1つ目のインスタンスの入力Bにそのままつなぐ(wire)場合と
モジュールA の2つ目のインスタンスの入力Bにreg宣言した信号経由でつなぐ(記述的にはalways@* tmpA<=A;だけど本質的にはwire信号みたいに分岐した信号に信号名付けただけのつもり)場合で
両者のモジュールAの出力が変わる(正確には1つ目のインスタンスの方は入力信号が0のままっぽい)だけど原因分かります?
因みにreg宣言信号経由の代入を(tmpAをwire宣言にして)assign tmpA=A;で行うと1つ目のインスタンスと同じ結果になりました。
ポート幅は1ビットで入力宣言している時点でwire宣言省略できますが、一応していて、上位ビットを落としているという話もないです。

ズバリregとwireで違うってのもわかるけど、上記の場合、ただつなげているだけって認識だから差異がるのがわからない。
そもそもなぜこんな話をしたかというと元々そのままつなぐ方法で正常にシミュレーション動いてて、モジュールAの後段の動作でミスがあったから直しているとモジュールA の動作がおかしくなっていて、
そのままつないだ信号が死んでるっぽいことが判明した。(モジュールAは後段の影響は受けない、モジュールA自体は触っていないがテストデータなどは触った)
最初はそのままつないで動いていた、入力信号を下位のモジュールにそのままつなげるなんて他の場所でも過去も含めてよくやっている、正直、そんなことある???って感じで腑に落ちなさ過ぎて
何かしょうもない理由な気がするのですが、検証ではズバリregとwireで動作が変わったという結果だけあるので…
他の場所でもよくやってるって言っているように普通に同じことやっても再現しない気がします。
あとmodelsimで両者のモジュールの入力を見ると同じ信号が入っている。(中身も追えばいいんだけど単純なロジックで同じモジュールをインスタンスしているので、検証時間の都合で見てない)

248 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver.24052200