Verification Engineerの戯言
で紹介した「SystemVerilog User Group Fall Meeting:プレゼンテーション資料」の
「Functional Coverage in SystemVerilog (Kevin Schott)」では、
Functional Coverageについて、moduleを使って説明しています。
資料のPage.14の上に次のようなコードがありました。
このタスクstartUpは、Cpu(dut)に対するデータを共有するタスクで、次のようになっています。
「Functional Coverage in SystemVerilog (Kevin Schott)」では、
Functional Coverageについて、moduleを使って説明しています。
資料のPage.14の上に次のようなコードがありました。
module Top; logic clk; logic [15:0] bus; I_gen_01 stream_gen = new; Fetch_bfm bfm(clk, bus); Cpu dut(clk, bus); initial bfm.startUp("CPU_1",stream_gen,20); endmoduleBFM(bfm)のタスクstartUPをinitial文で起動しています。
このタスクstartUpは、Cpu(dut)に対するデータを共有するタスクで、次のようになっています。
task startUp(string name, I_gen stream_gen, int count); for (int n=0; n<count; n++) begin curr = stream_gen.getInstr(name); drive(curr); curr.cover_instr.sample(); if (n>0) cg.sample(); prev = curr.copy(); end endtask
こんな使い方もあるのですね。勉強になりました。