2008/12/20(土)[QuartusII] TimeQuestのaltera_reserved_tckのremoval error

altera_reserved_tckのremoval error

Nios IIのCPUコアを使ったときの話.
いつものようにWarningが大量に出てきているので,自動生成ファイルを含めて中身を眺めていた.ふと,cpu.sdcを見るとこのようなコメントが見つかる.

#**************************************************************
# Timequest JTAG clock definition
#   Uncommenting the following lines will define the JTAG
#   clock in TimeQuest Timing Analyzer
#**************************************************************

確かに,clockが1つだけunconstraintになっていた.これのせいですな.
で,これをコメントインするとですね,表題の問題にぶちあたるわけです.

※画像は"新規ウィンドウで開く"を推奨

前提条件

折角会社で(ryServiveRquestで問い合わせて見ていますが,未解決.アドバイスをいただいたのもコミで,とりあえず下記の設定で試しています.

cpu.sdc

以下をコメントインする.

create_clock -period 10MHz {altera_reserved_tck}
set_clock_groups -asynchronous -group {altera_reserved_tck}

そして,以下の一行をgenerated clockも制約に追加(SRにより追記OK)

set_clock_groups -asynchronous -group {altera_internal_jtag|tckutap}
setting

Project右クリック→settingを開く.で,hold timingを保障するように頑張ってくれるらしい.

Q2_Set_FS_cfg.png

結果

Quartus II WEB editionを使うと,こうなった.家と会社の自前PCと師のPCでも同様.

Q2_TQ_removal_err.png

コレに対して,同じプロジェクトを送付してあるのだけれど,errorはでないというコメントであった.
とりあえず,サブスクリブ版でも試してみようかと思う.試してもらう,が正解か(縛

申し訳ないが,コレの確認ができるまではcloseできない...?


デフォルトでコメントアウトされていたので,無視していたのだけれど,特に問題なく動いてそうなんですよね.JTAG-UARTが入ってるとまずいかと思ってみたりもしたのだけれど,抜いても同じだった.
QuartusIIがFitting(配置配線)を諦めたと考えるべきなのだろうか.そのわりにはそんなWarningらしきものは出てないようだしなぁ.この手のTipsてどこかに落ちてないのだろうか...

Warningゼロは不可能に近いことは承知しているが,SOPC Builderだけでペタペタ作ってこれだけWarningが出てくるのも怖いわけですよ.HDL真面目に触りだして短いのもあるけれど,CでいうならばWarningの理由を全て把握した上でないと,安心して出荷できないじゃないですか.

PerlでHDL記述を自動生成したりしているようだけれど,Verilogのビット幅指定を端折っていたりする.これでもWarningは出てくるのだけれど,こういう感じで理解しているものは無視できる.しかし,Timing errorを無視するわけにはいかないだろう….

妄想~要因の追求

ちなみに.
今回の発生箇所周辺をTechnology Map Viewer(Post-Fitting)で覗いてみた.エラー発生箇所は,外部からのJTAG信号を,ALTERAが開示していないIP(TAP controllerかな?)を介した後の信号で発生しているように見える.

removal timing errorの絵も理解できないので,それも問題なわけだが.hold time相当という理解なのだけれど,図示させてみるとこんな感じ.

TQ_removal_err.png

launch edge/latch edgeともに,altera_reserved_tckなのだけれど,slack計算がわからん.
Data Arrival Pathが,非同期クリアに入っているので,Data Required Pathが入るときにhold timeが必要ということなのですよね.

tckのクロックは100nSec(10MHz)としているのだが,この8.808nSecというのは,非同期クリアのためのhold timeというわけか.
で,altera_internal_jtagの中身が全く見えないのが問題を切り分けられない要因.たしかにtckが入ってきているが,updateuser信号へも伝播しているのか.遅延時間が出ているからこのとおりか...だとすると,この部分の非同期リセットは保障されないということでF.A.?

では,何故Quartus IIは頑張ってFittingしようとしてくれないのか.つーか,制約満たせなくてもエラーで止まらないのか.

という感じで,ひきずりつつ今週終了\(^o^)/