Calibre LVS/PEXでCase Sensitiveなネットリストを読む

ICCなどで生成したverilogファイルをvirtuosoにインポートし、さらにCalibreにエクスポートすると元のverilogに記載されていたUpper Caseのネット名(Nxx)とvirtuosoが付けたLower Caseのネット名(nxx)がspiceファイル内に混在し、Case INsensitiveCalibreLVSエラーを吐く場合がある。

この問題はVirtuoso側のCalibre Netlist Export Setupでは解決出来なかったので、Calibre側でOptions>Include SVRF Rule StatementsにSOURCE CASE YESを追加して解決した。

ボストンインターンシップ記録

学会発表と研究室の縁で、アンプマークの会社でインターンシップに参加出来ることになった。 思い立ったことをまとめておく。

ビザ

アメリカでのインターンシップに参加するにはビザが必要である。大体以下のどちらかのパターンになる思う。

  • Fビザで留学中の学生がCPTの許可を貰う
  • 日本の学生がJ-1ビザを取る

私は日本の学生なので後者になる。他に使えそうなビザもあるが、以下の理由で使えなさそうである。

  • H-1B: 専門技術者として滞在可能なビザ。米国企業に雇用された時に使うものだが、年間発行枠が限られている。
  • H-3: 研修生として滞在可能なビザ。ただしOJTがメインになっては駄目で、見学や講習がメインになるらしい。

なお、J-1ビザは政府援助でインターンシップに参加するとその先2年間H/Jビザを取得出来なくなるという注意点があるが、 今回のような私企業のインターンシップなら関係ない。

J-1ビザを取る場合、まともな会社なら次のような手順になると思う。

  1. 会社の人事経由でLaw FirmにパスポートやCV、修了証明書、成績証明書、収入などの情報を提出
  2. Law FirmがJ-1ビザに必要なTraining Planを作ってインターンシップを開催する団体(僕の場合Cultural Vistaというところだった)に提出する
  3. インターンシップを開催する団体にLaw Firmに送った書類と大体同じものを送る。TOEICTOEFLのスコアシートが必要だったが、最後に受けたのが3年前でスコアが無効とのことだったのでDuolingoのテストを受けた
  4. インターンシップを開催する団体がDS-2019を作ってくれるので、サインして郵送されるのを待つ
  5. 大使館に行ってDS-2019とパスポートを提出し、VISAが貼られたパスポートが返送されるのを待つ

住居

アメリカの家賃はぶっ飛んでいる。僕が行ったボストンの場合、ワンルームのアパートが月4000ドルくらいした。(キッチン共用なら月2000ドルくらいからあるのだが、アレルギーの都合で独立したキッチンが必須だった)

因みにBluegroundはサポートが終わっているのでやめたほうが良い。

交通手段

会社が郊外にあるので車以外の通勤手段がなかった。 Hertzで3ヶ月借りて8000ドル

SSN

ボストンに住んでいる場合はレッドライン終点にあるSocial Security Administration Officeに行くことになると思う。 9時に開くので、その10分くらい前に着くようにするとほぼ待たずに手続きが終わる。9:30に着いたら2時間待たされたという話を聞いた。

J-1ビザでSSNをもらう場合は、オンライン申請を済ませた上で

  • パスポート
  • DS2019

を窓口で渡すと5分も掛からず手続きが終わる

Rocky Linux 8.6でVirtuoso IC6.18とICADVM23.1を動かす

軽率にZen4のサーバーを買ったらCentOS7に非対応だった。Rocky Linux 8.6をインストールしてみたが、私の所属研究室でメインのアプリケーションであるVirtuosoを動かすのに苦労したので誰かの役に立つことを願ってメモしておく。ここで示すセットアップでIC6.18とICADVM23.1が起動することは確認している。

IC/ICC2とかも動かせれば追記する予定(まだ対応しているのかも調べてない)。

やることはライブラリのインストール、シンボリックリンクの作成、Virtuosoが持っているOS判定スクリプトの改変である。 まず以下のコマンドでライブラリを用意する(不要なものも含んでいるかもしれないが、面倒なので調べていない)。

# #ライブラリのインストール
# dnf install tcsh ksh xterm redhat-lsb libnsl motif motif-devel libXScrnSaver glibc.i686 libXext.i686 libXtst.i686 libXt.i686 libXrender.i686 libXp.i686 libXrandr.i686 libXss.so.1 libstdc++.i686 libicu50
# dnf install compat-openssl10
# #フォントのインストール。100dpiフォントが入っていなければそれも入れる
# dnf install xorg-x11-server-Xvfb xorg-x11-fonts-ISO8859-1-75dpi-7.5-19.el8.noarch

# #シンボリックリンクの作成
# cd /usr/lib64
# ln -s libcrypto.so.1.0.2o libcrypto.so
# ln -s libssl.so.1.0.2o libssl.so 
# ln -s libdb-5.3.so libdb-4.7.so 
# ln -s libdb-5.3.so libdb.so
# ln -s liblzma.so.5.2.4 liblzma.so.0
# #libsaslが無いとADEからシミュレーションのjobがスタート出来ない
# ln -s libsasl2.so.3.0.0 libsasl2.so.2

続いてgeditとかで${CDSHOME}/share/oa/bin/sysnameを開き、

         4.[4-12].*)
                  # SLES 12 SP2 - SP4
                  sysname=`whichCompiler $linuxName`
                  sysnames="$sysname `whichCompiler $otherName` $sysnames";;

を探す。(多分240行目くらい。なお、IC23.1系ではこのスクリプトがガッツリ変わっていたので別の書き換えが必要かも) この下に、

         4.*)
                  # Rocky Linux
                  sysname=`whichCompiler $linuxName`
                  sysnames="$sysname `whichCompiler $otherName` $sysnames";;

を足す。これらを済ませた後、CentOS7の頃と同様に環境変数をロードすればvirtuosoが起動するはずである。

卵不使用のラーメン店

2025/1/20時点

自分のメモを兼ねて卵アレルギーでも行けるラーメン店をまとめておく。 (注文前に必ず店員に確認すること。突然原材料が変化することはよくある。)

  • ちゃぶとんラーメン: 最近味玉が入るようになってしまったが、麺自体は卵不使用なので卵を抜いてもらえば食べられる。
  • 横濱家: こちらも最近味玉が入るようになってしまったが、麺に卵不使用の旨がメニューに記載されている。
  • 町田商店: うずらが入っているので卵表示があるが、麺は卵不使用なのでうずら抜きを指定すれば食べられる。
  • 幸楽苑: ねぎラーメンなどが卵・乳不使用。乳アレルギーでも食べられそう。
  • らーめん堂 仙台っ子: 個人的に一番好み。アレルゲン表示は無いが、麺に卵不使用を店員に確認。私が食べて大丈夫だったので本当だろう。
  • 旭川ラーメン 梅光軒: 卵不使用が売りっぽい?新千歳空港店では卵アレルギーを伝えると伝票に卵アレと記載してくれた。別調理器具があるのかもしれない?(未確認)
  • 喜多方ラーメン: ほとんどのメニューが卵不使用。アレルゲン表示も見やすい。
  • 無鉄砲: アレルゲン表示あり。宅麺でも買える。
  • がっとん
  • 豚山
  • 岐阜タンメン
  • つけ麺つじ田
  • ラーメン大桜

食べられそうな店の調査には、アレルゲン表示が必ずある宅麺が便利である。

九州系と家系は食べられる可能性が高い印象。

本来は食べられるはずのラーメンが、味玉が入っていることで食べられないように見えてしまうのが残念。 ラーメンじゃないが、同じ理由で定食屋がボリュームを出すためにポテトサラダを入れるのもやめてくれたらなぁと。ポテトサラダを抜けば食べられるかもしれないのにアレルゲン表示上は卵利用になってしまう。

Synopsysツールで出てくる略称とか

適宜追加するつもり。

  • DFT: Design for Testability
  • MCMM: Multi-Corner Multi-Model
  • Scenario: 遅延解析などに使うCornerとModelの組み合わせ。
  • UPF: Unified Power Format
  • NDR: Non-Default Rule
  • CTS: Clock Tree Synthesis
  • AOCV: Advanced?(わからん) On-Chip Variation
  • POCV: Parametric On-Chip Variation
  • SPG: Synopsys Physical Guidance
  • ICG: Integrated Clock Gating
  • SAIF: Switching Activity Interchange Format

ICC2でピン位置を設定する方法

ICCで出来ていたピンの順番の設定がICC2では出来なくなった(sideの設定は出来る)。トップの設計までICCで完結する場合は問題ないが、virtuosoにインポートして手配線する場合はとても面倒である。

しかし、ピン座標を直接指定する方法はまだ生きているのでこれを使うことにする。

    set left 1
    set top 2
    set right 3
    set bottom 4

    set offset 5
    set space 0.3

    % n is pin order
    set_individual_pin_constraints -ports {HOGE} -allowed_layers "M3" -sides ${top} -offset [expr ${offset} + ${space}*n]

これで左右の辺なら下から、上下の辺なら左からoffset + n*spaceの位置にピンが置かれる。

同じことをICCでするとこんな感じ。同じ機能なのに微妙に名前変えるのやめてほしい。

set_pin_physical_constraints -pin_name {HOGE} -layers "M3" -width ${wire_width_pin} -depth ${wire_width_pin} -side ${top} -offset [expr ${offset} + ${space}*n]