Systemverilog SystemVerilog defineマクロについて考える はじめにdefineマクロが思ったよりいろんな使い方ができたので、試してみました。サンプル1 値を置換`define DEF_INIT 2always_ff @(posedge clk, negedge rst_n) if (!rst_n)... 2022.05.29 Systemverilog
Systemverilog uvm_config_dbについて考える はじめにUVMを使っていると必ず出てくるuvm_config_db。なんとなく、テストベンチでInterfaceをデータベースに登録して、クラスの中で呼び出すんだなぁと漠然と思っていました。今回は様々な条件で使用してみて理解を深めます。また... 2022.05.20 SystemverilogUVM
Systemverilog UVM Sequenceを実行する方法まとめ サンプルコードsample_sequence_item.svhSequenceで使用するSequence_itemです。class sample_sequence_item extends uvm_sequence_item; `uvm_o... 2022.04.24 SystemverilogUVM
Systemverilog UVM Virtual SequenceでSequenceを実行する方法まとめ サンプルコードsample_seq.svh(Sequence)今回使用するSequenceです。クラス変数として、din1とdin2を持ちます。class sample_seq extends uvm_sequence #(sample_s... 2022.04.21 SystemverilogUVM
Systemverilog 【UVM】ScoreBoardを作成する~期待値比較する~【#3】 はじめに前回はuvm_tlm_analysis_fifoを使用してFIFOを実装しました。今回はDUTの出力を取得してScoreBoardで期待値比較します。サンプルコードdut.sv入力データをそのまま出力するだけの回路です。validが... 2022.04.20 SystemverilogUVM
Systemverilog 【UVM】ScoreBoardを作成する~uvm_tlm_analysis_fifoを使用する~【#2】 はじめに前回はScoreBoardでAnalysis Exportを定義してMonitor階層のAnalysis Portと接続しました。Analysis Exportはデータを受け取るだけなので、FIFOのようにデータを保持する仕組みをS... 2022.04.17 SystemverilogUVM
Systemverilog 【UVM】ScoreBoardを作成する~Monitor階層からトランザクションを取得する~【#1】 はじめにScoreBoardはDUTの出力と期待値を比較する階層です。UVMモデルのMonitorとAnalysis Portを介してDUTの出力を取得します。サンプルコードsample_scoreboard.svhuvm_scoreboa... 2022.04.14 SystemverilogUVM
Systemverilog 【UVM】Register階層を作成する~AdapterでAgentと接続する~【#2】 前回のおさらいRegister階層を作成しました。UVMモデルを介してDUTのレジスタにアクセスするためにAdapterを作成します。サンプルコードsample_sequence_item.svhRegister階層と接続するUVMモデル(... 2022.03.31 SystemverilogUVM
Systemverilog 【UVM】Register階層を作成する~uvm_regでレジスタを管理する~【#1】 はじめにRegister階層(Register Layer)を作成します。UVMではレジスタをuvm_regを継承したクラスで定義します。1レジスタごとに1クラスを作成して、uvm_reg_blockを継承したクラスで1まとめにします。サン... 2022.03.30 SystemverilogUVM
Systemverilog 【UVM】クロック生成モデル はじめにUVM環境でクロック生成モデルを作成します。構成とサンプルコードUVMモデルの構成Sequence_itemclock_sequence_item.svhclass clock_sequence_item extends uvm_s... 2022.03.20 SystemverilogUVM