Systemverilog class内のtask/functionはautomaticになる SystemVerilog はじめに task/functionはデフォルトでstaticで宣言されるので注意が必要です。 しかし、LRM 11.9よりclass内のtask/functionはautomaticで宣言されます。 解説 sample1.sv まずは、普... 2022.11.21 Systemverilog
Systemverilog inout ポートはwireでつなぐ SystemVerilog はじめに Verilogは信号をその用途によってregかwireで宣言する必要があります。 代わってSystemVerilogにはlogicという便利な宣言方法があります。Verilogでreg/wireで宣言していた信号は「ほとんど」lo... 2022.11.16 Systemverilog
Systemverilog $display RTLの階層を表示する Verilog はじめに $displayなどで変数の値をログに表示することができますが、その他にも色々な値を表示できます。 Format %mを使用することで、現在の階層を取得することができます。 使い方 $display("%m"); サンプルコード ... 2022.11.14 Systemverilog
Systemverilog uvm_comparer uvm_object::compareの設定を変更する UVM コマンドの説明 uvm_comparerはuvm_objectのMethodであるcompareの設定を変更できます。 使い方 uvm_object ob1; uvm_object ob2; uvm_comparer comp; initi... 2022.10.24 SystemverilogUVM
Systemverilog 【>>>/<<<】算術シフト演算子とシフト演算子 Verilog はじめに Verilogにはシフト演算子「>>/<<」(Shift Operator)と算術シフト演算子「>>>/<<<」(Arithmetic Shift Operator)があります。 使い方 シフト演算子 シフト演算子は左シフト「<<... 2022.09.12 Systemverilog
Systemverilog 【default_nettype】暗黙的なWire宣言 Verilog はじめに Verilogでは1ビットの信号は宣言しなくてもWireと認識されます。 それは、default_nettype というDirectiveのデフォルト値がWireだからです。 module top; assign a = 1; /... 2022.09.07 Systemverilog
Systemverilog Priority/Unique/Unique0の動作確認 SystemVerilog はじめに Priority, Unique, Unique0というものがあると聞いて、動作確認してみました。 使い方 if/caseの前に付けることが可能です。 priority if (<条件1>) <式1> else if (<条件2>... 2022.08.31 Systemverilog
Systemverilog 単純な条件式はif文より3項演算子を使った方がよいという話 Verilog はじめに RTLで、単純な条件式はif文ではなく3項演算子を使用した方がよいという話をどこかで聞いたがなぜだかわからなかったため、調べてみました。 3項演算子の方が実機での動作に近いから、ということかなと思いました。 ifの条件式と3項演算... 2022.08.20 Systemverilog
Systemverilog Pullup/Pulldown 実機とシミュレーションの違い はじめに FPGA開発では基板上で信号がPullup/Pulldownされている信号があります。 基板上でPullup/Pulldownされているということは、DUTには表現されません。 シミュレーションでは注意が必要で、テストベンチ側でP... 2022.08.19 Systemverilog
Systemverilog UVM print_topology()でuvm_componentの階層を表示する 使い方 uvm_top.print_topology(); でuvm_componentの階層をログに出力します。 サンプルコード top.sv module top; `include "uvm_macros.svh" import uv... 2022.08.13 SystemverilogUVM