[[FrontPage]]

*2021年9月8日 KLayout Macro, DRC, LVSなどのスクリプトをツールバーから選択して実行できるようにする方法まとめ [#ke2b0850]
Macro Development→該当スクリプトを開く→ウインドウ上部の小さなアイコンでEdit property of macroをクリック。

''階層化させて''表示させる場合はこのようにやるといい。必要なければ、グループ名などを省けばできると思う。
- User interface bindingにチェック
- "Menu path"は以下のように
--・Macro
--- macros_menu.[任意のグループ名]>end("[グループの表示名]").end
--・DRC
--- tools_menu.drc.[任意のグループ名]>end("[グループの表示名]").end
--- ex. : tools_menu.drc.my_drc>end("my DRC").end
--・LVS
--- tools_menu.lvs.[任意のグループ名]>end("[グループの表示名]").end
--- ex. : tools_menu.lvs.my_lvs>end("my LVS").end

-"Group name"は[任意のグループ名]と同じにしたおいた方があとあと分かりやすいと思う

*2021年8月12日 KLayoutでレイヤ同士を論理演算してレイヤを生成する方法など [#s8b59861]
Rubyのマクロで参考になるページがあった。shapeProcessorクラスを使うと割と簡単にできる。
- https://www.klayout.de/forum/discussion/6/ruby-example-for-layer-boolean-operations

ただ、引数が多い。以下は同じレイアウト上のすべてのセルに対して、レイヤの論理演算をしてレイヤoutを生成する例(前後は省略)。

  ly_a = ly.layer(1, 0) # レイヤa レイヤ番号1
  ly_b = ly.layer(2, 0) # レイヤb レイヤ番号2
  ly_out = ly.layer(3, 0) # レイヤout レイヤ番号3
  sp = ShapeProcessor.new
  ly.each_cell do |cell|  # Layoutオブジェクトにあるすべてのセルに対して処理
    sp.boolean(
                    ly,  # Layoutオブジェクト
                    cell,  # Cellオブジェクト
                    ly_a,
                    ly,
                    cell,
                    ly_b,
                    cell.shapes(ly_out),
                    EdgeProcessor::ModeANotB,
                    #EdgeProcessor::ModeAnd,
                    #EdgeProcessor::ModeOr,
                    false,  # hierarchical
                    true,  # resolve_holes
                    true  # min_coherence
                  )
  end

- 「EdgeProcessor::ModeANotB」 で、「ly_a & not ly_b」演算をしている。その直後にコメントアウトしているのは、論理積、論理和する例。
- 引数の最後の3つのtrue/falseのフラグについて
-- herarchical:すべてのセルを順に処理し、ここではfalseにすることで演算の結果として生成されるレイヤも処理中のセルの中で生成される。
-- resolve_holes:これが正直あまり分からない。おそらく図形がPolygonクラスで描かれているときに影響するフラグだと思う。
--- 下のページの"The  SimplePolygon Class"と"The Polygon Class"の項目に図付きで説明されている。後者はGDS2フォーマット(業界標準形式、「.gds」の拡張子のファイルのこと)やOASISと互換性がないと書かれているので、trueにするとポリゴンクラスだった時に結果はシンプルポリゴンクラスで生成されるということかも?基本的にtrueでいいと思う。
--- https://www.klayout.de/doc/programming/geometry_api.html
-- min_coherence:ly_aとly_bで書かれた図形で例えば四角の角のみが重なっていた時に、OR演算すると結果が変わるのでわかりやすい。
--- true:角同士くっつかず、ly_aの領域とly_bの領域2つの図形で生成される(辺同士はくっつく) false:角同士がくっつき、1つの図形で生成される。最初のページの例はtrueだったので基本的にtrueでいいと思う。


*2021年8月3日 LabVIEW ADC8252_IV_Auto.vi でエレクトロメータADCMT 8252が出てこない [#fdf7da0d]
選択にデバイスが出ていないときはGPIBドライバが入ってない可能性あり。

「GPIB-USB-HS」または「GPIB-USB-HS+」を下記のサイトで検索して出てきたものをDLする。

https://www.ni.com/ja-jp/support/downloads/drivers.html

*2021年8月2日 LabVIEW 2017 SP1 でDriverFinderのウィンドウが固まる [#gca9b5a6]
バグのようで修正パッチをダウンロードしてそれと入れ替えると良い。詳細は下のサイトへ。

https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z000000kHNJSA2&l=ja-JP

 
*2021年7月25日 KiCadのシミュレータngspiceについて [#hb9f3710]
- http://ngspice.sourceforge.net/ngspice-eeschema.html
-- KiCad 5.1.10 に入っているのはngspice-34
-- 「ngspice-(バージョン) document」で調べればドキュメント(PDFなど)は簡単に見つかる。
-- バージョンの確認はEeschemaでテキストを下のように書いて実行するとグラフの下のコンソールに表示される。これ以外に簡単に表示させる方法が見つからなかった。
  .control
  version
  .endc

-.measディレクティブ使うときのLTspiceとの相違点(Ver. ngspice-32)
-- 電圧取りたいときのノード名の指定はv("nodename")とする。Eeschemaで付けたノード名の直前に\をつけることを忘れずに。ネットリストを出力して、そのネットリストと同じ名前をnodenameにすれば良い。例:v("/Vgs")~
 ' 'または囲まないはエラーが出る。LTspiceでは囲まないor" "で囲むがOKで' 'で囲むはNG。~
 https://sourceforge.net/p/ngspice/discussion/133842/thread/c11cab4d/
-- 導関数はderiv()。LTspiceではd()。平方根はどちらもsqrt()。
-- .measで出力させたい値はある1つのノードの電圧といったものならLTspiceと同じように.meas 〜 find 〜 when 〜 というディレクティブを書ける。しかし、計算式を書くならngspiceではletを使う必要があるみたい。関数を使う場合も同様。計算式を記述するためのpar(' ')というコマンドもあるみたいだが、.meas内では使えないとのこと。
-- ngspiceには電流を計算式に使えない?I("Vxxxx")が使えない。グラフなどは出せる。
  print @M1[id]
 とかでMOSFETのドレイン電流などを出力することはできるので、計算したいなら実行後に他のツールで?

*2021年7月14日 [#sf55bd2f]
- VIS 0.5umのPDKに入っているSPICEモデルファイルはMOSFETのモデルがLevel=28と49で2種類それぞれファイルで分けられているものがあった。
- level=28はLTspice, ngspiceに対応していないが、Level=49の方はLTspiceで実行できた。LTspiceと互換性のあるngspiceでは、一部、モデルの最後の)のみの記述の行を+)にすることで実行できる。


*2021年7月11日 [#r9d6b357]
- メモ書きをここに整理する。
- ネットリストのMOSFETの端子の並びについて。KLayoutのLVSかけたときに気づいたこと。
-- LTspice, KiCad Eeschema : D G S B
-- KLayout : S G D B
-- D, Sを入れ替えれば良いが、レイアウト設計の上では区別する必要はないのでこういったこともあり得る。

*2021年7月8日 Cadence Spectreは独自のSPICEモデルファイル記述あり [#e1ed9671]
VDECのRohm0.18umのPDKには.scsのSPICEモデルファイルのみがあった。しかし、このモデルファイルはCadence Spectre専用でLTspiceなどでは使えない(記述方法がSpectre専用になっている)。LTspice, HSPICE, ngspiceなどで使うSPICEモデルファイルはたいてい.libで記述方法は同じ。ちなみにSpectreはどちらも対応しているっぽい。

https://spiceman.net/ltspice-spicemodel-knowledge/