『不定』でシミュレーションできない?

●『不定』
不定』でシミュレーションで
シミュレーションできない?
LSIを
LSIを作る前に、ハードウェア記述
ハードウェア記述言語
記述言語などで
言語などで設計
などで設計した
設計した回路
した回路が
回路が、自分の
自分の意図したとおりに
意図したとおりに動作
したとおりに動作するかを
動作するかを
確認(
確認(シミュレーション)
シミュレーション)します。
します。
シミュレーションとはコンピュータに組
シミュレーションとはコンピュータに組み込まれた専用
まれた専用の
専用の"ソフトウェア"
ソフトウェア"により実行
により実行されます
実行されます。
されます。
実行中に
実行中に"信号値が
信号値が決まらない"(
まらない"(これを
"(これを『
これを『不定』
不定』と言います)
います)事態が
事態が発生すると
発生すると、
すると、もうそれ以上先
もうそれ以上先にシミュ
以上先にシミュ
レーションを進
レーションを進めることができなくなります。
めることができなくなります。
これを引
これを引き起こす原因
こす原因は
原因は、『フリップフロップやメモリ
『フリップフロップやメモリ等
フリップフロップやメモリ等の記憶素子の
記憶素子の初期値を
初期値を決めない設計
めない設計』
設計』にあります
。回路設計を
回路設計を"図"で描いていた時代
いていた時代には
時代には、
には、"リセット信号
リセット信号"
信号"の接続を
接続を最小限に
最小限に留めたりしていました。
めたりしていました。実際の
実際の
回路では
回路では、
では、リセット信号
リセット信号をつなげなくても
信号をつなげなくても、
をつなげなくても、しばらくすると自動
しばらくすると自動で
自動で決まるものでも、
まるものでも、シミュレーションでは
そうはいきません。
そうはいきません。『実際
『実際の
実際の回路では
回路では正
では正しく動
しく動くのに、
くのに、なぜシミュレーションでは不定
なぜシミュレーションでは不定が
不定が起きるの?』
きるの?』と
?』と疑問
を持つ人も多いのですが、
いのですが、ソフトウェアで順序立
ソフトウェアで順序立てて
順序立てて解析
てて解析して
解析して行
して行くシミュレーションでは『
くシミュレーションでは『不定』
不定』は難しい
問題なのです
問題なのです。
なのです。
"不定"
不定"を引き起こす代表
こす代表回路
代表回路に
回路に"フィードバック回路
フィードバック回路"
回路"があります
があります。
ります。フリップフロップ rQ の初期値が
初期値が"不定
(x)"
(x)"で、これが自分
これが自分の
自分の data 入力の
入力の生成条件に
生成条件に関わっている場合
わっている場合、
場合、シミュレーションでは data 入力が
入力が"不定
"となりシミュレーション
となりシミュレーション不能
りシミュレーション不能となることが
不能となることが、
となることが、原始(
原始(初期)
初期)のシミュレーションでは起
のシミュレーションでは起きていました。
きていました。
DATA
論理
'x'
data
rQ='x'
回路
"不定"
不定"を回避する
回避する方法
する方法は
方法は以下です
以下です。
です。
・全てのフリップフロップに"
てのフリップフロップに"リセット信号
リセット信号"
信号"で初期値を
初期値を与える。
・メモリは
メモリは、書き込んでから読
んでから読み出すようにシミュレーション
すようにシミュレーションすること
シミュレーションすること。
すること。外部から
外部から初期値
から初期値を
初期値を書き込みでき
るように回路設計
るように回路設計を
回路設計をしておくこと
しておくこと(
こと(さぼらないこと)
さぼらないこと)。
メモリへの
メモリへの書込
への書込み
書込み前に、読出し
読出し動作を
動作を行なう回路
なう回路が
回路が動き、困っている初歩的
っている初歩的なミスが
初歩的なミスが見
なミスが見られます
られます。
ます。
"不定"
不定"の発生は
発生は無駄なシミュレーション
無駄なシミュレーション時間
なシミュレーション時間を
時間を費やし、
やし、『やけにシミ
『やけにシミュレーションの
やけにシミュレーションの進
ュレーションの進み具合が
具合が悪いな』
いな』と
感じた時
じた時は、"不定"
不定"の発生を
発生を疑いましょう。
いましょう。とにかく、
とにかく、全記憶素子に
全記憶素子に初期値を
初期値を与えた後
えた後に、シミュレーショ
ンを行
ンを行うことがポイントです
うことがポイントです。
です。
- 1 -