このところ、大規模なコード変更中の、sfl2vlのデバグのため、昔の大き目のパッケージで動作確認中。
今日確認していた、PDP11互換CPUは、2002年にI氏作成のもの。数千行になる大規模パッケージで、過去との互換性チェックにちょうどよい。
といっても、さくっと試すと当然のようにハザードストップであった。
まずは、出力端子のデータ候補にハイインピーダンスがあることのチェックルーチンで、なぜか文字列検索が停止しない不具合。停止しなければ暴走尾するかというと、システム中のどこかにZの文字を見つけるとそこで停止するので、特定の場合にのみ出力端子を3ステート対応に変更してしまう。このコアは、while(*c) という典型的な文字列検索であり、普通に動きそうなのに、動かない理由は不明だが、文字列長は既知だし、急ぎの修正のため、for文に変更。
これを対策しても、まだどこかでハザードになる?
追いかけていくと、実は、PDP11互換CPUのシミュレーションパッケージは、Verilogとのつなぎのインスタンス生成に、名前なしの引数形式の端子接続をしていて、今回、端子順序を変更したことにより、接続が間違ってしまっていた。
これは、名前指定の接続にPDP11パッケージ側を修正。ついでに、ZIP形式のアーカアイブにした上で、IP ARCHからも配布することにした。(実行には、non-profitライセンスが必須)
まだシミュレーション実行中だが、とりあえず、UNIXを擬似ハードディスクからコールドブートして、
login:
のメッセージがでるところまで来たので、動作としては完璧だろう。
20090915版は、もう少し確認したら、正式リリース版にする予定。