問題タブ [asic]

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.

0 投票する
1 に答える
579 参照

verilog - 2 クロック分周と対応するリセット生成

私の質問は、合成可能な 2 クロック分周の生成と、verilog での対応するリセットの使用についてです。

Verilog を使用して、以下のように 2 クロック分周を生成できます。

私の質問は、rst_n を使用して対応するリセット (clk_tx を使用してフロップで使用される) を生成する方法です。

誰でも同じことで私を助けることができますか?

私はあなたの助けに感謝します

0 投票する
2 に答える
6902 参照

for-loop - FOR-LOOP と FOR-GENERATE の実装の実際的な違いは何ですか? どちらか一方を使用する方が良いのはいつですか?

std_logic_vector でさまざまなビットをテストする必要があるとします。各ビットに対して for ループを実行する単一のプロセスを実装するか、各プロセスが 1 ビットをテストする for-generate を使用して「n」個のプロセスをインスタンス化する方がよいでしょうか?

FORループ

生成する

この場合、FPGA および ASIC の実装にどのような影響がありますか? CADツールで扱いやすいのは?

編集:私の質問をより明確にするために、私が1人の助っ人に与えた応答を追加するだけです:

たとえば、ISE で for ループを使用してコードを実行したとき、合成の要約では公正な結果が得られ、すべてを計算するのに長い時間がかかりました。今回は for-generate を使用していくつかのプロセスを使用してデザインを再コーディングしたとき、使用する領域が少し増えましたが、ツールはすべてをはるかに高速に計算でき、タイミング結果も向上しました。それで、それは、余分な領域のコストと複雑さの低い for-generates を使用する方が常に良いというルールを暗示していますか、それとも実装の可能性をすべて検証する必要があるケースの 1 つですか?

0 投票する
2 に答える
2137 参照

verilog - 異なる幅のパルスの作成

異なる幅のパルスを生成する次のコードを書きました。コードが選択行に従って単一のパルスを生成するようにします。選択行が

00 パルス幅 = 1us、01 パルス幅 = 10us 。. 11 パルス幅 = 1000 us

入力クロックは 10 Mhz です。しかし、コードによると、選択ラインの他の値を指定しない場合、連続パルスを取得しています.1つのパルスのみを達成するにはどうすればよいですか?

このコードは、回路の合成とハードウェアを考慮した適切なコーディング スタイルですか? そうでない場合、どのような変更を適用する必要がありますか?.

0 投票する
2 に答える
1352 参照

python - PythonによるIC設計・検証

この分野では、Perl および Python スクリプトの経験を求めている仕事がたくさんあります。あるとしても、C プログラミングはほとんどありません。HDL (verilog、VHDL) とデジタル システム設計の知識が主な焦点です。

Python は一般的に、業界標準として、または「非公式標準」として、これらの職務で使用されていますか? 私は Python の経験がほとんどなく、最も便利なアプリケーションである数学/科学アプリケーションを扱っています。

この作業分野で Python の経験が豊富で、ライセンスベースのソフトウェア/ツールが完全に有益かどうかを知っている人はいますか?

0 投票する
0 に答える
165 参照

vhdl - 1 回のシミュレーションで可変長の入力を読み取る効率的な合成可能な方法

私は vhdl を初めて使用し、答えが見つからない質問があります。

1024 ビット長のベクトルで動作するアルゴリズムを実装しようとしています。したがって、ファイルからデータを読み取って、このtemp_vector(1023から0まで)に挿入する必要があります。

ファイルには多くの入力が含まれており、各入力に対して、アルゴリズムは前の入力の出力に対して動作します。問題は、この入力データの長さが一定ではなく、各入力の長さが 0 から 16000 まで変化することです。

各サイクルで、テストベンチから読み取って挿入できるのは 64 ビットのみです。特定の瞬間に、既に挿入されたデータに可変長のビットのシーケンスを追加する必要もあります。整数の bit_position を使用して、データを挿入した temp_vector の最後の位置を追跡し、整数の data_in_length を使用して、各サイクルで読み取ったデータの実際の長さを教えてくれます。

temp_vector がいっぱいになるか、すべての入力の挿入が完了したら、読み取りを停止し、アルゴリズムが temp_vector で動作してから、ファイルからの読み取りを再開します。

シミュレーションで正しい結果が得られます。私が抱えている問題は、FPGA と ASIC 合成にあります。これは、入力データの長さが変化することに関係しています。ファイルを読み取って temp_vector にデータを挿入するために、2 つの方法を考え出しました。初め

そして第二に

2 番目のアプローチは FPGA で機能しますが、多くの時間がかかり、多くのロジック エレメントが消費され、デザイン コンパイラでは、範囲を一定にする必要があるというエラーが返されます。

最初のものもFPGAで動作し、ASIC(デザインコンパイラ)でエラーを返しませんが、ASICの場合は永久に実行されます(一晩実行させました)。最初のコードを含むエンティティのパス 1 マッピングの開始時にスタックしました。

問題を十分に説明したことを願っています。より効率的な方法で実装する方法についていくつか考えていただければ幸いです。

ファイルが一度に読み取られて操作されるため、ジェネリックを使用できるとは思わないため、シミュレーション中に長さが変化します。シフトについても考えましたが、シフト値は毎回変化するため、それでも多くの時間/領域を消費すると思います。

最後に、私のアプローチ全体が間違っている可能性がありますか? FPGA、特にASICの場合、特定の入力サイズで作業する必要がある可能性はありますか? つまり、すべてのファイルでは機能せず、指定されたサイズの入力のみで機能するコードを作成して合成する必要があります。

お時間をいただきありがとうございます。

0 投票する
3 に答える
6305 参照

verilog - Verilog で inout ポートと output ポートを交換して使用できる場合がある場合、inout ポートの正確な基準は何ですか?

以下のモジュールでは、理想的には cnt, width & startを出力ポートではなく、入力ポートにする必要があります。

しかし、これらのポートを出力ポートとして試してみましたが、それでもエラーなしで実行できます。では、Verilog では inout ポートと出力ポートを同じ意味で使用できますか?

いいえの場合、入力ポートを使用する必要がある正確な基準は何ですか (その場合、出力ポートは使用できません)?

注 - inout ポートの場合、inout ポートは reg タイプにできないため、コードを変更する必要があることはわかっています。しかし、私はここでポートの種類だけについて尋ねています。

0 投票する
1 に答える
389 参照

system-verilog - リセット対応の always_ff ブロックでレジスタをリセットしないことの意味は何ですか?

リセット対応 always_ff ブロック内でフロップをリセットしないとどうなりますか?

例 1:

例 2:

例 1 と 2 の唯一の違いは、例 2 では reg_b にリセット条件がないことです。バックエンド/合成におけるこの間違いの結果はどうなりますか? 私は、シンセシスの経験がほとんどないフロントエンド RTL 設計のバックグラウンドを持っています。したがって、上記の例 2 が悪い習慣である理由を理解しようとしています。

明らかな問題の 1 つは、リセット直後に例 2 の reg_b が X になることです。したがって、reg_b が制御ロジックで使用されている場合、設計にバグが発生する可能性があります。これ以外に、これによってどのような問題が発生する可能性がありますか?

0 投票する
1 に答える
2253 参照

verilog - Verilogで行列乗算を行う方法は?

1x3 * 3X64ここでは、マトリックスの各値は10進数であるため、各値について一度に各行のビットにアクセスする合計ビットであるビットを取得しまし4た。4x644

一般化してみました。

行列の形式は1x3 [2,4,3]&

3*64(64 decimal value in each row)

行 1[1111111111111111111111111111(64)]

行 2[11111111(8)22222222(8).....88888888(8)]

行 3[1234567812345678.................12345678]

試したコード

これの一般化された形式が必要です..

私が持っているエラー:

エラー:HDLCompilers:110 - "mat.v" 行 36 ベクトル ワイヤ 'h1' の部分選択の最下位ビット オペランドが不正です