問題タブ [systemc]
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.
java - オブジェクトのシリアル化: スレッド状態は関与できませんよね?
実行中のプログラムの状態をディスクに保存し、それを元に戻す基本原則を詳しく調べています。私たちが持っている現在の設計では、各オブジェクト(関数ポインタリストを備えたCレベルのものであり、一種の低レベルの自家製オブジェクト指向であり、このようにするのには非常に正当な理由があります)明示的な状態を書き込み可能で復元可能な形式にエクスポートするために呼び出されます。これを機能させるための重要な特性は、オブジェクトに関連するすべての状態が実際にオブジェクト データ構造にカプセル化されていることです。
一部のオブジェクトにアタッチされたユーザーレベルのスレッドがあるアクティブなオブジェクトを操作する他のソリューションがあります。したがって、プログラム カウンター、レジスタの内容、およびスタックの内容は、突然プログラム状態の一部になります。私の知る限り、そのようなものを任意の時点でディスクにシリアライズする良い方法はありません。スレッドは、プログラムカウンターなどによって何も表されない特別な状態に自分自身をパークする必要があるため、基本的に実行状態マシンの状態を明示的なオブジェクト状態に「保存」する必要があります。
私はさまざまなシリアライゼーション ライブラリを見てきましたが、これは普遍的なプロパティであると言えます。
中心的な質問は次のとおりです。それとも、実際にはそうではないのでしょうか。スレッドが実行されているコードの場所に関して、スレッドの状態を含めることができる保存/復元ソリューションはありますか?
システム状態全体を仮想マシンに保存することはカウントされないことに注意してください。これは実際には状態をシリアル化するのではなく、マシンをフリーズして移動するだけです。これは明らかな解決策ですが、ほとんどの場合、少し重いです。
いくつかの質問により、私たちが物事をどのように行うかという考えを十分に説明できていないことが明らかになりました。私たちはシミュレーターシステムに取り組んでおり、その中で実行されるコードに対して非常に厳しいルールを書くことが許可されています。特に、オブジェクトの構築とオブジェクトの状態を完全に区別します。インターフェイス関数ポインターは、システムをセットアップするたびに再作成され、状態の一部ではありません。状態は、内部ランタイム表現とストレージ表現の間で変換する定義済みの get/set 関数をそれぞれ持つ特定の指定された「属性」のみで構成されます。オブジェクト間のポインターの場合、それらはすべて名前に変換されます。したがって、私たちの設計では、オブジェクトはストレージ内で次のようになる可能性があります。
リンクされたリストは、シミュレーション構造に実際に存在することはありません。各オブジェクトは、ある種のハードウェアのユニットを表します。
問題は、一部の人々がこれを行いたいが、動作をコード化する方法としてスレッドを持っていることです。ここでの「動作」は、実際にはシミュレーション ユニットの状態の変化です。基本的に、私たちが持っている設計では、そのような変更はすべて、呼び出され、作業を行い、戻るアトミックな完全操作で行う必要があると述べています。すべての状態はオブジェクトに格納されます。リアクティブ モデルがあるか、「完了まで実行」または「イベント ドリブン」と呼ぶことができます。
これについての別の考え方は、オブジェクトにアクティブなスレッドを持たせることです。これは、古典的な Unix スレッドと同じように永久ループに留まり、決して終了しません。これは、ディスクに適切に保存できるかどうかを確認しようとしているケースですが、その下に VM を挿入しないと実現できないようです。
更新、2009 年 10 月:これに関連する論文が 2009 年の FDL カンファレンスで公開されました。チェックポイントと SystemC に関するこの論文を参照してください。
verilog - テストベンチ用の verilog または systemc
Verilog ベースの RTL コードを検証するタスクが割り当てられています。現在、verilog を使用して RTL テストベンチをコーディングするのは非常に難しいようです (私にとっては)。そこで、次のいずれかを試してみたいと思います。- RTL への PLI インターフェイスを提供してみて、それによってテスト用の 'C 関数を呼び出す - 'C 関数とのインターフェイスにシステム 'C を使用する
PS: ビヘイビア モデルのテストに使用された広範な 'C コードが既にあります。ハードウェア プログラミングの世界は初めてです。任意のポインタをいただければ幸いです。
c++ - Mingw32でのSystemCライブラリのコンパイル
Mingw32でsystemCライブラリをコンパイルしようとしていますが、「configure」コマンドを実行すると、アーキテクチャがサポートされていないというエラーが発生します。誰かがこの問題を解決しましたか?
vhdl - VHDL/Verilog 関連のプログラミング フォーラム?
VHDL または Verilog を使用したハードウェア設計は、最近ではプログラミングに似ています。しかし、SO メンバーは VHDL/Verilog プログラミングについてあまり積極的に話していないように見えます。
Verilog/VHDL/SystemVerilog または SystemC を使用したハードウェア設計を扱うフォーラムはありますか?
systemc - x86-64マシンへのsystemcSCVライブラリのインストール
SCVライブラリをインストールしようとすると、次の問題が発生しました。
「ビルドシステムタイプを確認しています...無効な構成x86_64-unknown-linux-gnu': machine
x86_64-不明な'認識されません」
「config.guess」と「config.sub」を/usr/ share / libtool / configからコピーして、SCVの既存の「config.guess」と「config.sub」を上書きしました。その後、さらに構成できますが、新しい問題は次のとおりです。
"構成:エラー:ターゲットCPUタイプはサポートされていません:" x86_64 ""
SCVはx86_64ターゲットをサポートする必要があると思いますが、どうすればこの問題を解決できますか?まことにありがとうございます!くん
systemc - システム C はトライステート ロジックをサポートしていますか?
System C はトライステート ロジックをサポートしていますか? つまり、取得できるビット0
、1
またはは「不明X
」を意味しますか?X
X
もしそうなら、論理演算や算術演算を含む es を含むことができるベクトルもサポートしていますか?
c++ - SystemCカーネル全体なしでC++でSystemCデータ型を使用することは可能ですか?
システムCは、数値(つまり、アーティメティックのサポート付き)またはビットベクトル(つまり、論理演算のサポートとサブベクトルの操作)のいずれかとして操作できる任意の長さの整数型を提供します。
システムCは、時計やフリップフロップなど、私が望まないあらゆる種類のサポートと、独自のランタイムも提供します。私はうるさいです-オーバーヘッドのないデータ型が必要です。
これらのデータ型は、システムCカーネルの他の部分とは独立して使用できますか?もしそうなら、どのように?
c++ - sc_core::sc_in での SystemC Seg Fault::読んだ()
SystemC の使用中に、セグ フォールトが繰り返し発生します。初期化中に値を 0 に設定しました。テストベンチの操作中に、モジュール (proc) でこの値を 1 に設定しています。これは、別のモジュール imem のポートに接続される sc_signal 変数です。入力ポートのタイプは sc_in です。
理論的には、この割り当てにより入力ポートにも 1 が割り当てられ、.read() 関数を使用してアクセスしようとすると、1 が返され、imem 内の別の内部 sc_signal に割り当てられるはずです。
ただし、代わりにセグフォルトが発生しています。
gdb によると、これは私が行った sc_start(10,SC_NS) 呼び出し中に発生しています。これは値を更新する必要があるためです。特に .read() のリターンを実行しようとしていることがトレースされます。スタック リターンの簡単なスニペットを次に示します (g++ および gdb6.6、64 ビット システムを使用した -O0 および -g3)。
ポート宣言:
関数宣言 (SC_CTOR(imem) で発生):
それが死ぬ場所の機能:
imem::reg_write()
セグフォルトが発生する直前にコンソールに出力されます。
imem のポートの宣言とバインディング:
駆動信号の宣言:
何か案は?考え?私が試すべきことは?
編集:コード行を追加または削除すると、セグフォルトが消えることがあります。ある特定のインスタンスでは、デバッグcout
ステートメントを追加して問題を修正しました<< std::endl
が、末尾に a を追加した後、セグ フォールトが返されました。これは、私が競合状態にあることを暗示していましたが、理論的には SystemC がすべての同時スレッドを処理する必要があります。
vhdl - SystemC は回路を図面として表示できますか?
いくつかのデジタル回路を設計する必要がありますが、手で描くのは面倒です。それらを行うためのより簡単な方法を検索し、VHDL とさらに興味深い SystemC を見つけました。最後の 1 つは非常に素晴らしく、理解しやすいですが、回路の視覚的表現で結果を印刷できるようにする必要があります。
SystemC は回路を図面として印刷できますか?
c++ - C++を使用したデータ型のビットへの選択的アクセス
SystemCを使用したハードウェアベースのモデル設計にC++を使用しています。C ++拡張としてのSystemCは、信号とバイトの記述に役立つ特定のデータ型を導入します。
一般に、次のようにデータ型の最初のビットにアクセスするにはどうすればよいですか。
または、の最初の4ビットにアクセスしますtmp
。
sc_bvはビットベクトルデータ型であり、バイナリシーケンスを格納します。ここで、そのデータ型の最初の4ビットが必要です。私のバックグラウンドはC#とJavaであるため、一般的にOOPとReflexionベースのAPI構造のいくつかが恋しいです。この低レベルのもので変換を実行する必要があります。便利な入門的なものが大いに役立ちます。
ありがとう:)、wishi