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
  • 500円:2mm x 68枚 = 136mm  (Wikipediaによると1.8mmだが,他サイト[1][2]では2mm説が多いのでそちらを採用)

従って,硬貨を受けつけるトレイの大きさが136mmでありそれに制約されている可能性がある.微妙にずれがあるのは,硬貨のそり等を考慮したマージンの分であったり,硬貨の正確な厚みが公表されていない分の誤差の蓄積だと思われる(造幣局のサイトでは見つけられなかった).

2013年8月6日火曜日

SPICEネットリストビューアー

以前SPICEのネットリストのビューアーで良いものがないか問い合わせを受けた.自分の知っているビューアーは以下の通りである.

フリーのネットリストビューアーである.使い勝手は不明だが,デモを見る限り素子がぐちゃぐちゃに配置され可読性が低そうである.

  AnalogArtist
CIWから[File]→[Import]→[CDL…]でCDLとして読み込む.素子がぐちゃぐちゃに配置されるため,可読性が低い.
逆に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を配置することが可能である(つけないとずれる).

2013年8月1日木曜日

NC-Verilogにおける実負荷シミュレーションのバッドノウハウ

NC Verilogを使ってSDFをアノテートしたシミュレーションをする時,アノテーションの手法は以下の2つがある.
  1. Verilogテストベンチ中に$sdf_annotate("file", module)を使う
  2. 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)である.
なお,(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違反を修正するよう設定すればよい.