とりとめのないことを書いております。
by tempurature
カテゴリ
全体
プログラミング
scheme
verilog
未分類
以前の記事
2016年 04月
2016年 03月
2016年 02月
2016年 01月
2015年 12月
2015年 11月
2015年 10月
2015年 09月
2015年 08月
2015年 07月
2015年 06月
2015年 03月
お気に入りブログ
PHPで競技プログラミング
メモ帳
最新のトラックバック
ライフログ
検索
タグ
その他のジャンル
ブログパーツ
最新の記事
情報処理技術者試験 お疲れ様..
at 2016-04-17 18:55
基本情報技術者試験 平成27..
at 2016-04-14 04:48
基本情報技術者試験 平成27..
at 2016-04-13 23:03
苦い薬(ハーブ、サプリメント..
at 2016-04-09 14:03
「おバカ度チェックリスト」を..
at 2016-03-24 09:54
外部リンク
ファン
記事ランキング
ブログジャンル
画像一覧
【verilog】ポートリスト間の食い違いを素早く見つける方法
verilogでは、ポート数が多いモジュールを作成して、インスタンス化するようなことが多々あるかと思います。

/* chaplin.v */
module chaplin ( you_ll, never, find, a, rainbow, if_, you_re, looking, down );

input you_ll, never, find, a, rainbow;
output if_, you_re, looking, down;

endmodule

/* united_artists.v */
module united_artists;

chaplin actor ( you1, will, never, find, a, rainbow, if_, you2, are, looking, down );

endmodule

そのとき、モジュールのポート数が食い違ってシミュレータのコンパイルが通らないことがあります。しかし、シミュレータのエラーメッセージには「どのポートが」食い違っているかまでは教えてくれないことがあります。そのような場合に、私がやっているテクニックをまとめます(UNIX系OSの場合)。

1. 2つのverilogファイルをコピーして、テキストエディタでそれぞれのポートリストを
切り出す。

/* tmp1 */
you_ll, never, find, a, rainbow, if_, you_re, looking, down
/* tmp2 */
you1, will, never, find, a, rainbow, if_, you2, are, looking, down

2. テキストエディタ上で、スペースを空文字列に置換する。
(viでは、:%s/ //g)

3. コンマを改行文字に置換する。
(viでは、:%s/,/^M/g ただし^MはCtrl+V, Ctrl+Mと入力してください)

4. tmp1, tmp2に空白行がある場合は削除します

5. ソートします
sort tmp1 > tmp3
sort tmp2 > tmp4

6. テキストファイルを比較します
$ diff tmp3 tmp4
1a2
> are
8,9c9,11
< you_ll
< you_re
---
> will
> you1
> you2

この比較によって、chaplin.vには、are, will, you1, you2ポートが不足していて、
united_artists.vにはyou_ll, you_reポートが不足していることがわかります。



[PR]
by tempurature | 2015-06-21 17:16 | verilog
<< 【verilog】スクリプトの... 【verilog】定数記述の問題点 >>