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