ptetexからtexlive(2013/10/12)に移行したら,dvipdfmxでpdfを生成する時に
図がずれる様になった.xdviで見る限りdviは問題なさそうである.
原因はグラフィックのパッケージへのオプションが不適切で,
\usepackage{graphicx}
から
\usepackage[dvipdfmx]{graphicx}
に変えたら直った.
2013年10月13日日曜日
2013年9月16日月曜日
Windows8で休止状態を使うと音が鳴らなくなる
Windows8のWindows Media Centerで音を鳴らしながら休止状態に移行すると,休止状態から復帰しても音が鳴らなくなる.こうなるとWindows Media Centerでも他のプレイヤーでも音が鳴らなくなる.こうなると再起動するしかない.ボリュームを変えるとホワイトノイズは変わるし,視覚エフェクトも正常.原因がわからない.不便だ.
Windows 8の場合,コントロールパネルからのトラブルシューティングを立ち上げることができる.
[コントロール パネル]→[すべてのコントロール パネル項目]→[トラブルシューティング]
しかし「ボリュームを上げろ」と指示された以上の特に有用な情報を得ることはできなかった.
また,Windows Audioサービスを再起動しても結果は変わらなかった.
英語で検索したら,Microsoft Communityにすでにスレッドが立っていた(2012/11).
No audio after windows 8 wakup from sleep
サポートの人がまるで役に立っていない.「管理者として実行してみては?」というアドバイスもあったが効果はなかった.
Windows 8の場合,コントロールパネルからのトラブルシューティングを立ち上げることができる.
[コントロール パネル]→[すべてのコントロール パネル項目]→[トラブルシューティング]
しかし「ボリュームを上げろ」と指示された以上の特に有用な情報を得ることはできなかった.
また,Windows Audioサービスを再起動しても結果は変わらなかった.
英語で検索したら,Microsoft Communityにすでにスレッドが立っていた(2012/11).
No audio after windows 8 wakup from sleep
サポートの人がまるで役に立っていない.「管理者として実行してみては?」というアドバイスもあったが効果はなかった.
2013年8月12日月曜日
コピー機の最大投入金額(16120円)に関する考察
なぜFuji Xeroxのコピー機の最大投入金額が16120円と中途半端なのか推測してみる.
複写管理機器(というらしい)Coinkit 9のカタログ(pdf)を見ると,硬貨だけの場合最大投入金額は15120円で,オプションの1000円紙幣ユニットをつけることで16120円になるらしい.
カタログを見ると,どうも硬貨の種類によって最大投入可能数が異なる様だ.従ってWikipediaから硬貨の厚みに関する情報を引き出してみると以下のようになった.
- 10円:1.5mm x 90枚 = 135mm
- 50円:1.7mm x 78枚 = 132.6mm
- 100円:1.7mm x 77枚 = 130.9mm
従って,硬貨を受けつけるトレイの大きさが136mmでありそれに制約されている可能性がある.微妙にずれがあるのは,硬貨のそり等を考慮したマージンの分であったり,硬貨の正確な厚みが公表されていない分の誤差の蓄積だと思われる(造幣局のサイトでは見つけられなかった).
2013年8月6日火曜日
SPICEネットリストビューアー
以前SPICEのネットリストのビューアーで良いものがないか問い合わせを受けた.自分の知っているビューアーは以下の通りである.
フリーのネットリストビューアーである.使い勝手は不明だが,デモを見る限り素子がぐちゃぐちゃに配置され可読性が低そうである.
AnalogArtist
CIWから[File]→[Import]→[CDL…]でCDLとして読み込む.素子がぐちゃぐちゃに配置されるため,可読性が低い.
逆にComposer Schematicを使ってGUIでネットリストを作り,CDL outしてネットリストを生成することも可能(そこまでするならAnalog Design Environmentを使う方がよいかも).
逆にComposer Schematicを使ってGUIでネットリストを作り,CDL outしてネットリストを生成することも可能(そこまでするならAnalog Design Environmentを使う方がよいかも).
Concept Engineeringというドイツの会社が出している.未使用なので使い勝手はわからない.デモを見る限り素子がきれいに配置されている.購入する必要がある.
Spice Explorer/Custom Explorer
現在Synopsysが提供している波形ビューアーであるが,Spice形式のファイルを表示することも可能である.Spice Explorerの場合マクロブロックの入出力単位,Custom Explorerであればマクロ間の配線をGUIで表示可能だが,使い勝手はイマイチである.特に後者はVDECのライセンスでは動作しないようだ(波形の表示はできる).
Calibre RVE
個人的におすすめなのがRVEである.特に2010年版以降のGUIのネットリストビューアーのできがすばらしい.
% calibre -rve
で起動し,読み込むファイルとして[SPICE File]を選択しファイルをロードすればokである.信号のハイライト,回路ブロックの展開/収束も可能である.VDEC提供のライセンスで利用可能.ただしLVS用のネットリストビューアーなのでサブサーキットとして定義した回路ブロックしか見ることができないようだ.
IC Compilerで生成するVIAの種類を指定する(advanced via rule)
IC Compilerで利用する(Astroの)テクノロジファイルには一般に様々な種類のVIAマクロが定義されており,IC Compilerはそれらの中から状況に応じてVIAを使い分ける.IC Compilerが意図通りのVIAを生成しないときは,advanced via ruleを指定する事でユーザーの意図通りのVIAを選択させることができる.
例えば,電源ストラップ生成時のスタックドビアに利用するVIAを指定するには以下のように設定すればよい.
set_preroute_advanced_via_rule -contact_code TECH_VIA1 -size_by_array_dimensions [list 5 1] -move_via_to_center
その後いつものように電源ストラップを生成する.
create_power_straps -direction vertical -start_at 4.5 -num_placement_strap 2 -increment_x_or_y 20 -nets {VDD VSS} -layer M5 -width 1 -step 20 -pitch_within_group 1.75 -extend_low_ends force_to_boundary_and_generate_pins -extend_high_ends force_to_boundary_and_generate_pins -advanced_via_rules
-contact_codeでテクノロジファイル中のVIAを指定する事が可能である.-move_via_to_centerオプションをつけると,電源レールの真ん中にVIAを配置することが可能である(つけないとずれる).
例えば,電源ストラップ生成時のスタックドビアに利用するVIAを指定するには以下のように設定すればよい.
set_preroute_advanced_via_rule -contact_code TECH_VIA1 -size_by_array_dimensions [list 5 1] -move_via_to_center
その後いつものように電源ストラップを生成する.
create_power_straps -direction vertical -start_at 4.5 -num_placement_strap 2 -increment_x_or_y 20 -nets {VDD VSS} -layer M5 -width 1 -step 20 -pitch_within_group 1.75 -extend_low_ends force_to_boundary_and_generate_pins -extend_high_ends force_to_boundary_and_generate_pins -advanced_via_rules
-contact_codeでテクノロジファイル中のVIAを指定する事が可能である.-move_via_to_centerオプションをつけると,電源レールの真ん中にVIAを配置することが可能である(つけないとずれる).
2013年8月1日木曜日
NC-Verilogにおける実負荷シミュレーションのバッドノウハウ
NC Verilogを使ってSDFをアノテートしたシミュレーションをする時,アノテーションの手法は以下の2つがある.
- Verilogテストベンチ中に$sdf_annotate("file", module)を使う
- NC Verilog起動時に+sdf_file+<
file> を引数で与える
これらの手法のうち,(1)で以下のワーニングが発生しうまくアノテーションできずはまった.
ncelab: *W,sdfNET: failed Attempt to annotate to non-existent path...
しかし,同じファイルであっても(2)を試すとうまくいく.よくわからないが,(1)と(2)ではサポートしているSDFの構文が違うのだろうか.利用したのはncverilog 06.20-s004 (IUS62)である.
ncelab: *W,sdfNET: failed Attempt to annotate to non-existent path...
しかし,同じファイルであっても(2)を試すとうまくいく.よくわからないが,(1)と(2)ではサポートしているSDFの構文が違うのだろうか.利用したのはncverilog 06.20-s004 (IUS62)である.
なお,(2)は+sdffile<file > と"+"なしでも正しくアノテーション可能である.
SDFをアノテーションすると当たり前だが各セル,配線遅延を想定したシミュレーションになる.従ってテストベンチのクロック周期を想定する回路のクロック周期に設定しないと当たり前だがタイミング違反になる.
Verilogシミュレーションにおいて,セットアップ違反はホールド違反として報告されることがある.早とちりせずに2つのタイミング違反の可能性について調査する必要がある.
何も考えずにシミュレーションをしていたところ,回路を100GHzでシミュレーションしてしまい結果ホールド違反(と思わせたセットアップ違反)がモリモリでてきて悩んでしまった.情けない.
IC CompilerでHold回避用遅延素子を指定する
IC Compilerによる配置配線においてHold違反を回避するために遅延素子を入れるが,私の環境ではインバータチェーンで構成されてしまい面積/消費電力的に無駄が多い.実際には特定のセル(DELAYセル)をホールド解決用に利用したい,そのためにはset_prefer属性を付加するしたうえでhold違反の修正を行う.以下のようにコマンドを入力すればよいようだ.
set_prefer -min {tech_lib/MY_DELAY_CELL}
set_fix_hold_options -preferred_buffer
set_fix_hold [all_clocks]
あとはroute_opt等の配線時にhold違反を修正するよう設定すればよい.
set_prefer -min {tech_lib/MY_DELAY_CELL}
set_fix_hold_options -preferred_buffer
set_fix_hold [all_clocks]
あとはroute_opt等の配線時にhold違反を修正するよう設定すればよい.
2013年7月31日水曜日
Calibre Interactive WindowをIC Compilerに表示させる
Mentor GraphicsのResource Centerを見ていて知ったのだが,Calibre Interactive WindowをIC Compilerに表示させることが可能らしい.
Calibreのインストール先として環境変数$CALIBRE_HOMEを設定したうえで,以下のコマンドをIC Compilerの設定ファイル($HOME/.synopsys_icc_gui.tcl)もしくはIC Compilerのシェルに書き込めばよい.
icc_shell> source [file join $::env(CALIBRE_HOME) lib icc_calibre.tcl]
今までGDSをCalibreWORKbenchで見る,もしくはAnalogArtistにStreamINしていたけれど,今後そんな面倒なことをしなくても良さそうだ.
参考:
Calibre Interactive User's Manual
Resource Center Mentor Graphics
Calibreのインストール先として環境変数$CALIBRE_HOMEを設定したうえで,以下のコマンドをIC Compilerの設定ファイル($HOME/.synopsys_icc_gui.tcl)もしくはIC Compilerのシェルに書き込めばよい.
icc_shell> source [file join $::env(CALIBRE_HOME) lib icc_calibre.tcl]
今までGDSをCalibreWORKbenchで見る,もしくはAnalogArtistにStreamINしていたけれど,今後そんな面倒なことをしなくても良さそうだ.
参考:
Calibre Interactive User's Manual
Resource Center Mentor Graphics
2013年7月29日月曜日
IC CompilerのZrouteで並列処理をする
IC Compiler(2008年版)までは普通のrouter(Classic router)を使っていたが,現在利用中のIC Compiler 2010年版のZrouteが超快適で研究室で愛用している.しかしtopコマンドを見るとCPUを1つしか使っていない.
Classic routerで並列処理をするときはset_destribute_routeを使ってホストの情報を取得したが,Zrouteの場合はset_host_optionsを使う様だ.
icc_shell> set_host_options -max_cores 12
配線や寄生成分抽出など場面によって使い分けもできるらしいが,複雑に考えない場合は単に-max_coresで利用するコア数を指定すればよいとのこと.1コアでさえ速いZeouteがきちんと12コア使って高速処理してくれるので気持ちが良くなった.
ちなみに,複数のマシンに配線のジョブを流すことも可能らしい.商用の大規模な回路をフラットで設計する時には役に立つのかもしれない(研究室レベルの回路だと牛刀かもしれない).
Classic routerで並列処理をするときはset_destribute_routeを使ってホストの情報を取得したが,Zrouteの場合はset_host_optionsを使う様だ.
icc_shell> set_host_options -max_cores 12
配線や寄生成分抽出など場面によって使い分けもできるらしいが,複雑に考えない場合は単に-max_coresで利用するコア数を指定すればよいとのこと.1コアでさえ速いZeouteがきちんと12コア使って高速処理してくれるので気持ちが良くなった.
ちなみに,複数のマシンに配線のジョブを流すことも可能らしい.商用の大規模な回路をフラットで設計する時には役に立つのかもしれない(研究室レベルの回路だと牛刀かもしれない).
Calibre InteractiveにおけるLVS optionの取り扱い
Mentor Graphics Communities; How to disable the LVS Options in Calibre Interactive GUI?
Calibre Interactiveの場合,LVSのオプションはルールに記載されたものではなく,Calibre Interactiveのデフォルトが使われるらしい.ルールに記載されたオプションを利用するためには,[LOAD]ボタンを押さなければ反映されないらしい.
今まで「なんでルールにオプション記載してもLVSに反映されていないのだろう」と思っていたけれど,こんな事実だったとは….また,Calibre 2010ではパスするマクロがCalibre 2011では抽出されてほしくないFillerが抽出されてLVSがパスしなくなる問題もあったが,これもおそらくフィルターオプションの"AF"が2011版では無効になっているのかもしれない.
Calibre Interactiveの場合,LVSのオプションはルールに記載されたものではなく,Calibre Interactiveのデフォルトが使われるらしい.ルールに記載されたオプションを利用するためには,[LOAD]ボタンを押さなければ反映されないらしい.
今まで「なんでルールにオプション記載してもLVSに反映されていないのだろう」と思っていたけれど,こんな事実だったとは….また,Calibre 2010ではパスするマクロがCalibre 2011では抽出されてほしくないFillerが抽出されてLVSがパスしなくなる問題もあったが,これもおそらくフィルターオプションの"AF"が2011版では無効になっているのかもしれない.
登録:
投稿 (Atom)