2024年2月6日火曜日

Listings の使用をやめて Algorithmicx を使う

Listingsのキャプションがいまいちすぎる.情報系では Algorithmicx を使うらしいので導入してみる.

tlmgrでインストールしよう
% sudo tlmgr install algorithmicx
とするもてめえの TexLive は 2019 で,最新の 2023 より古いから入らんよと言われてしまう.(ログは忘れた)
apt update して再度インストールを試みるも 2019 が再度インストールされてしまう...(LinuxMint 21.2です)

% sudo apt remove texlive-full
% sudo apt remove texlive-base
% apt update
(再起動)
% sudo apt install texlive-full
(2019をインストールしてしまう)

仕方ないので install-tl を使ってインストールすることに.texjpの指示通りです.
https://texwiki.texjp.org/?Linux#texliveinstall
ただリポジトリを指定するとうまくいかなかったので指定しなかった.
% wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
% tar xvf install-tl-unx.tar.gz
% cd install-tl-2*
%  sudo ./install-tl -no-gui 
...
Actions:
 <I> start installation to hard disk
 <H> help
 <Q> quit
Enter command: I
(延々ダウンロード)
% sudo /usr/local/texlive/2023/bin/x86_64-linux/tlmgr path add

念のためアップデートしてみた.なぜかいくつかアップデートが走った.
% sudo tlmgr update --self --all
tlmgr: package repository https://ftp.yz.yamagata-u.ac.jp/pub/CTAN/systems/texlive/tlnet (verified)
tlmgr: saving backups to /usr/local/texlive/2023/tlpkg/backups
tlmgr: no self-updates for tlmgr available
[ 1/12, ??:??/??:??] update: acmart [4890k] (68950 -> 69242) ... done
...
[12/12, 00:15/00:15] update: versonotes [133k] (55777 -> 69249) ... done
running mktexlsr ...
done running mktexlsr.
running updmap-sys ...
done running updmap-sys.
tlmgr: package log updated: /usr/local/texlive/2023/texmf-var/web2c/tlmgr.log
tlmgr: command log updated: /usr/local/texlive/2023/texmf-var/web2c/tlmgr-commands.log

念のため既存の tex をコンパイルしてちゃんと動くか確認.
% cd ~/(適当なTexディレクトリ)
% make

本番の tex 環境に戻り,コンパイルしてみる.

参考にしたサイトだと tlmgr で以下のようにパッケージをインストールせよとあったけれど,うちの環境では不要のようだった..
% sudo tlmgr install algorithmicx
% sudo tlmgr install algorithms

Listings では HTML の plane タグの様に特殊文字のエスケープなどは必要なかったのだけれど, alrogithmic の環境だと
通常の Latex の環境同様エスケープや改行などは必要みたい.あと文中に日本語があるとコンパイル時に
! Not two-byte family.
と警告が出て止まってしまう.まあでも日本語でアルゴリズム書くこと無いからいいか.

Algorithmicx の参考に下サイト:
https://li-feel.hatenablog.com/entry/2017/12/19/160618
https://github.com/PMOB/study-tex/wiki/reference-algorithm



2024年2月5日月曜日

IEICEのクラスファイル を TeXLive 2023で動かすようにする

環境は Linux Mint 21.2です.クラスファイルは ieice2.2 です.(2015年)
普通にコンパイルすると
.
で止まる.
\usepackage{graphicx,xcolor}% for pdflatex
\usepackage[dvipdfmx]{graphicx,xcolor}
に変える.

これまで Bibtex では ieicetr.bst と reference.bib をワーキングディレクトリに置いて
\bibliographystyle{ieicetr}
\bibliography{reference}

という記述を使っていたのだが,TexLiveをアップデートしてから
というエラーが出るようになった(TexLive 2023 なのになんで 2022 なん?).それどころか TexLive デフォルトでインストールされる IEEEtran もエラーになるように.bst ファイルのデフォルトの保存ディレクトリにある bst ファイルも,カレントディレクトリにある bst ファイル,bib ファイルも読めない.これらはカレントディレクトリに置けばいいって奥村先生も言っているのになぜ


悩んでいたのだが,以下のサイトからパスをちゃんと書かないといけないらしいという情報を見つけた.

ほんとうかいな.カレントディレクトリに置いたファイルは"./"をつけよう.
\bibliographystyle{./ieicetr}
\bibliography{./reference}

デフォルトでインストールされる BST ファイルについては, BSTINPUTS が
% echo $BSTINPUTS 
/usr/local/texlive/2023/texmf-dist/bibtex/bst/
を指していて IEEEtran は
% ls /usr/local/texlive/2023/texmf-dist/bibtex/bst/IEEEtran/IEEEtran.bst
にあるので,以下のように書き換えれば良いらしい.\bibliographystyle{IEEEtrran/IEEEtran}
\bibliographystyle{ieeetrran/IEEEtran}

上記の様にコードを変更したらどちらも動いた.良かったけれど動き方がなんか想定と違う気が...

念のため,.zshrc にBSTINPUTSも設定しておこう.
% export BSTINPUTS=/usr/local/texlive/2023/texmf-dist/bibtex/bst/

24/02/15 訂正
bibliographystyle のディレクトリ名 IEEETran はieeetran とすべて小文字でした.

2024年2月2日金曜日

PDFへのフォントの埋め込み TexLive 2023版

PDFへのフォントの埋め込みをしないと IEEE PDF eXpres が文句を言うので埋め込む.

初手でいきなり気持ち悪い事をするのだが,GhostScriptの設定を変更する.設定ファイルは以下にあるようだ.(いくつかのWebサイトでは [ver]/lib の下と書いているが,そうでは無いらしい)

.standardfonts で指定している基本フォントをすべてコメントアウトしてしまう.

マップするフォントを指定するファイルを作成する.

-f オプションをつけてコンパイル

確認
全部 emb が yes になっているからOK.

環境構築すると GS の設定を変更するのすぐに忘れちゃうんだよな.

2024年2月1日木曜日

HSPICE で過渡解析の結果として初期値のみが表示される

HSPICEで過渡解析を行ったときに,初期値(時間0点)のみ表示されて波形が表示されないことがある.

これは autostop を使っている状態で .Measure の条件を満たす波形入力が存在しないことが自明な場合(例えばトリガ条件の信号が存在しないなど)に過渡解析を実施せずに終了してしまう様だ.ややこしいのは最後のログが "*** job concluded" と表示される事だけれど,実際には初期条件の評価しかしていない.

例えばこんなSPICE CARDを入力すると.


.Measureの条件である W6_01,W6_02 は存在しないのでこの .Measure は無視される.


結局生成された波形ファイル (.tr0) を見ても,時間ゼロでの初期値(ここでは0.7 V)が点で表示されるだけである. ちゃんとログを見ると,

**warning** (delay_wring.sp:32) Unable to find referenced node w5_10; Output variable ignored. Specify a valid node.

という感じに存在しないネットについてはワーニングがでているので,まあちゃんと確認しなさいということか. 

昔の HSPICE はこんな振る舞いだったかな,とはちょっと疑問ではある.ここでは P-2019.06-1 を使っている.

2024年1月29日月曜日

アヴェンチュラの互換品?

 自転車に乗るときにクーレンズのアヴェンチュラを使っているのだが,買ってから 8 年経つ事もあり,インナーレンズフレームが崩壊して,公式のインナーレンズフレームを買い換えたらレンズが入らなくてフレームぶつ切りにして接着剤でくっつけ,つるも左側は折れてしまい接着剤でくっつけている.クーレンズはめがね事業から撤退してしまったようだ.アヴェンチュラ自体はフレーム+インナーレンズフレーム+アウターガラスレンズ4種(偏光2枚)+ハードケースのコミコミで5000円くらいと激安と当時有名だった.私はインナーレンズ買ったから1万5000円ぐらいしたけれど.

Amazonを見ていると,割とそっくりな商品として FERRY のアイウエアを見つけたので買ってみた.フレーム2つ(ただしツルは1セット)+インナーレンズフレーム+アウターガラスレンズ4種(偏光1枚)+ハードケースで2680円と激安である.


アヴェンチュラは黒だけれど,


FERRY は赤にした.形はすごく似ている.FERRY のロゴがダサい.


比較をしてみる.ツルは形は似ているけれど,根元も取り付け方法も違う.FERRY はなぜか90度回転して外すらしい.


サングラスそのものも形は似ているけれど,詳細は少々異なる感じ.


でも形状の互換性はある程度あってお互いに取り付け自体は可能.なんか隙間空いている?


インナーフレームも形は似ているけれど子細は違うような…….


互換性あるかなってぐいぐい押しつけていたら根元からポキッと折れたorz.まあ年数経っているしな…….結局,インナーレンズだけ接着剤でひっつけて使うのがいいのかね.

2024年1月26日金曜日

半導体クラウド学院

半導体クラウド学院 (半導體雲端學院 Semiconductor Cloud Academy)」という,TSMC が一般向けに作成した Web 教育システムがある事を教えていただいた.メールアドレスを登録すると,集積回路についてその原理から学ぶことができるみたい.コースの動画がかわいくて,中学・高校生が見ても楽しそうである.

なんとびっくり日本語対応である(でも句読点が台湾).

私のブラウザでの振る舞いがおかしくてテストを受けられないのだけれど,テストを受けると認証みたいなものももらえるらしい.

しかし TSMC は大学連携だったり教育だったりに力を入れだしていて,なんだか昔の STARC を一社でやり始めている感じだなぁ.

興味のある人は上記リンクから右上の「学生センター」を選択して登録してね.

2024年1月21日日曜日

sudo で X11 を有効にする

Cadence のインストーラー (installScape) を sudo で起動しようとすると,X11 に繋がらないと怒られる.
sudo で X11 を有効にするためには,xauth を用いてユーザーの X サーバ接続権限情報を sudo に与えてしまう.ユーザー名が [user] だとすると以下のような感じ.
/root/.Xauthorityが無いと怒られる場合は空のファイルを作ってから再実行.


まあ,オチとしては,installScape は root で実行するものではないという事なのですけどね.インストール先のパーミッションを適当な管理者にしてユーザー権限でインストールすべし.

2024年1月18日木曜日

"Error: 'top' doesn't specify a unique design" in DesignCompiler

 学生が以下のような tcl で論理合成中に current_design コマンドでエラーが出ると相談しにきた.
このエラーはファイル中に同じモジュール名の回路が複数ある場合に生じるエラー.しかし読み込んでいる Verilog ファイルは1つしかない.今回の例では,read_file コマンドで Verilog ファイルを読み込み,analyze コマンドで同じ Verilog ファイルを再読込しているため,メモリ中に同じモジュールが2つある事になっていたらしい.この場合,
list_design -show_files
list -designs
などでどのようなモジュールが読み込まれているか表示させてデバッグできる.今回についてはファイル読み込みが重複していたので,read_file コマンドを削除し analyze コマンドだけ実行することで解決した.

参考:
Pran Kurup and Taber Abbasi, "LOGIC SYNTHESIS USING SYNOPSYS® 2nd Ed.", KLUWER ACADEMIC PUBLISHERS

2024年1月15日月曜日

Milkyway でセルが正常に更新されなくて困っていた

オチ:Virtuoso の StreamOut のログとMilkywayのログをちゃんと確認すること.

ASAP7 ではセルを 4x して配置配線するので,1x ライブラリをコピー→ XScale を使って 4x → StreamOut → Milkyway DB → IC Compiler で配置配線をしていたのだが,一部のセルのサイズが変わらなくて困っていた.オチはは OA ライブラリ中に同名の別セルが存在していたことが原因だった (具体的には,4x ライブラリのセルが 1x ライブラリの INVx2_ASAP7_75t_SL をインスタンスとして読んでしまっていた).

StreamOut はちゃんと警告していて,ダブった方を "INVx2_ASAP7_75t_SL_0" とリネーム("_0")している.リネームされたのが 1x セルならよかったのだが,4x セルがリネームされてしまったのであった.

...
WARNING (XSTRM-145): The structure name 'INVx2_ASAP7_75t_SL' has been changed to 'INVx2_ASAP7_75t_SL_0' by the translator. This could be because multiple cells with the same cell name exist in different libraries, the same cell name has been mapped to multiple cell names, or the cell name length is greater than the '32' that was specified using the '-respectGDSIINameLimit' or '-gdsCellNameLength' option.
...

Milkyway の setPRBdry のログを確認すると正しく電源が抽出されているように見えたのだが,

...
Cell [INVx2_ASAP7_75t_SL_0.FRAM] has 2 horizontal p/g rails on MET1.
         the 1 rail's net type is gnd
         the 2 rail's net type is power
Extracting P/G track for cell INVx2_ASAP7_75t_SL_0.FRAM
power/ground track (low, high): (-144, 144) (4176, 4464)
...

これはリネームされた 4x セルで,本来の名前のままの 1x セルは処理中には異なる位置の電源が抽出されており,ちゃんと「電源おかしいで」と警告されていたのであった.

...
Cell [INVx2_ASAP7_75t_SL.FRAM] has 2 horizontal p/g rails on MET1.
         the 1 rail's net type is gnd
         the 2 rail's net type is power
Extracting P/G track for cell INVx2_ASAP7_75t_SL.FRAM
power/ground track (low, high): (-36, 36) (1044, 1116)
WARNING: cell AOI321xp33_ASAP7_75t_SL.FRAM and NAND2x1p5_ASAP7_75t_SL.FRAM have different PG rail extension.
...

余談だけれど,スタセルの外形情報は Milkyway のログから抽出してもいいかもしれない.Virtuoso をゴリゴリスクリプトで動かすのは結構遅いので.