Verilog HDL
シミュレーション実行時に引数を渡す $value$plusargs("arg_description", arg_var)を使う.当該引数がない場合には$value$plusargs()は0を返す. テストコード (test.v) ARG0とARG1が引数名,var_aとvar_bが実際に引数が渡される変数. module test; reg [7…
ふとtwitterでgenerateなしのfor文を利用している例があることを知り,試してみました. generateなしでforをべた書き,スコープを定義 module testtest; wire [3:0] OUT0, OUT1; test uut (OUT0, OUT1); initial begin $dumpfile("uut.vcd"); $dumpvars(0, …
scope1でreg宣言だけをするとSyntax Error module Test; reg [7:0] tmp0, tmp1; initial begin tmp1 = 0; #10; tmp1 = 1; #10; $finish; end always@* begin: scope0 reg [7:0] tmp0; begin: scope1 reg [7:0] tmp0; //tmp0 = tmp1; end tmp0 = tmp1 + 1; en…
scope0とscope1のそれぞれでreg [7:0] aを宣言 module Test; reg [7:0] b; always @* begin: scope0 reg [7:0] a; a = b; begin: scope1 reg [7:0] a; a = b + 1; $display("scope1: a=%d", a); end $display("scope0: a=%d", a); end initial begin b = 10;…
generate for (w=0; w
当該する引数がない場合,"$value$plusargs()"は0を返す. 引数は +arg=val のように書く. reg [2:0] mode; initial begin if(! $value$plusargs("mode=%d",mode) ) begin mode = 1; end $display(mode); end iverilog -o main.vvp main.v $ vvp main.vvp +…
Verilog HDLではgenerate文を使うことで変数やfunction文のスコープを定義することができる.本当にfunction文にスコープが有効なのか気になったので,試してみる.次のテスト用コードGENには3つのfunction testが定義されている. GEN内で共通のfunction te…
taskでVerilogをCっぽく書いてみる・・・がしかし ハードウェア記述言語のVerilog-HDLにはtask文という構文がある. task文中では逐次的にreg変数への代入が記述できる. 通常,task文はテストベンチ中でテストターゲットの操作を行うために利用するが, これを…