問題タブ [synthesis]
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.
minimize - ブール関数をセルにマップする
既知のブール式をAND、OR、NOTゲートに最適に(またはほぼ最適に:D)マッピングする必要があります。つまり、式のセルライブラリバインディング(別名テクノロジーマッピング)を行います。
この式には 4 つの入力変数 (A、B、C、D) があり、4 つの出力関数 F1、F2、F3、F4 が生成されます。
タスクを実行できる簡単なツールはありますか?
ブール式:
F1 = A' BC D' + A' B' C' D' + A' B C' D' + A B' C + A' BCD + A B' C' D + A' B' CD
F2 = A' B' C' D' + A' B' C' D + AB C' + A' BCD + B' C D' + A B' C' D
F3 = A' BC D' + ABD + B' C D' + A B' C' D + A' B' CD + A B' D'
F4 = AB C' D + A' B C' D' + A' B' C' D + AC D' + A' BCD + A' B' CD + A B' D'
ruby-on-rails - プログラミングにおける合成; 正確には何ですか?
現在、ソフトウェア開発工学に関する本を読んでいます。この本の第一章には、次のように書かれています。
合成は、手動で作成するのではなく、実装を生成するソフトウェア開発の生産性メカニズムです。
それは私を混乱させ、インターネットでそれについての明確な説明を見つけることができませんでした. では、プログラミング分野での実際の例を誰か教えてもらえますか? また、それがコード ジェネレーターのようなものである場合 (たとえば、プロジェクト ディレクトリとコード ファイルを自動的に作成するための Ruby on Rails コマンド ライン)。メタプログラミングとの違いは何ですか?
ありがとう。
parsing - FPGA ネットリスト パーサー
FPGA 用のほぼすべての合成ツールでは、HDL 合成の出力はある種の EDIF 形式です。たとえば、Synopsys では、このような形式の拡張子は .edn です。ただし、このフォーマットはすでに FPGA テクノロジに依存しています (合成前に選択した FPGA タイプとそのセルに依存します)。一方、すべての合成ツールでは、最も単純な OR、AND ゲート、および DFF を使用したゲート レベルの表現を見ることができますが、このレベルの表現の出力ファイルは暗号化されています。
FPGA 合成プロセスの後、最低レベル (AND、OR、DFF) のネットリストを取得する必要があります。生成された EDIF ファイルはテクノロジ/セルに依存するため、それらを解析するのは簡単ではありません (FPGA セル記述のライブラリが必要です)。とにかく、合成プログラムで最低レベルのネットリスト表現を取得できますか?
ご注意いただきありがとうございます。
verilog - Verilog でのモジュールの動作周波数の調整
それぞれ独自のアルゴリズムを持つ 2 つのモジュールのタイミング解析を含む、かなり複雑なモジュールを作成していますが、入力として 2 つの符号付き数値を取り込み、符号付き数値を出力します。
ザイリンクスを合成ツールとして使用し、Verilog で FPGA 用にこのモジュールを設計しています。これで、ザイリンクスは通常、どのモジュールに対してもワースト ケースのタイミング解析を提供することを理解しました。これは、ルーティング時間を含めて入力から出力までに 250 ピコ秒かかる数値の範囲がある場合、400 ピコ秒かかる入力セットが 1 つでもある場合、ザイリンクスが示すタイミング解析は 400 ピコ秒になることを意味します。
私の目標は見つけることです:
1) モジュール 1 がモジュール 2 よりも任意の数値セットで速い場合。
1) モジュール 1 がモジュール 2 よりも高速な数値の範囲。
私が考えることができる唯一の論理的なアプローチは、モジュールの動作周波数を上げることです。これは、400 ピコ秒ではなく 300 ピコ秒後に両方のモジュールに出力を与えるように強制することです。
明らかに、動作周波数を上げると、テストベンチの入力の一部が誤った出力を出します。私の仮説は、最初に誤った回答を出し始めるモジュールがアルゴリズムを持っているというものです。
だから私の疑問は次のとおりです。
1) ザイリンクスを使用して Verilog でモジュールの動作周波数を上げることは可能ですか (合成または解析中に強制する必要のある設定があります)。そうでない場合、タイミング解析を行うためのより良いツールはありますか?
2) このアプローチは実行可能ですか? Cadence を使用してゲート レベルの合成を行う以外に、Verilog を使用して各ゲートの符号付き数値の各セットの実際の時間遅延解析を見つけることができますか?
file - VHDL: 次のファイルが見つかりません: .stx、.ncd、.xrpt
合成を開始する前に ([保存] を押すとすぐに)、次の警告が表示されます。
誰が問題を知っていますか?
hardware - Chisel で X を取得するためにデフォルトを指定しないようにすることは可能ですか?
次のChiselコードは期待どおりに動作します。
io.rdData := UInt(0)
ただし、デフォルトが必要なため、指定しないとコンパイル時エラーになります。明示的に指定するX
か、デフォルトで X、erm を出力しないモジュールをデフォルトにする方法はありますか?
これを行う理由としては、出力がアサートされていない場合ren
は出力に依存するべきではなく、X を指定すると出力を指定できるため、最適化のために、X を指定することで合成ツールにドントケアであることを伝えることができます。
vhdl - レコードを使用することで、VHDL のすべてのラッチの問題を解決できますか?
私は最近、VHDL 合成中の意図しないラッチに関するすべての (ほとんどの) 問題の解決策は、問題のある信号をレコードに入れることであると言われました。
これは少しうますぎるように思えますが、私は VHDL の経験が豊富ではないため、考慮していないことが他にある可能性があります。
すべての信号を記録に入れる必要がありますか?
scala - テスト ハーネスのチゼル ランタイム エラー
このChiselコードは問題なく動作します:
ただし、これは小さなバリエーションですが、実行時エラーが発生します。