Systemverilog 【>>>/<<<】算術シフト演算子とシフト演算子 Verilog はじめにVerilogにはシフト演算子「>>/<<」(ShiftOperator)と算術シフト演算子「>>>/<<<」(ArithmeticShiftOperator)があります。使い方シフト演算子シフト演算子は左シフト「<<」、右シフト「... 2022.09.12 Systemverilog
Systemverilog 【default_nettype】暗黙的なWire宣言 Verilog はじめにVerilogでは1ビットの信号は宣言しなくてもWireと認識されます。それは、default_nettypeというDirectiveのデフォルト値がWireだからです。moduletop;assigna=1;//エラーにならない。... 2022.09.07 Systemverilog
Systemverilog Priority/Unique/Unique0の動作確認 SystemVerilog はじめにPriority,Unique,Unique0というものがあると聞いて、動作確認してみました。使い方if/caseの前に付けることが可能です。priorityif(<条件1>)<式1>elseif(<条件2>)<式2>elseif(... 2022.08.31 Systemverilog
Systemverilog 単純な条件式はif文より3項演算子を使った方がよいという話 Verilog はじめにRTLで、単純な条件式はif文ではなく3項演算子を使用した方がよいという話をどこかで聞いたがなぜだかわからなかったため、調べてみました。3項演算子の方が実機での動作に近いから、ということかなと思いました。ifの条件式と3項演算子if... 2022.08.20 Systemverilog
Systemverilog Pullup/Pulldown 実機とシミュレーションの違い はじめにFPGA開発では基板上で信号がPullup/Pulldownされている信号があります。基板上でPullup/Pulldownされているということは、DUTには表現されません。シミュレーションでは注意が必要で、テストベンチ側でPull... 2022.08.19 Systemverilog
Systemverilog UVM print_topology()でuvm_componentの階層を表示する 使い方uvm_top.print_topology();でuvm_componentの階層をログに出力します。サンプルコードtop.svmoduletop;`include"uvm_macros.svh"importuvm_pkg::*;c... 2022.08.13 SystemverilogUVM
Systemverilog UVM uvm_config_dbでsetした値をログに表示する uvm_config_db#()::dump();完結に、uvm_config_db#(<type>)::set()で登録した値はuvm_config_db#()::dump();でログに表示されます。<type>は指定してもしなくても、す... 2022.08.12 SystemverilogUVM
Systemverilog UVM TPRGEDが出た uvm_warning 現象同じAgentを継承して別々なEnvを作成してそのEnvをテストベンチに組み込むとTPRGEDのWarningが出ますtop.svpackagepkg1;`include"uvm_macros.svh"importuvm_pkg::*;... 2022.08.12 SystemverilogUVM
Systemverilog distの重みづけの動作確認 SystemVerilog distでrand変数に重みづけするdistでrand変数に重みづけができます。動作確認してみます。「:=」の動作確認0:10%,1:30%,2:30%,4:30%の出現確率で10,000回実行します。moduletop;classA;ra... 2022.08.10 Systemverilog
Systemverilog SystemVerilog constraintでrand変数に制約をつける はじめにSytemVerilogのclassの変数はrandを付けることで乱数にすることができます。rand変数はrandomizeメソッドで乱数が生成されます。このとき、constraintで生成される乱数に制約を付けることができます。m... 2022.07.14 Systemverilog