ひでみのアイデア帳

くだらないことなんだけど、忘れないために・・・

Verilog HDLの下位階層の信号をインプリメントできるようなぁ・・・

普段はけっして、こんな使い方はしないんだけど、テストベンチとかだったりするとモジュールの下位階層の信号を直接見たりするよね。

次の例ではsample_topモジュールからsample_subモジュールのregaとregbを参照している。

sample_top.v

module sample_top(
  input RST_N,
  input CLK,

  input [7:0] DINA,
  input [7:0] DINB,

  output [7:0] DOUT,

  output [7:0] TESTA,
  output [7:0] TESTB
);

sample_sub u_sample_sub(
  .RST_N(RST_N),
  .CLK(CLK),

  .DINA(DINA),
  .DINB(DINB),

  .DOUT(DOUT)
);

assign TESTA = u_sample_sub.rega;
assign TESTB = u_sample_sub.regb;

endmodule

sample_sub.v

module sample_sub(
  input RST_N,
  input CLK,

  input [7:0] DINA,
  input [7:0] DINB,

  output [7:0] DOUT,

  output [7:0] TESTA,
  output [7:0] TESTB
);

reg [7:0] rega, regb, regout;

always @(posedge CLK) begin
  if(!RST_N) begin
    rega <= 0;
    regb <= 0;
    regout <= 0;
  end else begin
    rega <= DINA;
    regb <= DINB;

    regout <= rega + regb;
  end
end

assign DOUT = regout;

endmodule

ごくごく単純な参照をしている。

この下位階層の参照ってインプリメンとできないもんだと思ってた。

勝手に決めつけてたんだな。

キラッとひらめいて、インプリメントできるだろ?って、やってみたら、インプリメンとできた。

こんな風に・・・

そんなの知ってるよ!って、人もいるだろうけど・・・

これができたら何がいいかって?

さらにキラッとひらめいて、SDSoCで実機シミュレーション環境が組めるよなぁ〜なんて・・・