問題タブ [system-verilog]
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.
verilog - Verilog で関数を呼び出してパラメータを指定する方法は?
パラメータを持つ関数を使用して Verilog のモジュール内で関数を呼び出し、それにパラメータを定義するにはどうすればよいですか?
些細な例の場合:
これをどのように呼び出して、呼び出しで W を定義しますか?
string - Verilog での文字列操作
Verilog シミュレーションで、連結、置換、比較などの文字列の基本操作を実行する必要があります。どうしてそれが可能でしょうか?組み込みのサポートはありますか?
前もって感謝します。
verilog - Verilog と SystemVerilog で `include ディレクティブが必要ないのはいつですか?
コンパイラに渡す最上位ファイルが次のようになっているとします。
「my_component.sv」ファイル内で、次のように「my_defines.sv」の定義を使用しています。
`include "my_defines.sv"
問題は次のとおりです。「my_component.sv」内にある必要がありますか? おそらく、この要件はコンパイラ固有のものですか?
object - SystemVerilog で動作するメソッドを使用してインスタンスの名前を取得するにはどうすればよいですか?
メソッドが SystemVerilog で操作するオブジェクトの名前を取得する方法はありますか?
実装のように
文字列を出力する必要があります
verilog - 単一の特定のクラス インスタンス内で SystemVerilog タスクを無効にすることは可能ですか?
SystemVerilog では、disable
構文を使用して名前付きブロックまたはタスクを終了できます。しかし今日、クラス インスタンス内のタスクを無効にすると、すべてのクラス インスタンス内のタスクのすべてのコピーに影響することがわかりました。
その中でいくつかのタスクが定義されているクラスを考えてみましょう。クラスの内部で への呼び出しがある場合、クラスのすべてのインスタンスでタスクのすべてのコピーdisable <taskname>
が無効になります。これは私が期待した動作ではありませんが、LRM によれば正しい動作です。
タスクが複数回有効になっている場合、そのようなタスクを無効にすると、タスクのすべてのアクティブ化が無効になります。
クラスの特定のインスタンス内のタスクのみを無効にするメカニズムまたは回避策はありますか?
以下のコードは、私が直面している問題を強調しています。基本的に、他のイベントのために無効にしたいタイマータスクがあります。これはすべてクラス内に含まれています。私の検証環境では、このクラスの複数のインスタンスがあり、それらは完全に独立して動作します。したがって、1 つのインスタンス内でタイマーを無効にしても、他のインスタンスには影響しません。しかし、disable
それが機能する方法は、他のインスタンスに影響を与えています。
私は試しdisable this.timer
ましたが、それはコンパイルされませんでした。
この例でclass c
は、タスクを含む2 つのインスタンスがありtimer
ます。disabler
を呼び出す、並行して開始されるタスクがありますdisable timer
。この例の目的はtimer
、カウントの途中で無効にすることです。したがってc1
は時間 5 でc2
無効になり、時間 10 で無効になります。ただし、 でdisable timer
発信された呼び出しが との両方でc1
タスクを無効にするため、両方とも時間 5 で無効になります。c1
c2
出力:
を使用せずにこれを書き直して動作させることができることはわかっていdisable
ますが、タスクを早期に終了するのは非常に簡単な方法であるため、欠けているものがあることを願っています。
verilog - Verilogマクロを使用して$displayをエミュレートする方法は?
$displayのように複数のパラメータを持つマクロを作成したいと思います。
私のコードはこのように見えますが、機能しません。
これが私がformat_macroと呼んだ方法です。
これどうやってするの?
verilog - Verilog に __LINE__ のようなものはありますか?
私は Verilog は初めてですが、何年も C プログラマーをしているので危険です。
私はクラスのためにVerilogをやっています。シミュレーション コードで C assert() スタイルのテストを使用したいと考えています。https://en.wikipedia.org/wiki/Assert.h
System Verilog を使用していないため、標準的なアサートは見つかりませんでした。次のマクロをまとめました。
私が知る限り、行番号を取得する方法はありません。したがって、アサーションが失敗した場合、エラーの場所にリンクする方法がないメッセージのみが表示されます。
現在の行番号を取得する方法はありますか? または、Verilog でアサーション テストを行うためのより良い方法はありますか?
ありがとう!
properties - ループ内で多数の SystemVerilog プロパティを生成できますか?
信号の 2 つのパック配列があり、特定の条件下で 2 つの配列が同一であることを証明するプロパティとそのプロパティに関連付けられたアサーションを作成する必要があります。私は正式に検証していますが、ツールは 1 つのプロパティで両方の完全な配列を証明できないため、個々の要素に分割する必要があります。ループを使用して配列の各要素のプロパティを生成する方法はありますか? 現時点では、私のコードは非常に冗長でナビゲートが困難です。
私のコードは現在次のようになっています。
これは、コードを次のようにしたい場合の一種です。
verilog - Using '<=' operator in verilog
Can any one explain me the reason why this particular module doesn'twork when we use '<=' instead of '='
And what we should ensure in order to use '<=' in verilog.
verilog - Verilog での配列エラーの初期化
配列を初期化するとsbox
、構文エラーが発生します。私を助けてください。
これは実際にはsboxです。表示されていたエラー:
「=」付近: 構文エラー、予期しない「=」、IDENTIFIER または TYPE_IDENTIFIER が必要です
私はmodelsimシミュレータを使用していました