29 |
BSVによるUARTの設計 (2) |
テストベンチ
前稿で設計したUARTをドライブするテストベンチを設計します。
ハンドシェイク信号がBSVにより自動的に生成されるため、タイミングを取ってデータをロードする必要はありません。データ待ちは自動的に行われます。このへんもBSVの素晴らしい点です。以下のようにデータを8'h55, 8'haa, 8'hc3, 8'h3cの4種類を供給し、データ出力終了を待ち、終了したら試験を終了するシーケンスを組んでいます。
Tb.bsv
import StmtFSM::*; import Uart::*; (* synthesize *) module mkTb(); Uart_ifc uart <- mkUart(); Stmt test = seq repeat(8) noAction; uart.load(8'h55); uart.load(8'haa); uart.load(8'hc3); uart.load(8'h3c); await (uart.done()); $finish; endseq; mkAutoFSM(test); endmodule