問題タブ [ghdl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - cocotb の generate ステートメントで使用できないモジュール名
cocotb v1.0 と ghdl 0.35-dev (llvm と gcc バックエンド) を使用しています。
最上位には、単純な for generate ステートメントが含まれています。
「dut.gen_pe[1]」を使用して、cocotb テストベンチで最初に生成されたモジュールにアクセスしようとしました。次のエラーが発生します。
dut をループすると、generate ステートメントから次のサブモジュールが検出されます。
残念ながら、有効な Python 構文ではないため、"dut.(1)" でそれらにアクセスすることはできません。
次に、cocotb/tests/test_cases/test_array からテスト配列 testcase を実行しようとしました:
ほとんどすべてのテストが失敗しています。
test_gen_loop の出力は次のとおりです。
それは私の設計でのエラーに似ています。したがって、モジュールの命名に問題があると思います。
有効なモジュール名を取得する方法、またはエラーを完全に修正する方法はありますか?
編集:最小限の例
フォルダ:/home/Programme/cocotb/examples/generate
/home/Programme/cocotb/examples/generate/hdl/top.vhd
:
/home/Programme/cocotb/examples/generate/tests/top_cocotb.py
:
/home/Programme/cocotb/examples/generate/tests/Makefile
:
で実行した後、代わりにmake
gpi-module 名がコンソールに出力されます。(1) ... (4)
gen_pe(1) ... gen_pe(4)
アップデート:
gpi モジュール名は、最新バージョンの ghdl で修正されています。ただし、cocotb テスト配列のテストケースはまだ失敗しています。
vhdl - ghdl は vhdl を何にコンパイルしますか?
ghdl は vhdl コードをゲートごとに実装された仮想回路にコンパイルしますか? それがコンパイルされた回路を見ることができますか?
types - VHDL で 2 つの整数の合計を保持する型を定義する適切な方法
2 つの整数入力と 1 つの選択入力を持つ非常に単純なモジュールを作成しようとしています。selectが0の場合、出力は入力の合計であり、selectが1の場合、出力はそれらの差でなければなりません。GHDL を使用した簡単なテスト ベンチでモジュールを検証します。モジュールは合成可能である必要はありません。
私の最初の試みは次のとおりです。
問題は、GHDL がオーバーフロー エラーを出すことです。私が理解している限り、2 つの整数の合計は別の整数に収まらないからです。
結果を保持するのに十分な範囲を持つ型を定義するにはどうすればよいですか? 私の最初の試みは次のとおりです。ただし、その場合、新しい型に対して「+」および「-」演算子を定義する必要があります。
必要な範囲が整数よりも広いため、サブタイプ定義を使用できません。サブタイプを定義できれば、整数に対して定義された「+」および「-」演算子を再定義せずに使用できます。
編集1:
テスト ベンチと正確なエラーが気になる方のために、EMACS vhdl-mode を使用して半自動生成されたテスト ベンチを示します。
GHDL からの正確なエラーは次のとおりです。
21行目は
ソースファイルで。
編集2:
私のGHDLについて: