STARC RTL 設計スタイルガイド
STARCは、2016年解散した(株)半導体理工学研究センター(Semiconductor Technology Academic Research Center:STARC)。
http://www.starc.jp
STARC RTL設計スタイルガイドはSTARCが作成した。
RTLは、Registar Transfer Level(登録転送水準)という論理回路記述。
HDLは、金物記述言語(Hardware Description Language)。
IEEE/IEC 1364-2005がVerilog HDL.
IEEE/IEC 62530:2011 SystemVerilog - Unified Hardware Design, Specification, and Verification Language
http://ieeexplore.ieee.org/document/6469140/
IEEE 1076-2008 VHDL Language Reference Manual/IEC 61691-1-1:2011 Behavioural languages - Part 1-1: VHDL Language Reference Manual
http://ieeexplore.ieee.org/document/4772740/
VHDLは、VHSIC(very high speed integrated circuits) HDL
STARC RTL 設計スタイルガイドには、
Verilog HDL 編とVHDL編がある。
Verilog HDL編は初版、第二版、2011年版と改定があり、2011年版はSystem Verilogを包含している。
Verilog HDL版、VHDL版のどちらも電子書籍になっている。Verilog HDL版が3,758円 VHDL版が3218円購入できる。書籍の古本が絶版当時に高値がついたままになっていることがあるため注意が必要。
http://www.hdlab.co.jp/web/a050consulting/b030styleguide/
RTL設計スタイルガイド Verilog HDL編
https://qiita.com/kaizen_nagoya/items/c883b9aab40c53c1d259
規則分類
必須だから絶対守らなければならないということではない。必須でも特別な理由で守らない方が品質が高かったり、保守が容易だったり、可読性が高かったりすることがある。よいことがあれば、逸脱の手続きを取るとよい。
逸脱の手続きはMISRA Cを参考にするとよい。
MISRA C まとめ #include
https://qiita.com/kaizen_nagoya/items/f1a79a7cbd281607c7c9
豆知識
C言語におけるMISRA CとHDLにおけるスタイルガイドの違いは、時間を扱っているかどうかである。計算機システムにおいて、刻時図(timing chart)を描く必要性はスタイルガイドを理解しているとよく分かる。
Verilog HDL
Verilog HDLは、論理回路を設計する記述。
Verilog HDL 特徴1 begin end(like Pascal)
Pascalと同じようにbeginで始まりendで終わる塊(block)を構成できる。
wire [3:0] A,B,C,D;
wire [1:0] S;
wire [3:0] Y;
function [3:0] FUNC_MUX ;
input [3:0] A,B,C,D;
input [1:0] S;
begin
case (S)
2'h0 : FUNC_MUX = A;
2'h1 : FUNC_MUX = B;
2'h2 : FUNC_MUX = C;
2'h3 : FUNC_MUX = D;
default : FUNC_MUX = 4'bx;
endcase
end
endfunction
assign Y = FUNC_MUX(.B(B),.C(C),.D(D),.S(S),.A(A));
p.2-118
Verilog HDL 特徴2 Preprocessor (like C language)
C言語と同じようにプリプロセッサがあり、文字列の置き換えが可能である。
「3 章 RTL 設計手法
3.2. 機能ライブラリの使用
3.2.2. グローバル・パラメータは別ファイルに定義
3.2.2.5. テキスト・マクロの入れ子はさせない」p.3-13
`define KILO 1024
`define METER 1
`define KILOMETER 1000
Verilog HDL 特徴3 simulation direction
模擬試験(simulation)の指示を書くことができる。
遅延の評価、同時実行の可能性など、記述だけでは確かめるのが難しい問題を試験する。
「4 章 検証のテクニック
4.1. テストベンチ記述
4.1.3 入力信号のタイミングに注意
4.1.3.1 入力信号への代入のタイミングはクロックの立ち上がりエッジからずらす」
p4-5
SWESTでの取り組み
SWESTまとめ
https://qiita.com/kaizen_nagoya/items/62e56ae151554d6200c0
SWEST10
https://swest.toppers.jp/SWEST10/program.html
で、
「スタイルガイドを用いたVerilog教育の成果と課題」
「Verilogスタイルガイドこんなコードもコンパイルエラーにならない」
というポスタ展示と議論形式のセミナを開催した。
参加者の方にガイドで、大事なものから3つから10程度順番にあげてもらった。
集計して見ると、必須以外のもので大事なものがあることがわかった。
. STARC RTL設計スタイルガイド を「こう使おう」 Verilog-HDL版
https://www.slideshare.net/kaizenjapan/starc-verilog-hdl2013d-16795634
https://researchmap.jp/?action=cv_download_main&upload_id=14097
How to use STARC RTL Design Style Guide Verilog-HDL 2011 version
https://www.slideshare.net/kaizenjapan/how-to-use-starc-rtl-design-style-guide-veriloghdl-2011-version
結果を学会で発表し、2011年版の改訂に反映してもらえた。
Verilog HDL編第二版
1章 基本設計制約
1.4. クロック
1.4.3. ゲーティッドクロックの使用は注意
① 同一クロックライン上での反転、ゲーティッドクロックの使用、エッジの異なるFF の使用は避ける,推奨2
② FF の出力ピンを他のFF のクロックピンに入力しない,推奨1
③ ゲーティッドクロックは、消費電力を抑えるためにはよい方法,参考
④ クロック信号は、FF のクロック入力端子以外(D 入力等)には供給しない,推奨1
⑤ クロック信号は、ブラックボックスや双方向端子、リセットラインに接続しない,推奨3
⑥ 反転エッジのFF を使用しない,推奨1
Verilog HDL編 2011年版
1章 基本設計制約
1.4. クロック
1.4.3. ゲーティッドクロックと正しいクロックライン
① 同じクロックラインで正負両エッジクロックを使用しない,推奨2
② 反転エッジFF を使用しない,推奨1
③ FF の出力ピンを他のFF のクロックピンに入力しない,必須
④ ゲーティッドクロックはOR 型、AND 型以外は用いない,必須
⑤ クロックラインにNAND, NOR, XOR, XNOR, ラッチ, トライステートバッファは用いない,必須
⑥ クロックラインにグリッチを発生させない,推奨1
⑦ クロック選択信号を生成しているFF は、クロック選択後のクロックを入力しない,必須
⑧ ゲーティッドクロックを生成しているFFは、ゲーティッドされた後のクロックを入力しない,必須
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
https://www.slideshare.net/kaizenjapan/ss-17533146
Verilog HDLスタイルガイドの利用方法, Trials on training engineers for Verilog HDL using the HDL style guide, 長谷川誠,渡会勝彦,米永裕司,渡部 謹二,小川 清, 情報処理学会研究報告計算機アーキテクチャ(ARC) 2007(1(2008-ARC-176)), 7-10, 2008-01-15,一般社団法人情報処理学会
https://ci.nii.ac.jp/naid/110006625503
HDLコードの記述ルール・チェックを体験する
http://www.kumikomi.net/archives/2009/06/hdl.php?page=3
Starc RTL設計スタイルガイドの検査道具spyglassの使い方
https://www.slideshare.net/kaizenjapan/starc-rtlspyglass
System Verilog
2011年版からSystem Verilog対応になった。「2章RTL 記述テクニック」の追加項目を紹介。
(「4章検証のテクニック」にも追加項目あります。)
2.12. データタイプの拡張(SystemVerilog 編)
2.12.1. reg とwire をlogic におきかえる
① reg, wireの代わりにlogicを使用する、推奨2
② 複数のドライバをもつ信号は、wireで宣言する、必須
③ 2 値のデータイプ(bit, byte, shortint, int, longint)は使用しない、必須
2.12.2. パック型配列を活用する
① パック型配列は配列の全要素をベクタとして取り扱うことができる、参考
② 多次元配列の部分選択が可能である、参考
2.12.3. 構造体と共用体を活用する
① CPUからアクセス可能なレジスタは構造体と共用体で記述する、推奨2
② 回路記述ではパック型の構造体、共用体を使用する、必須
2.12.4. ステートマシンの記述に列挙型を使う
① 列挙型を使用した場合でも、組み合わせ回路ではすべての条件を記述する、必須
・if 文の場合は、else 項を記述する
・case 文の場合は、default 項を記述する
② 不定値を定義する際は、列挙名の最後に定義する、推奨1
③ ユーザ定義型を使用して、タイプ宣言と変数宣言を分ける、参考
2.13. 新しいalways 文(SystemVerilog 編)
2.13.1. always_comb による組み合わせ回路の記述
① 組み合わせ回路はalways_combで記述する、推奨1
2.13.2. always_ff による順序回路の記述
① 順序回路はalways_ffで記述する、推奨1
2.13.3. always_latch によるラッチ回路の記述
① ラッチ回路はalways_latchで記述する、推奨1
2.14. if 文とcase 文の拡張(SystemVerilog 編)
2.14.1. priority とunique の使用方法に注意する
① 優先順位のある組み合わせ回路は、priority ifで記述する、推奨2
② 並列処理可能な組み合わせ回路は、unique caseで記述する、推奨2
③ priority case、およびunique ifの記述は行なわない、必須
④ always_comb、又はalways_ffとセットで使用する、推奨2
2.15. モジュール、ファンクション宣言と接続(Verilog-2001, SystemVerilog編)
2.15.1. ANSI C スタイルのモジュール宣言を使用する
① ANSI Cスタイルのモジュール宣言を使用する、推奨2
② 方向とデータタイプを省略しない、必須
2.15.2. コンポーネント接続には、ポート名接続を使用する
① コンポーネント接続はポート順接続ではなく、ポート名接続を使用する、必須
② コンポーネントのポート幅と接続するネットのビット幅を合わせる、必須
③ ポート名とネット名が同一の場合は、.nameポート接続を使用する、推奨2
④ 回路記述に、.*ポート接続を使用しない、必須
2.16. インターフェース(SystemVerilog 編)
2.16.1. バスをインターフェースで記述する
① バスをインターフェースで記述する、推奨1
② 繰り返し使用するモジュール間の信号をインターフェースで記述する、推奨1
③ クロック、非同期リセットをバスインターフェースを介して接続する、推奨2
2.16.2. インターフェース内でmodport を定義する
① インターフェース内でmodportを定義する、必須
② 呼び出し側でmodportを指定する、必須
③ インターフェースで定義するポート名は短い名前を使用する、推奨2
1.7. FPGA
第二版
1.7.1. ASICとFPGAの両方を使用する場合の注意点
① 1 つのFPGA 内でゲーティッドクロックを使用しない, 推奨1
② FPGA とASIC で異なる部分はCORE の記述から除外する, 参考
③ FPGA, ASIC で異なる記述は`ifdef で切り替える, 参考
2011年版
1.7.1. ASIC とFPGA の両方を使用する場合の注意点
① FPGA 固有のクロックライン生成方法に従う、参考
② FPGA とASIC で異なる部分はCORE の記述から除外する、参考
③ FPGA, ASIC で異なる記述は`ifdef で切り替える、参考
FPGAでVerilog HDLの教育を始めた2006年頃、熊本大学の末吉敏則教授からSTARC RTL設計スタイルガイドを適用するよう助言されたのが取り組みの始まり。
中部FPGAカンファレンス2010
「STARC RTL設計スタイルガイドを「こう使おう」Verilog-HDL版」
名古屋市工業研究所 小川 清
http://www.fpga.or.jp/5city2010/ChubuSC2010.html
Verilog HDLスタイルガイドを利用したFPGAプログラミング研修, 服部智幸, 渡部謹二, 小川清 ,電気関係学会東海支部連合大会講演論文集(CD−ROM) 2008
HAZOPの併用
スタイルガイドには、英語版と日本語版がある。
日本人が書いているが、日本語版より英語版の方が分かりやすい。
下記の資料を見ると、英語版とHAZOPの相性が良いことが分かる。
2016年7月
MISRA-C++と CERT C++ による安全・安心システムへの貢献 -STARC RTL 設計スタイルガイドと HAZOP を使って, 小川清, 日本学術 会議安全工学シンポジウム
Misra cpp, cert cpp 2016 and RTL design style guide with HAZOP
https://www.slideshare.net/kaizenjapan/misra-cpp-cert-cpp-2016-with-rtl-design-style-guide
ちょけねこ たんじょうびのおくりもの
https://qiita.com/kaizen_nagoya/items/fc9675686c229f7a155e
効率的なHAZOPの進め方
https://qiita.com/kaizen_nagoya/items/2b8eae196945b7976446
参考文献(reference)
Verilog on Qiita
同期回路と設計上の注意点
https://qiita.com/junjihashimoto@github/items/7ca080592d745707cf2e
同期回路とVerilog
https://qiita.com/junjihashimoto@github/items/38acb9513e26f93e5179
同期回路とFPGA
https://qiita.com/junjihashimoto@github/items/3b6a3cf45c8099ae66cd
verilogでsigned演算するときに気をつけること
https://qiita.com/tasq0/items/18497956360820bcbbc5
Verilog入門
https://qiita.com/thtitech/items/8cc898dda7a10780f495
Verilogでプロセッサを作ろう
https://qiita.com/thtitech/items/78d6ac9ef48d242d873d
Verilogでシリアル通信入力
https://qiita.com/cyebu1103/items/b72eed2e0f50b843ae21
Verilogで外部テキストファイル読み込み
https://qiita.com/cyebu1103/items/b054cdcf9e014f332edd
FPGAでハードウェアアクセラレータを作る:②シグモイド関数
https://qiita.com/cyebu1103/items/bcd30683f9a9c7050701
Verilogでコード整形
https://qiita.com/kkumt93/items/70766645c07c298d19c3
OSXでのVerilogHDL環境構築&4bitカウンターを作って波形を見る
https://qiita.com/Hiroki11x/items/ec8ce716d3117360313f
【Mac】macでVerilogHDLを動かす
https://qiita.com/nomunomu/items/7bd151cbb9cce3fbd219
$ brew install icarus-verilog
iverilog と verilisp を使う
https://qiita.com/ryos36/items/95c049d96575f5e8aa6d
ニューラルネットワークをFPGA実機で動かした
https://qiita.com/kotauchisunsun/items/ab1804aeab7d9d222c72
FPGA上で動くニューラルネットワーク・ジェネレータを作った
https://qiita.com/kotauchisunsun/items/f19e400f47bd06445361
FPGAで競技プログラミングの問題を解く
https://qiita.com/kusano_k/items/29b1cc40ff55c7760afb
[Verilog超絶初心者]$monitorの罠
https://qiita.com/zan/items/b8fdf9532a4790a8d170
FPGAで動作するBrainf**k CPUの詳細
https://qiita.com/moizumi99/items/4f22df393112577cbdaa
素人が作る超基本CPU@Verilog w/Vivado
https://qiita.com/arutema47/items/40dc748e349c30d7194a
ズンドコVerilog
https://qiita.com/ozwk/items/42486e02caf4ac720d7e
15年ぶりの Verilog
https://qiita.com/minosys/items/7d9fcc4f31eafacec825
VerilogのテストベンチをRubyで書けるようにした(Verilator + SWIG風味)
https://qiita.com/sin00b/items/551dc0436676ee8eacdf
Verilog HDLでのノンブロッキング代入とブロッキング代入の動作の違い (授業用)
https://qiita.com/rikitoro@github/items/7a2ee703182c3abd9f83
Verilog HDLによる順序回路の設計(授業用)
https://qiita.com/rikitoro@github/items/b518a1cce062419506a6
Verilog HDLによる組合せ論理回路の設計(授業用)
https://qiita.com/rikitoro@github/items/ab3a734b4e19df0ad19f
Verilog HDLによる論理回路のモジュール設計(授業用)
https://qiita.com/rikitoro@github/items/a2a9c9eadfda878cce69
Verilog HDLでの回路記述で用いる数値表現と演算子 (授業用)
https://qiita.com/rikitoro@github/items/9e93b3b9d9c7dd2bd156
ソフトウェアの人がVerilogでジュリア集合を表示するまでに難儀したこと
https://qiita.com/k-daigo@github/items/6f2f92b245bb365d6c61
VerilogのテストにPython製フレームワーク「cocotb」を使う。
https://qiita.com/tethys_seesaa/items/99504dede7657f1619ce
OSSになったVerilogシミュレーター「CVC」
https://qiita.com/tethys_seesaa/items/e520a144243fae8d5b19
venv をつかって Polyphony を複数バージョンインストールする
https://qiita.com/ryos36/items/7e7fce9078a79f782380
System Verilog on Qiita
えっ? SystemVerilog って、新しくなったんです?
https://qiita.com/zukazou/items/cd41ada044e5e5ad3193
Verilogシミュレーター「OSS CVC」のDPI機能を試す。
https://qiita.com/tethys_seesaa/items/5745acad451ef53dbac9
[SystemVerilog]動的二次元配列の初期化とかparameterとか。
https://qiita.com/tethys_seesaa/items/f4486490bce69e04f96e
DDR3 SDRAMモデルをつないでみる。
https://qiita.com/tethys_seesaa/items/9e7ec116e46ad3676c8c
[SystemVerilog]Sublime Textでパースする。
https://qiita.com/tethys_seesaa/items/1c397b878c8377718d80
[SystemVerilog]Sublime Text用のUVMスニペットを書いてみた。
https://qiita.com/tethys_seesaa/items/2cfd1e70190bfd1c482d
[SystemVerilog]svlibでCPUオペコードっぽいものを定義しようと試みた。
https://qiita.com/tethys_seesaa/items/21bd8825e0ce158b67af
[SystemVerilog]svlibがバージョンアップしてた。
https://qiita.com/tethys_seesaa/items/c0ebee313e61aed17a3f
[Systemverilog]foreverなタスクをkillして殺す。
https://qiita.com/tethys_seesaa/items/1c69b62bf5d534315f90
[SystemVerilog]UVMことはじめ
https://qiita.com/tethys_seesaa/items/67438fa56501c42169c2
[SystemVerilog]packageを作る。
https://qiita.com/tethys_seesaa/items/51c7a1b9739cbed485fc
[SystemVerilog]uvm_driverを作成する。
https://qiita.com/tethys_seesaa/items/2620f8b635bc351f6fbb
[SystemVerilog]interfaceを入れてuvm_driverに似た何かを作る。
https://qiita.com/tethys_seesaa/items/3f41d4780bdbf4a6f6b3
[SystemVerilog]既存のモジュールを無理矢理UVMのフローに載せてみる。
https://qiita.com/tethys_seesaa/items/8bc05346a2d487895834
[SystemVerilog]UVMことはじめ
https://qiita.com/tethys_seesaa/items/67438fa56501c42169c2
[SystemVerilog]Sublime Text 3で簡単なSyntaxチェック
https://qiita.com/tethys_seesaa/items/1676b19e7f276e94f826
[SystemVerilog]svlibの紹介
https://qiita.com/tethys_seesaa/items/f4d10976677cdc8a63c0
SystemVerilog による論理回路設計(授業用) - 1章 実習ボード、開発ツールの使い方
https://qiita.com/rikitoro@github/items/a1b97f7aef42abed0954
SystemVerilog による論理回路設計(授業用) - 2章 SystemVerilog 101
https://qiita.com/rikitoro@github/items/53bdc8c9263b1b2e2ce4
SystemVerilog による論理回路設計(授業用) - 3章 レジスタの設計
https://qiita.com/rikitoro@github/items/426186a06242b24e0df2
SystemVerilog による論理回路設計(授業用) - 4章 組み合わせ論理回路の設計
https://qiita.com/rikitoro@github/items/6a750afda893aa8bb758
SystemVerilog による論理回路設計(授業用) - 5章 モジュールを組み合わせた回路設計
https://qiita.com/rikitoro@github/items/42653d50b30096da3038
SystemVerilog による論理回路設計(授業用) - 6章 状態機械の設計
https://qiita.com/rikitoro@github/items/eeccf22ae5d676ace77f
SystemVerilog による論理回路設計(授業用) - 7章 その他
https://qiita.com/rikitoro@github/items/4da63c2774054b3dd77c
書籍・電子書籍(book or ebook)
STARC RTL設計スタイルガイド verilog HDL編 2011年版(System Verilog含む)
http://www.hdlab.co.jp/web/a050consulting/b030styleguide/
Verilog HDL デザイン・テンプレート, 植木うてな
http://p.booklog.jp/book/20242
self reference on Qiita
人生で影響を受けた本100冊
https://qiita.com/kaizen_nagoya/items/16af53acbb147a94172e
slideshare top 10
https://qiita.com/kaizen_nagoya/items/2035b961adad19b74c17
物理記事 上位100
https://qiita.com/kaizen_nagoya/items/66e90fe31fbe3facc6ff
数学関連記事100
https://qiita.com/kaizen_nagoya/items/d8dadb49a6397e854c6d
言語・文学記事 100
https://qiita.com/kaizen_nagoya/items/42d58d5ef7fb53c407d6
医工連携関連記事一覧
https://qiita.com/kaizen_nagoya/items/6ab51c12ba51bc260a82
自動車 記事 100
https://qiita.com/kaizen_nagoya/items/f7f0b9ab36569ad409c5
通信記事100
https://qiita.com/kaizen_nagoya/items/1d67de5e1cd207b05ef7
日本語(0)一欄
https://qiita.com/kaizen_nagoya/items/7498dcfa3a9ba7fd1e68
英語(0) 一覧
https://qiita.com/kaizen_nagoya/items/680e3f5cbf9430486c7d
転職(0)一覧
https://qiita.com/kaizen_nagoya/items/f77520d378d33451d6fe
仮説(0)一覧(目標100現在40)
https://qiita.com/kaizen_nagoya/items/f000506fe1837b3590df
Qiita(0)Qiita関連記事一覧(自分)
https://qiita.com/kaizen_nagoya/items/58db5fbf036b28e9dfa6
鉄道(0)鉄道のシステム考察はてっちゃんがてつだってくれる
https://qiita.com/kaizen_nagoya/items/26bda595f341a27901a0
安全(0)安全工学シンポジウムに向けて: 21
https://qiita.com/kaizen_nagoya/items/c5d78f3def8195cb2409
一覧の一覧( The directory of directories of mine.) Qiita(100)
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39
Ethernet 記事一覧 Ethernet(0)
https://qiita.com/kaizen_nagoya/items/88d35e99f74aefc98794
Wireshark 一覧 wireshark(0)、Ethernet(48)
https://qiita.com/kaizen_nagoya/items/fbed841f61875c4731d0
線網(Wi-Fi)空中線(antenna)(0) 記事一覧(118/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001
OSEK OS設計の基礎 OSEK(100)
https://qiita.com/kaizen_nagoya/items/7528a22a14242d2d58a3
Error一覧 error(0)
https://qiita.com/kaizen_nagoya/items/48b6cbc8d68eae2c42b8
官公庁・学校・公的団体(NPOを含む)システムの課題、官(0)
https://qiita.com/kaizen_nagoya/items/04ee6eaf7ec13d3af4c3
「はじめての」シリーズ ベクタージャパン
https://qiita.com/kaizen_nagoya/items/2e41634f6e21a3cf74eb
AUTOSAR(0)Qiita記事一覧, OSEK(75)
https://qiita.com/kaizen_nagoya/items/89c07961b59a8754c869
プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945
LaTeX(0) 一覧
https://qiita.com/kaizen_nagoya/items/e3f7dafacab58c499792
自動制御、制御工学一覧(0)
https://qiita.com/kaizen_nagoya/items/7767a4e19a6ae1479e6b
Rust(0) 一覧
https://qiita.com/kaizen_nagoya/items/5e8bb080ba6ca0281927
小川清最終講義、最終講義(再)計画, Ethernet(100) 英語(100) 安全(100)
https://qiita.com/kaizen_nagoya/items/e2df642e3951e35e6a53
文書履歴(document history)
ver. 1.00 初稿 20180320
ver. 1.01 英語版の方が日本語版よりわかりやすく、HAZOPと相性が良いことを追記 20180323
ver. 1.02 タグに「HDL」追記。slideshareのHAZOPスライド1枚追加。20180323
ver. 1.03 FPGAの項目を追記。20180324
ver. 1.04 Verilog HDL参考文献追記 20180324
ver. 1.05 System Verilog参考文献追記 20180324
ver. 1.06 System Verilog関連規則追記 20180324
ver. 1.07 SystemVerilogHDL参考資料、はてなブックマーク追加 20190120
ver. 1.08 参考資料追記 20200306
ver. 1.09 slideshare top 10 追記 20201226
ver. 1.102 ありがとう追記 20230513
最後までおよみいただきありがとうございました。
いいね 💚、フォローをお願いします。
Thank you very much for reading to the last sentence.
Please press the like icon 💚 and follow me for your happy life.