2008/09/02(火)[ROBO][HDL] SH7144 I/F回路検証
Verilog検証, SH I/F部
XSTのシミュレーションで holdtime timing violationが出る
検証用Test moduleをつくり,シミュレーションエラー*1が出ていたので,実装ミスかなと思い,放置していました.
放置しっぱなしでほかのことに手を出していたので少し復帰.試行錯誤してみたり,よくよく問題の文を読むと,どうやらtest moduleからの信号を受けて,hold timeが足りないといっているようです.非同期回路なのだから,不定値が乗ってもおかしくないですね・・・.
ということで,外部入力を全てDFF2段で受けた信号を用いることにしました.なんかおきてから直そうと思っていたら早速あたっていたわけですね.
ところが,コレを修正しても変わらない.不定値が伝播してシミュレーション結果が悲惨なことになっています.
検索しても結構ハズレばかりで,XSTのマニュアル(xst.pdf)や制約ガイド(cgd.pdf)もあわせて探しました.これらのマニュアル,非常に有用です.最初から見ておかないと駄目ですね.ボリュームが多くて手を出す気がおきないのも事実ですが.
さておき,制約ガイドのほうに,以下の属性が記載されていました.
ASYNC_REG ASYNC_REG は、タイミング制約で、 シミュレーションで非同期クロックをソースとしたデータの ビヘイビアを向上します。特に、タイミング シミュレーション中に X が適用されないようにします。 タイミング違反があった場合、不定値は出力されず、 それ以前の値が出力で保持されます。 使用例 ▼Verilog-2001の属性として記述 (* ASYNC_REG = "{TRUE|FALSE}" *) ; ▼Constraints Fileにて記述 INST instance_name ASYNC_REG = {TRUE|FALSE};
そのものずばり.該当する初段の DFF相当のreg宣言に対して属性をつけました.
(* ASYNC_REG = "TRUE" *) reg [15:0] ADR_D ;
Verilogの attribute宣言については,LRM 2.8のあたりを参照ください.
シミュレーションを実施したところ,不定値はなくなり,DFFがもう一段入ったような挙動になりました.1クロックだけ信号の変化が遅れるためです.実際の回路でも,前の値を保持する側に倒れた場合には,このような動作になるので,これでも動くような設計が必要となりますね...
制御信号全てdelay. WR strobe検出でさらに 1clock必要. → 信号類全てdelayさせて, 立ち上がり検出時にとりこむ.ホスト側が 立ち上がり~ほかの信号変化が1clock未満であることが条件.
IOBのDFFを使う
入力信号をそのまま記憶させれば,IOBのDFFを使うように合成されるようです.入力信号を組み合わせ回路に入れるような場合は,一度IOBから出てしまう模様.外部信号が同期を取って入ってくるようであれば,IOBで同タイミングで受けたほうが気持ちよいでしょう.
2段のDFFを通った後で加工しましょう.
2008/04/12(土)kuroboxのディスクアクセスを減らす
kuroboxのディスクアクセスを減らす
何もしていないつもりでもディスクアクセスしていることがあります。daemonが何かしているような気がしますね。アクセス頻度が低い&ほぼローカルバックアップ目的で使っているので、寝ている間はHDDにもお休みいただこうかと思うわけですよ。トラフィックが増えてくれば考え直しorメインサーバへ移動させることも考えたいと思うます。
趣味でいじくっているだけで、まじめに遊ぶならレンタルサーバ使うのが妥当な気はしますけれどね…。
参照
設定
syslogd の設定
/etc/init.d/sysklogd に以下の設定を追加する。
SYSLOGD="-m 0"
ただし、少し気になるところもあり、
start-stop-daemon --start --quiet --exec $binpath -- $SYSLOGD
こんな感じでもともと引数に使われている。モトの値が入っている場合、必要な引数まで消えていないかは心配ですね。とりあえず面倒だしこのまま適用(ぉ
cron
/etc/crontab の以下の行をコメントアウトする。ただし、/etc/cron.hourly/に何も入っていないこと。
17 * * * * root run-parts --report /etc/cron.hourly
syslogd.confの設定
そもそもログファイルに吐き出すかどうかをソフト的に指定できるのだから、それを利用すべきだろう。という考えで、/etc/syslogd.conf に一行追加. 設定があっているか、一晩様子を見て判断しよう。
あまりわからずにテキトウにしているのはよろしくないのですがネェ…。
ntpd.* /dev/null
→ダメだ、ログが残る。というか、時計狂いすぎだろ(汗;
HDDアクセスがないときは寝てもらう~断念
noflushd のパッケージをインストールします。
# aptitude install noflushd
・・・あれ?
Setting up noflushd (2.7.5-6) ... Stopping No Flush Daemon: noflushd. Starting No Flush Daemon: Error: Don't know how to spindown /dev/sda noflushd.
イマイチですね。hdparmでHDDを止める(うるめねっと技研 - Linux派 -)を見つけて、hdparmに変更することにしました。
>aptitude install hdparm Reading package lists... Done Building dependency tree... Done Reading extended state information Initializing package states... Done Writing extended state information... Done Reading task descriptions... Done Building tag database... Done The following NEW packages will be installed: hdparm 0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 63.4kB of archives. After unpacking 137kB will be used. Writing extended state information... Done Get:1 http://ftp.jp.debian.org etch/main hdparm 6.9-2 [63.4kB] Fetched 63.4kB in 0s (118kB/s) Selecting previously deselected package hdparm. (Reading database ... 32034 files and directories currently installed.) Unpacking hdparm (from .../archives/hdparm_6.9-2_arm.deb) ... Setting up hdparm (6.9-2) ...
hdparmのマニュアル(JM)を参照して...
> hdparm -S 240 /dev/sda /dev/sda: setting standby to 240 (20 minutes) HDIO_DRIVE_CMD(setidle1) failed: Invalid argument
ガーン。もしかしてIDEしか使えないのか?SATAになって、sdaとしか見えないから無理??同じことになっている先人がいる。解決策がなさげ?なので、とりあえずあきらめてみるか。。
時計のズレをマシにする~これも断念w~
どうも、32.768kHzの水晶を使っていないようなことが書かれている。そりゃ無理な話だろうなぁ。ということで、このスレを参考にadjtimex をinstall。
>aptitude install adjtimex Reading package lists... Done Building dependency tree... Done Reading extended state information Initializing package states... Done Writing extended state information... Done Reading task descriptions... Done Building tag database... Done The following NEW packages will be installed: adjtimex 0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 51.5kB of archives. After unpacking 172kB will be used. Writing extended state information... Done Get:1 http://ftp.jp.debian.org etch/main adjtimex 1.21.1-1 [51.5kB] Fetched 51.5kB in 0s (73.3kB/s) Preconfiguring packages ... Selecting previously deselected package adjtimex. (Reading database ... 32057 files and directories currently installed.) Unpacking adjtimex (from .../adjtimex_1.21.1-1_arm.deb) ... Setting up adjtimex (1.21.1-1) ... Regulating system clock...done. Comparing clocks (this will take 70 sec)... ^C dpkg: error processing adjtimex (--configure): subprocess post-installation script killed by signal (Interrupt) Errors were encountered while processing: adjtimex E: Sub-process /usr/bin/dpkg returned an error code (1) A package failed to install. Trying to recover: Setting up adjtimex (1.21.1-1) ... Regulating system clock...done. Comparing clocks (this will take 70 sec)... |< [bf:Comparing clocks (this will take 70 sec)...] で固まる('A`<br> dmesgに "decrementer frequency"がない... kernelのせいか? とりあえず再起動してみよう... コレ消えるとなけるので保存してから.. *その他 **時計水晶更新とか電源増強とか テキトウにあさっていたら、おもしろいところがあったので、メモ。ハードハックといえばいいのかしら??<br> 玄箱の32k源信交換とか。時計が狂いやすいのはモトがわるそうですね。 [http://www.finetune.jp/~lyuka/interests/pc/kurobox.html] **Music Server化 CQのエレキジャック WebPageでもなんかやってますね。これはいいかも?<br> [http://www.eleki-jack.com/Kurobox-pro2/2008/01/post-7.html]<br> 液晶に漢字がでているけれど、ドットマトリクス液晶ですかね。ドライバも書かれているのかー。 reproductionしておくのが良いかも知れませんなぁ。