2025.09.16 10:19
SystemVerilogとstructとinterfaceと
・SystemVerilogになって構造体が使えるようになったという。
・それならたとえば、SPIバスのようなものを
typdef struct [
logic sck;
logic cs_n;
logic mosi;
logic miso;
} spi_bus;
のようにしてモジュールポートとして定義できれば美しい・・・と思った直後に入出力方向はどう決めれば良いのだ?ということになった。
・入出力はmoduleのポート宣言でしていするよりないわけで
module xxxx (
output spi_bus SPI_PORT
);
なんてことをすると、SPI_PORTは全部出力になってしまう。
inoutにするというのも美しくない。
System Verilogで構造体メンバに入出力属性をつけられないから仕方ないのか。
・ということで検索したらinterfaceがあるよということを知る。
interface spi_if (input logic clk);
logic sck;
logic cs_n;
logic mosi;
logic miso;
modport master (
output sck,
output cs_n,
output mosi,
input miso
);
endinterface
なんて調子でいけるらしい。