おっさんVerilog
なんとなく、個人でFPGAやっている人のVerilogに共通点があるのでまとめてみた。
見よう見まねでHDLを始め、お客の希望によってAltera or Xilinx、Verilog or VHDLをいったり来たりしている人。30代~50代くらいまでを想定している。「Verilog2001なにそれ、おいしいの?」な人達。ジョークなので、マジレス不要、追加のネタ歓迎。
・ポート/変数名が全部大文字:VHDLから入った人は多い。RESET_XとかCLOCKとか。
・出力信号はいったんwireで受けて、portにassignする。:こうしておくとVHDLとの往復が楽
・ステートを自力で割り当て:ワンホットかグレイカウンターが多い。昔の合成ツールは酷かったから。
・でかいalways文に全部の論理を詰め込む、もしくは各レジスタにalways文がある。:前者はCQのサンプル回路がこんなのが多かったから、後者は回路図をそのままHDLに落とすとそうなる。
・always文で組み合わせ回路を書かない:昔の合成ツールは(ry
・負論理へのこだわり:ioのイネーブルは負論理にするとちょっと早いとか。妙なこだわりがある。
・リセット回路のこだわり:リセットとプリセットを使い分けたり、意図的にリセットを入れない回路を書く。FPGAのリソースが少なく、合成ツールがpoorだったころのノウハウ
・reg [7:0] mem [7:0]; と書かず、reg [7:0] mem_a, mem_b, mem_c, ・・・と書く:VHDLとの往復が楽。合成後にノードを追いやすい
・ノーコメント/ノーバージョン管理:動いて納品するまでが保守
Xilinxを使ってきた人に多い傾向
・defparamのようにRTL上に制約を書くのを避け全てucfに書く。もしくは、defparamを使いつつもucfで制約をかける:ISEのバグに悩まされたから。
・制約が入っているかをFPGAエディタで確認する:上に同じ
・IBUFGを手で入れる:昔は必要だった。
Alteraを使ってきた人に多い傾向
・IO専用FFを使わない:そもそも無かった。タイミング制約をしっかり書いて対応する人が多い。この信号は入力専用ピンに入れてくれ、とピン割り当てに注文が多い。
・ロウとかコラムとか気にする:ピンの位置で回路のパフォーマンスが大幅に違った頃の名残。縦に入れて横に出せ!
ちなみに僕は半分近く当てはまるのでおっさんVerilog使い。
« CとC++の本 | Main | 卒業式のノリで納品 »
The comments to this entry are closed.
Comments
むむむ。診断してみるか。。。
> ・ポート/変数名が全部大文字
ASIC だと最上位階層では、結局やる羽目になります。
今は亡き ? VSIA 標準とかだと、必ず大文字にするように
なっていたはず。文字数も制限あったなあ。。。
うわ、いっぱい文書増えてる。。。
http://www.vsi.org/documents/index.htm
> ・出力信号はいったんwireで受けて、portにassign
さすがにこれはあんまりやんない。
でも、SystemC では、やる羽目になるのよねえ。。。
> ・ステートを自力で割り当て
ビンゴ。
状態に割り付けちまうのが、体に染み付いてます。
タイムチャートがあったら寝ながらでも書けるかも ?
> ・でかいalways文に全部の論理を詰め込む、
> もしくは各レジスタにalways文がある。
どっちもやらない。
仕様上、生成論理が同じとかなら 1 つに纏める。
> ・always文で組み合わせ回路を書かない
verilog hdl の function は、滅多に使ったことが無い...
> ・負論理へのこだわり
全然無い。
> ・リセット回路のこだわり
ほとんどない。
> ・reg [7:0] mem [7:0]; と書かず、reg [7:0] mem_a,
やりそうだけど、やった覚えが無い。
> ・ノーコメント/ノーバージョン管理
コメントより仕様書。重要なコメントを最小限に。
バージョン管理は、まあやるけど、大抵は事実上納品時から発生。
だって納品まで、仕様自体がふらふらするんだもん。。。
以下省略。かなり若いかも。。。
Posted by: noboshemon | 2008.03.07 08:30 PM
noboshemon さん
>> ・ポート/変数名が全部大文字
>ASIC だと最上位階層では、結局やる羽目になります。
>今は亡き ? VSIA 標準とかだと、必ず大文字にするように
>なっていたはず。文字数も制限あったなあ。。
こういう事を気にする人はおっさんVerilogにはならないです。
大企業のRTLに接する機会が多いと、しっかりしたRTLになる気が
しますね。
ベテランの人は、論理合成ツールに対する不信感が常に
ありますよね。(^^;
Posted by: なつたん | 2008.03.08 02:42 AM
> 大企業のRTLに接する機会が多いと、
> しっかりしたRTLになる気がしますね。
あちきが設計を請け負っていた頃の大企業は。。。
もう最悪の時期で。。。ああああああ !
そういう意味で、外注がしっかりすると。。。
> ベテランの人は、論理合成ツールに対する
> 不信感が常にありますよね。(^^;
そんな達人ではないです ^_^;
でも、論理合成ツールだって、
設計者が、意図する制約を記述してこそ意味があるので、
そういう意味で、単なる絵筆の類です。
最近はものぐさなので、制約が最小限で済むような、
ツールにも理解できる簡単な RTL にしちまいます。
そうすれば STA も楽で間違いがないので。。。
そうも行かない仕事もありますが。。。
Posted by: noboshemon | 2008.03.08 07:21 AM
Xilinxを使ってきた人に多い傾向の項を見て笑っちゃいました。
”制約が入っているかをFPGAエディタで確認する”これはマジにやっています。
他は、あまりやってない方が多いかな? もしかすると年の割りに若いのかも???
Posted by: marsee | 2008.03.08 12:56 PM
>noboshemon さん
設計をしている企業名よりは実際に書いているところの方が重要ですね。
いろんな意味で。
>marsee さん
最近は制約がかからなくて悩むことは無いのですが、古くからXilinx
デバイスを使っている人はFPGA Editor無しは考えられないようです。
古いFPGAのプロジェクトを見て、FPGA Editorのログがあるとやばいと
いう経験則もあります。見るだけならまだしも、FPGA Editorで変更
を入るシチュエーションはほとんど無いので。
Posted by: なつたん | 2008.03.10 04:16 AM