普段はけっして、こんな使い方はしないんだけど、テストベンチとかだったりするとモジュールの下位階層の信号を直接見たりするよね。
次の例ではsample_topモジュールからsample_subモジュールのregaとregbを参照している。
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
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で実機シミュレーション環境が組めるよなぁ〜なんて・・・
Tweet write: 2017/10/24/ 01:22:43