nao-milkの経験ブログ

25年間の半導体エンジニア経験で知り得た内容を記載したブログです。

テストベンチでの双方向端子処理

f:id:nao-milk:20210321013529p:plain

ターゲット回路に双方向端子があり、テストベンチ内で双方向端子処理する場合です。

 

例えば、

外部にマイコンがあり、データバスが双方向端子でリード/ライトを行うLSI製品になります。

 

構成例

どのようなテストベンチ構成になるか、以下に示します。

f:id:nao-milk:20210321011235p:plain

D[31:0]が双方向端子(Inout)になります。

この端子は、LSI TopでDE=1の時、DOを出力し、DE=0の時、Hi-Zになります。

 ( CS_N=0 且つ RD_N=0の時、DE=1になります。)

 

テストベンチ記述例

テストベンチの記述例を以下に示します。

 45~46行目はテストベンチでの双方向の記述となります。

 60行目からライトとリードタスクになります。

 

テストベンチでは、Logicのように双方向切替信号(DE)のようなものは必要ありません。

これは、DI[31:0]がreg宣言した信号のため、Hi-Zにしたい時には{32{1'bZ}}を代入すれば良いためです。

 

f:id:nao-milk:20210321011512p:plain

 

タイミング

テストベンチのタスクWrCPU(ライトタスク)とタスクRdCPU(リードタスク)を実行した時のタイミング図を示します。

f:id:nao-milk:20210321012356p:plain

 

最後に

製品になる場合は論理回路をイメージして記述する必要がありますが、テストベンチでは、reg宣言してしまえば好きな所で Hi-Zや不定値を代入できます。

それを利用してしまえば、双方向端子と繋がる信号だけwire宣言した信号と繋げれば良いだけです。