2013年8月1日木曜日

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違反を修正するよう設定すればよい.

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

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コア使って高速処理してくれるので気持ちが良くなった.

ちなみに,複数のマシンに配線のジョブを流すことも可能らしい.商用の大規模な回路をフラットで設計する時には役に立つのかもしれない(研究室レベルの回路だと牛刀かもしれない).

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版では無効になっているのかもしれない.

2013年7月16日火曜日

Office 2013のスタート画面を表示させない

Office 2013は起動時に白紙の入力画面ではなく,スタート画面を表示させる仕様になった.例えばExcel 2013であれば以下の画面が表示される.


 最近使ったファイルが表示されるのは便利かもしれないが,旧来のユーザーとしては白紙のブックを選択する操作が増えるので面倒である.このようなスタート画面を表示させないようにするために,オプションを変更する.[ファイル]→[オプション]を選択する.

[基本設定]の一番下に[このアプリケーションの起動時にスタート画面を表示する]というオプションが存在するので,チェックボックスを外す.


以降,新規起動時かならず白紙のブックが表示される.



これはWord,PowerPoint等の他のツールでも同様に設定することが可能である.

スタートメニューを表示するというのはMicrosoft以外のツールも採用しているので特別に文句があるわけではないが,(タッチ対応のため)無駄にでかい事と,なぜ2番目の選択肢が「ツアーに参加する」なのか,理解に苦しむ.

2013年7月13日土曜日

MilkywayでFRAM Viewが作られないときの対応方法

Milkywayでフィジカルライブラリを作成するときに,

Warning: Skip generating FRAM view for cell (HOGE) because cell
 type option is not enable or mis-matched. (RT-116)


といってFRAM Viewが作られない事がある.ワーニングの通り,マクロのcell typeが指定されていない事が原因である.GDSをStream Inする時に,Cell Type Difinition Fileを適切に読み込む事でcell typeを指定する.Cell Type Difinition FIleには,cell typeと対応するマクロの名前を書けばよい.例えばHOGEをスタセルとして認識させるには

gdsStdCell HOGE

とすればよい.GDS中のすべてのセルを指定するのであれば

gdsStdCell *

の様に'*'を使うことも可能である.

MilkywayのコマンドとしてCell Typeを定義することもできる(Schemeモードであれば cmMarkCellType)が,なぜかこのコマンド実行してもTrueを返すわりにcell typeの定義はできていないようで,cmMarkCellTypeを実行してもFRAM Viewは作られない(バグ?).

2013年7月12日金曜日

HSPICEで自作関数を定義する

HSPICEでは変数の定義と同様に,自作関数を定義することができる.フォーマットは以下の通り.

.param funcname1(arg1[,arg2...]) = expression1
+ funcname2(arg1[,arg2...]) = expression2


関数名(funcname)は組み込み関数と異なる名前である必要があり,また別の関数内で利用する関数はあらかじめ定義されている必要がある.引数(arg)は必ず1つ以上必要であり,複数定義できる.関数は再定義できるが,オーバーロードではなくオーバーライドになる様だ(明確には述べられていないが).

例えば剰余を求める関数は,以下のようになった(SPICEv3にはあるのになぜHSPICEには無いのだろう??).

.param remain(numer, denom)='numer - (int(numer/denom) * denom)'

10進数を2進数に変換してみる.SPICEのカードの一部を示す.

.param remain(numer, denom)='numer - (int(numer/denom) * denom)'

.param COND_DCC_0 = 'remain(TRIAL, 2)'
.param COND_DCC_1 = 'remain(int(TRIAL/2), 2)'
.param COND_DCC_2 = 'remain(int(TRIAL/4), 2)'
.param COND_DCC_3 = 'remain(int(TRIAL/8), 2)'
.param COND_DCC_4 = 'remain(int(TRIAL/16), 2)'
.param COND_DCC_5 = 'remain(int(TRIAL/32), 2)'
.param COND_DCC_7 = 'remain(int(TRIAL/64), 2)'
.param COND_DCC_6 = 'remain(int(TRIAL/128), 2)'

.tran 10p 10n sweep TRIAL 0 256 1
HSPICEでシミュレーションしたところ,ちゃんと2進数に変換できた!


試していないが,おそらくHSIMでもできる

2013年7月10日水曜日

ulem.styにemphをアンダーラインにさせない

latexで論文を修正するために修正前の箇所に取消線を引く時,心臓に悪い自体が起きたのでメモ.

latexで取消線を引くには,ulem.styを使う.
ulem.styは取消線以外にもアンダーラインや二重線等もスタイルとして含んでいるのだが,
ulem.styはデフォルトでイタリックをアンダーラインに変えてしまう.つまり\emや\emphが
アンダーラインになってしまう.


\usepackage{ulem}をしたばかりに,引用文献が,アンダーラインになってしまった!
気がつかずに投稿していたらと思うと心臓ばくばくである.

そういうときは,normalemオプションを使う.




\usepackage[normalem]{ulem}を使えばこの通り,元のイタリックに!

論文締め切り直前にこんな事態が起きるなんて,なんて心臓に悪いパッケージなんだ... (UnderLineEMphasizeの名の通りといえばそうなのだが)

以下のドキュメントが詳しい.
http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&ved=0CDkQFjAB&url=http%3A%2F%2Ftexdoc.net%2Ftexmf-dist%2Fdoc%2Fgeneric%2Fulem%2Fulem.pdf&ei=tRMAUcKqHM6QiAeKmoGQAQ&usg=AFQjCNFrSE3qDfkcWl-YWFKHGEK9cw-4vA&sig2=638e6jfyWLXhfMw0N3ZhDA&bvm=bv.41248874,d.aGc

2013年6月20日木曜日

lmstatを使ってライセンスの使用状況を確認する

某所でCADのライセンス数の取り扱いについてヒートアップしている.Citrixのライセンスツールを使ってライセンスが管理されている場合,lmstatを使ってライセンスを確認することができる.

% lmstat [-a][-f feature]

-a : 提供されているすべてのライセンスの情報を表示
-f "feature" : "feature"のライセンスに関して情報を表示


例えばhspiceの場合,

% lmstat -f hspice

と打ち込めばよい.

ただしライセンスサーバーが複数ある場合,複数のサーバーにアクセスするためライセンスのチェックに時間がかかるようだ.以前記事にしたように実際に1つライセンスを取った方が速いかもしれない.

なお,うちの研究室も自分を含む何人かやらかした事があるので,それ以降皆自重するようになりました.
"&"とかつけてジョブを複数投げるときは気をつけましょう.

2013年6月19日水曜日

SiliconSmart備忘録

SiliconSmart ACEを研究室の子に教えてもらったのでメモ.

最低限必要なのは
・全体の設定ファイル(configure.tcl)
・各セルごとの論理を定義したファイル(.inst).
・SPICEネットリスト.
configure.tclはインストールディレクトリにテンプレがある..instは無ければ手で作れとのこと.既存の.libがあればそれから生成することもできる.

各ファイルのディレクトリ構造は(ほぼ)固定である.SiliconSmartはカレントディレクトリのディレクトリ構造から,各設定ファイルを読み取る.ディレクトリ構造は以下となっている.
./config # configure.tclを入れる.
./control # .instファイルを入れる.
./netlists # ネットリストを入れる.これは別のディレクトリを指定できる.

キャラクタライズの条件はconfigure.tclにも,.instにも,そして既存の.libからも読み取ることができる.
優先度が存在し,高い順に
.inst > configure.tcl > .lib
である..libにIndexの切り方とか指定していても全然反映されず詰まった.

キャラクタライズで利用するSPICEファイルの拡張子は.cir.別の拡張子を使うときはimport時に-extオプションを使う.

Magmaのツールなので,平等にNLDMもCCSもESCMも出せる.

セルの面積情報を付加することができない.やり方はマニュアルに書いてあるが,.libに反映されない.バグ?