<< 2026年01月
新着記事
最近のコメント
月別
カテゴリ
2025.09.20 22:29

SystemVerilogのinteraceもうちょい


・そんなところで、SystemVerilogで書き直したLED点滅を書き込んで動作確認したり、LogicTapで内部波形を観測というところまでうまくいった。
・SystemVerilogのinterfaceの中にもalways_ff()などを使ってロジックを書くことはできるということを知る。しかし、これも使いみちはというと限定的なのかな?という感じ。
・interfaceがお役立ちなのはモジュール間のインターフェース、簡単に言えば通信回線の定義で、interfaceで定義したものを使えば簡単に相互接続できる。
・送信側と受信側で信号の方向が違うのはinterface内でmodportを使ってそれぞれの信号の向きを変えたものを定義して
 .
って感じで、どれ(どっち)を使うのか決めれば良い。
・たとえば、バスクロックはマスタ側が出力、スレーブ側が入力なら、
 interface mybus;
logic bclk;
 ・・・・・
  modport master(output bclk, ・・・);
  modport slave(input bclk, ・・・);
endinterface
 なんて具合にして
 module blk0(mybus.master busout);
 ・・・・
endmodule

 module blk1(mybusss.slave busin);
 ・・・・
endmodule
まぁ、こんな感じにしておいて、後でこいつらのインスタンスをこしらえてやれば良い。
・でも、ここで、interfaceの中で
 always_ff @(posedge clk) begin
bclk <= =bclk;
end
(実際にはもっと分周するだろうけど)
 なんて具合にbclkを駆動してしまうと、slaveの方で入力としているのと辻褄が合わなくなる。
・ということで、こいつが使えるのはバスで結線する時に両方とも入力となる時なのかなぁとも思うけど、それで何らかの処理をした信号を出力しようとすると、結線したときに衝突してしまうわけだし。まぁ、そのうち使いみちも見つかるかな。