2017-02-04 2 views
1

私はYosysでモジュールを別々に合成する方法を理解できません。この単純な二モジュール例考えてみましょう:モジュールがBLIFである場合、どのようにしてYosysでマルチビットポートが動作するのですか?

bottom.v

module bottom(x, out); 
    input [0:7] x; 
    output [0:7] out; 
    assign out = x+1; 
endmodule 

top.v今

module top(x, out); 
    input [0:7] x; 
    output [0:7] out; 
    bottom b(.x(x), .out(out)); 
endmodule 

を、一緒にこれらを合成することは意図したとおりに動作します:

$ yosys -q -o top.blif -S top.v bottom.v 
$ 

B UT私が最初bottom.vから bottom.blif を合成する場合、私は何のポートがモジュールに外には存在しないというエラーメッセージが表示されます:

$ yosys -q -o bottom.blif -S bottom.v 
$ yosys -q -o top.blif -S top.v bottom.blif 
ERROR: Module `bottom' referenced in module `top' in cell `b' does not have a port named 'out'. 
$ 

これはなぜ起こるのでしょうか?問題を見つけて、の階層コマンドへの参照が完全に理解できない文脈で見つかった。私はシンセの前にそのコマンドを実行しようとしましたが、結果には影響しません。

答えて

1

BLIFファイル形式は、マルチビットポートをサポートしていません。これはYosysとは関係がありません。単にファイル形式の制限です。したがって、マルチビットポートを含むデザインをBLIFファイルに書き込む場合、すべてのポートが自動的にシングルビットポートに分割されます。だから、BLIFファイルに何の8ビット幅のポートoutがない、8つのビットポートout[7]out[6]out[5]out[4]out[3]out[2]out[1]、およびout[0]があります。

VerilogとBLIFファイルを記述したように混在させようとすると、bottomモジュールはtop.bセルのインターフェイスともう一致しません。


編集:私は今、7e0b776をコミットgitのでread_blif -wideportsを追加しました。これにより、BLIFファイルをYosysに読み込む際に、個々のシングルビットポートを再度マージすることができます。このようにして、マルチビットポートとのモジュールインターフェイスを破ることなく、YosysとABCの間の交換フォーマットとしてBLIFを使用することができます。

関連する問題