randomize()における制約のまとめページです。SystemVerilogにおける乱数生成関数を用いたテストベンチの記述、検証において乱数への制約を適切に加えることで効率的な検証を行うことを目指します。 目次randomize()制約:記述方法3選inside:出現値(範囲)指定制約dist:出 …
続きを読む
カテゴリ:Hardware > HDL/RTL
【SystemVerilog】foreachで配列に対しrandomize制約を付与
配列などの複数のデータに対してrandomizeにおける制約を適用する際、foreachを用いることで、一括で制約を加えることができます。 目次foreachによる制約実装randomize制約一覧 foreachによる制約実装ここでは、実装2行目で要素数4の配列を作成し、これらにrandomi …
続きを読む
【SystemVerilog】solve-boforeでrandomize()による乱数生成順序指定
randomizeにおける制約solve-beforeを使用することで、値の組み合わせの出現確率を調節することができます。これだけ読んでもよく意味が分からないと思うので、以下で詳細をまとめます。 目次solve-beforeを使用しない場合solve-beforeを使用した場合randomize()制約一覧 …
続きを読む
【SystemVerilog】if-elseでrandomize()制約の条件分岐による乱数調整
if-elseを用いることでrandomizeによる乱数生成において、条件分岐による制約(constraint)を記述することが出来ます。複数制約の重ね掛けも可能という点はimplication(->)を用いた制約と使い方が類似しているようにも思います。目次if-elseを用いた制約例randomize()制約一 …
続きを読む
【SystemVerilog】implication(->)でrandomize()の複数の制約を重ね掛け
randomize()の制約の一つ、implication(->)を使うことで、制約間の関係を指定することができます。implicationという名前ですが、コード記述内では「->」のような記述方法を使います。以下でこのimplicationの使用方法についてまとめます。 目次制約implicateの使用例1制 …
続きを読む
【SystemVerilog】uniqueでrandomize()による乱数関係を調整
乱数を生成するrandomize()の制約(constraint)の一つ、uniqueについて使用例をまとめます。乱数の制約uniqueは対応しているツールに制限が大きいような気がしています。少なくとも無料で使うことのできるVivado(vsim)やiverilogなどで使用していた特定のバージョンで …
続きを読む
【SystemVerilog】distでrandomize()による乱数の出現確率の重みづけ
制約(constraint)の一つdistを用いて、randomize()による乱数生成における出現確率の重みづけを行います。ちなみに、distは配分(Distribution)の略のらしいです。 目次distにおける":/"と":="の違いは?dist":/"で出現確率を指定dist":="で出現確率を指定randomize()制 …
続きを読む
【SystemVerilog】insideでrandomize()乱数の範囲を制限
randomize()における制約(constraint)の一つ、insideによる制約の活用方法についてまとめます。SystemVerilogでinsideというメンバシップ演算子が追加されていますが、ここで取り上げているのは乱数における制約についてとなります。 目次乱数で出現する値を直接指定乱数の …
続きを読む
【Vivado】Verilog simulation(xsim)までコマンドで自動実行してFPGA実装する
企業や大学などにおいても基本無料でHDLをシミュレーションして回路を合成可能なAMD(Xilinx)のVivadoはよく使われていると思います。ですが、ただでさえソフトウェア開発に比べやることの多いRTLでの回路記述~実行までの手順中に、GUI環境の操作に慣れることに必死で肝心 …
続きを読む
【Verilog】Simulationが通ってもFPGAで動作しないRTL記述の例
HDL初心者ながらにVerilogで簡単な回路を記述して、FPGAに回路を合成したときにソフトウェアとの違いに悩まされた時のメモ症状としては、回路を記述した後に、波形シミュレーションを行い信号線の動きを丁寧に確かめたにも関わらず、実際に回路に実装してみると、まったく動 …
続きを読む