« アルゴリズムの名前 | Main | あーきてくちゃ »

2008.09.10

Verilog のポート宣言にパラメータを使う

俺メモ

module add_4
  (
   input clk,
   input [3:0] a,
   input [3:0] b,
   output [4:0] c
   );
  add #(.width(4) ) add_u(.clk(clk), .a(a), .b(b), .c(c));
endmodule // add_4

module add   #(parameter width = 8)
  (
   input clk,
   input [width-1:0] a,
   input [width-1:0] b,
   output reg [width:0] c
   );
  always @ (posedge clk)begin
    c <= a + b;
  end
endmodule // add

|

« アルゴリズムの名前 | Main | あーきてくちゃ »

Comments

この書式で、どうやって parameter を
include で共有できるんだ ?
。。。と毎度思ってますが、

> module hoge
> `include "hoge.prm"
> (

。。。と無理やりやってたら、
とうとう最近某プロジェクトで禁止されちまいました。

Posted by: noboshemon | 2008.09.11 09:29 AM

これでVerilogでもVHDLのgeneric文のように使えるんですね。
これは知らなかった。今まで、parameterをincludeしていました。

Posted by: marsee | 2008.09.12 05:06 AM

> これでVerilogでもVHDLのgeneric文のように
2001 より前の構文でも、実体宣言時に
parameter をオーバーライドする仕組みはありました。
2001 から、明示的に parameter とデフォルト値で
宣言できるようになったのはええのですが、
これが c 流の port の宣言より先になければならないわけで、
ファイルで共有するのは、かえってつらくなりました。

Posted by: noboshemon | 2008.09.12 05:38 AM

>> noboshemonさん
> module hoge
> `include "hoge.prm"
> (
この発想は素晴らしい!
僕は古き良きdefparamが好きなんですが、コピペ間違い起こしますし、できるだけモダンな記述にしていきたいです。

>> marseeさん
他の言語を勉強する力を、ちょっとずつVerilogに振り分けるようにしてみました。
大手さんで設計やられている方は、いろんな表記に詳しいのでしょうが、個人で勉強していると
どうしてもこういう情報は共有が難しいですね。
ブログでの紹介ありがとうございました。

Posted by: なつたん | 2008.09.12 08:23 PM

> この発想は素晴らしい
うわっはっは。
他の誰にも受けません ^_^;
上位モジュールからオーバーライドするなんて
論理合成も複雑になるし、parameter の管理の
責任の所在が怪しくなるんで、
私は仕事では使いません。
若い頃は、いろいろやりましたけど。。。

Posted by: noboshemon | 2008.09.14 12:24 AM

なつたんさん、こんにちは。

私のブログで紹介させていただきました。
とても有用な情報だと思ったので、なつたんさんのブログの記事の一部を引用させていただきました。自分のブログに書いておいて検索できるようにしたいので、事後承諾ですみませんが、ご了承ください。

仕事ではVHDLのconstant値を変えることでパラメータが変更できるようにしています。generate文でインスタンスするモジュールの数をconstant値で変えて性能を変更できるようにしたり、過激なことをしています。お客様に納品するわけじゃないのでやりたい放題です。

Posted by: marsee | 2008.09.16 04:25 PM

> marsee さん

ここに書いてあることは、好きに使っていただいてかまわないですよ。
自分自身、ここに書くのが一番検索が楽だと思って書いているだけですので。

Posted by: なつたん | 2008.09.17 06:47 PM

The comments to this entry are closed.

TrackBack


Listed below are links to weblogs that reference Verilog のポート宣言にパラメータを使う:

« アルゴリズムの名前 | Main | あーきてくちゃ »