「動いているから大丈夫」と思っていませんか?RTLコード検証サービス 「RTL Valid™」
こんにちは、小野です。
今回はブログ作成の裏側も含めてお届けします!さらに、OKIアイディエスのサービスである、RTLコード検証サービス 「RTL Valid™」をご紹介します。
ある日のブログ原稿作成
~翌日~
小野くん原稿ありがとう。で、確認したんだけど、ここの表現は日本語としておかしいと思います。こっちの文章はどういう意味でしょうか?伝わりづらいので要修正です、あと色々な方が読むのでここももう少しわかりやすい表現にしないとダメっていつも言ってるじゃないですか。それと、誤字もあったので訂正お願いします。ここのボスのセリフですがもっとかっこいいセリフにしてください………………というわけで修正して再提出すること!
はぁ…、毎月書いてるブログ、今回も修正しなきゃいけないところがたくさんあるんですよ。参った参った…。
それはブログに限ったことではなくて、早い段階でしっかりチェックしておかないと、後で大変なことになるからね。OIDSが得意とするFPGA開発のRTLコード(回路の動作を記述する言語)も同じだよ。お客様への納品後に不具合が見つかったら、大問題だからね。
ブログ記事を修正したら、今度はAIで記事の校正を試してみたいと思います。便利ですよね。ところで、社内開発中のRTLコードも開発段階でチェックが入るんですか?
もちろん。間違っていることに気付かず、実機動作で不具合が発生すると、原因調査、修正が本当に大変なんだ。おまけに最近のFPGAやSoCデバイスは大規模化、高機能化しているから、コード量が多くなっており、設計も複雑になっているし。
他の会社でもFPGAのRTLコード検証に苦労していると聞きました。コード変更したり、再合成したら、これまで動作していた処理が動かなくなってしまった。運よく動いていただけということもあるそうです。
論理シミュレーション検証をして、「動いているから大丈夫」と思っていたものが、実機で動作検証していたら、不具合が出てしまったとなると、設計者は、きちんと設計できているのかとても不安だよね。他にも潜在バグがあるのではないかと。
そう!後になってから致命的な問題が発覚するし、大きな後戻りやスケジュールの遅れになることも……。そのリスクをいかにして低減するかが、プロジェクト成功の要!だからこそ我々OKIアイディエスはRTL検証サービス「RTL Valid™」を提供しています!今の時代に求められるFPGA検証サービスなのです!
うわ、びっくりしました。最初から会話を聞いてたんですか?
というわけで、そろそろこのくらいにして「RTL Valid」ってどんなサービスなんでしょうか、早く詳しく教えてください!
「RTL Valid」とは?
「RTL Valid」というサービスは、RTLコードの検証サービスです。長年FPGA開発に携わってきた当社の技術者が、お客様のRTLコードをお預かりして検証するものです。 Valid™」を提供しています!今の時代に求められるFPGA検証サービスなのです!
お客様のRTLコードの検証をして、設計品質を向上させる…ということですか?
その通り。そもそもRTLコードを検証するっていったいRTLコードの何を検証しているのか?わかった方は早押しでお答えください。
はい!コーディング規約(文法)の違反や構文エラー、クロックドメイン間の信号遷移や同期性を検証します。
ピンポーン。正解です。文法の違反や構文エラーなどを自動的に抽出し、指摘するツールやその仕組みを「LINT検証」と言います。では、文法や構文について定義しているルールとは?これも早押しです。
STARCルールですね。この会社ではそれに則って設計しているんだ。
ピンポーン。日本国内の半導体メーカー各社が協力して、設計品質・信頼性向上のために、文法や構文、信号ネーミング、クロック管理などいろんな観点から定めた業界標準の設計ルールなんです。
STARCルール…。私は初めて聞きました。もしかして、FPGA技術者は記述のルールを全部覚えていてコードを読んでこの部分は間違っているとかがわかるんですか?
RTLコードは膨大になるからOKIアイディエスではツールを使っているんだ。Aldec社が提供している「ALINT-PRO」というツールだよ。
VHDL、Verilogといったハードウェア言語で書かれたソースコードをALINTで文法チェックできるんですね。どんな感じでチェックしているんですか?
そう、そんなLINT検証をどういう風にやってるかというと…うーん、やっぱり実際に見てもらった方が早いね。そうだ、今回はALINTを触って、RTL Validというサービスがどんなものなのか体験してもらうのはどうでしょう?
グレイトアイディア!今日の解説役はお願いしますね。
私は会議があるので、ここで失礼するよ。ではまた後で。
はーい。
というわけでここからは二人で張り切っていきましょう!
ALINTを使ってみよう
ツールの準備ができました。LINT検証を早速始めたいところですが、今回はどのコードを検証しますか?
今用意したサンプルプロジェクトがあるから、これを使ってみよう。STARCルールに則って検証するための設定をしておくよ。
了解しました。「プロジェクト」というのは、RTLコードがまとまったものなんですね。
そう。複数のRTLコードファイルでプロジェクトはできている。こんな感じでね。真ん中に表示されているのが、そのうちのRTLコードの中身だよ。私たちは日々のFPGA開発で、こんな感じのコードを書いているのだよ。

これを早速試してみたいですね、実行してみてもいいですか?

Rule、Recommendation 1、Recommendation 2, Recommendation 3、Suggestionといろいろありますね。
ルールで指摘されている箇所はバイオレーション、つまりルール違反の箇所。リコメンデーションは修正した方が良い箇所で、「1」「2」「3」の順番で重要度が高い。サジェスチョンはさらに重要度は低いけど、修正を提案されている箇所になる。STARCルールに違反している点や、実装時にエラーの原因となりそうな箇所を、レベル別に検出してくれるんだ。文法エラーや潜在的なバグ、曖昧な構文の使用などをチェックしているよ。
たとえば、ルールの中から1つ検出されたものを見てみます。右側にバイオレーションの内容が表示されるんですね。今見ている「STARC_NETLIST.1.6.4.1」というのは、どんな指摘なんですか?
どれどれ。 “設定された基本ブロックよりも大きい上位レベルブロックと判断されており、その中で論理回路が記述されている”ようだね。これは修正が必要そうだ。

ん?今出てきたバイオレーションの数は1個ですが、ルール全体では90個もあるみたいです。それに、リコメンデーション 1や2、3、サジェスチョンまであわせると全体で6000か所近く修正が必要ってことですか? 多すぎませんか?
今表示されたバイオレーションについては確かに修正が必要だけど、リコメンデーションやサジェスチョンまですべてを直す必要があるわけではないよ。どこを、どう直すか――そこがプロであるOKIアイディエスのFPGA技術者の見せどころ。“RTL Valid”では、LINT検証の結果を整理して、レポートとしてお客様に提供するんだ。
リコメンデーションとかサジェスチョンってどういう観点で修正する、しないを見極めるんですか?
動作が不安定になるのかならないのかという観点で確認している。文法上はバイオレーションにならなくても、たとえば、変数とか信号の宣言、モジュールの割り当て方など、リコメンデーションやサジェスチョンの中でも「これはなおしたほうがいいな」って判断したところは、修正するようにしてるのさ。
動作に影響してしまう部分は徹底的に洗い出し、潰しこむことが品質向上につながるんですね。
LINT検証レポート
ということで、レポートにまとめます。バイオレーションがどのソースコードのどこ(何行目)にあるのか、どんな違反なのか、そのレベルまで全部まとめるんですね。

OKIアイディエスではバイオレーションやリコメンデーションの内容がよりわかりやすくなるよう、コメントでどんな内容なのかをひとつずつ説明しています。今度は違反しているSTARCルールごとにバイオレーションをまとめていきます。

バイオレーションが出ていて修正が必要な箇所は、どのように修正するのかも書くんですよね。たとえば、さっき見たSTARC NETLIST 1.6.4.1のバイオレーションはどのように直したらいいんでしょうか?
「モジュールの場合は基本ブロックの数を増やす。TOPの場合は論理回路を記述しない」というのがバイオレーションの対策だね。こんな感じで修正が必要なバイオレーションは、どのように違反しているのか、どのように対策すればいいのかをFPGA技術者が判断して記載するんだ。

1行目が違反しているSTARCルールで、2行目がどのように違反しているか。そして3行目がその対策ということですね。
特に「ルール」で指摘されたバイオレーションについては、OKIアイディエスでは全て修正をかけている。リコメンデーション1、2、3やサジェスチョンのバイオレーションもFPGA技術者が修正すべきか、どのように修正すべきか同じようにまとめるんだ。
こうやって、レポートが作られていくんですね。様々な観点でRTLコードをチェックするには、ツールやFPGA開発のノウハウがないと難しそうだな…。
だからこその「RTL Valid」なんだ。単にRTLコードを記述するだけでは、小さなエラーを見落としてしまいがちだ。再合成したら、動作していたものが動かなくなってしまったり、動作不安定になったり、実機検証の段階になって不具合を起こすと解決がとても厄介なんだよ。
エラーの早期発見、対策がとても大事ってことですね。お客様にとって、「複雑なRTLコードのチェックを第3者の目でチェックしてもらえる」というのは「RTL Valid」の大きなメリットではないでしょうか。
その通り!ツールの使い方やSTARCルールを一から勉強しなくても、OKIアイディエスの技術者が“どこを直すべきか、どう直すべきか”まで、わかりやすく整理したレポートを提供してくれる。開発期間の短縮や、設計ミスのリスク低減にも直結するよ。
自分たちだけでは難しかった高品質なコード設計や、納品後の不具合リスクの低減までがっちりサポートしてくれるんですね。お客様の開発担当者は新機能の開発や他の業務に専念できるし、これは社内リソースの最適化にもつながりそうです。
「設計品質を確実に上げたい」「トラブルの芽は出荷前に摘みたい」そんなお客様にとって、RTL Validはとても大きな武器になるサービスなんだ。
最後に
RTLコードの検証って、奥が深いですね。LINT検証だけでも、バイオレーションごとに見るべきポイントがたくさんあると知りませんでした。これを見逃して製品化されてしまえば、全然違う動きをしたり、不具合になったりするかも…そう思うと、ちょっと怖いですね。
そんな不具合を防止のためにも検証はとても大切なんだ。「RTL Valid」のメリットをおさらいすると、こういったメリットがあります。
- 自社で全バイオレーションを判定・改修方針決定する手間が不要
- 高度な業界標準(STARCルール)でのRTLコードの品質チェックを一括実施
- OKIアイディエスから検証レポートで適切な修正案を提示。ノウハウ共有で“属人化”を防止
- 後工程での不具合、トラブル予防とトラブル対応による納期遅延の防止
- 開発現場は本来業務(新機能実装や最適化)に集中可能
- RTLコードの設計品質の向上と検証レポートによる設計ナレッジの蓄積
でも、こうした検証で隠れたリスクをつぶしておけば、RTLコードの品質は格段に上がるよ。でも、“RTL Valid”の検証は、LINT検証だけじゃ終わらない…!
えっ、今回はこれで終わりかと思っていましたが、まだ続きがあるんですか?
甘ちゃんだなぁ。ここで満足してたら、本当に高品質なRTLコードとは言えない。LINT検証以外にも、Formal検証やCDC検証など、他にも大事な工程があるんだ。
甘ちゃんじゃないですよ、もったいぶらずにやってみましょうよ。
その前に…ボスから原稿の修正も頼まれてたでしょ?早く仕上げないと、ボスが戻ってきちゃうよ?
あっ、思い出しました!ということで、次回は小野がRTLコードのFormal検証やCDC検証にも挑戦します。お楽しみに!
RTL検証サービス「RTL Valid」 無償点検キャンペーン
今回小野くんがご紹介の「RTL Valid」、いかがでしたでしょうか。
「設計品質の底上げを求められている」「動いているから今は大丈夫だけど、後々不具合が起こらないか不安」「現場のリソースや知見のある技術者が不在」そんなお悩みを持つ方もいらっしゃるかもしれません。
「RTL Valid」による検証を実際に体験していただける「設計無償点検」実施中です!
初回限定で、お客様からRTL設計データをお預かりし、LINT/CDC検証・一次診断・簡易レポートを無償で提供します。現時点での設計の品質・リスクの棚卸ができます。長年FPGA開発に携わってきたOKIアイディエスの技術者の診断と対策の方向性をレポートにまとめてご提供いたしますよ。
でも、初回の無償点検後、お客様がレポート確認しても、お客様自身で修正するのが難しい場合はどうなるんですか?
「課題はわかったけど、具体的な対策を提案してほしい」「RTLコードの修正まで手が回らない」というお悩みもぜひご相談ください!お客様のご要望に応じて、お見積の上、有償にてご対応いたします。
最近、開発現場では納期を優先するあまり、まずは「動いているから」、と検証がつい後回しになり、後で不具合が発覚、納期に間に合わない!と焦っているケースも増えているみたいです。
しかし設計品質を後回しにすると、不具合やコスト増大など、将来の大きなリスクにつながります。
特に設計リーダー層や経営層は、今こそ設計品質の底上げを真剣に考え始めています。
そんな方々にこそ、この「RTL Valid」の無償点検キャンペーンを活用いただきたいと思っています!気になった方は、下記お問い合わせフォームからお問い合わせください。お待ちしております!
次回のブログ更新は11月を予定しています。
お楽しみに!
- ※記載されている会社名、製品名は、各社の商標または登録商標です。
- ※ここに記載されている仕様、デザインなどは予告なしに変更する場合があります。