2025年11月21日金曜日

ngspice の収束で困っていたときに使うとよい .options

 ngspice の収束で困っていたときに見つけたのでメモ


過渡解析がおおよそうまく行く SPICE のオプションとその説明

.options gmin=1e-10 : ダイオードとトランジスタ内の各ダイオードに並列に  1e10 (=10GOhm) の大きな抵抗を追加.
.options abstol=1e-10 : 収束基準の許容誤差を 1e-12 から 1e-10 に増加.
.options reltol=0.003 : 収束基準の許容誤差を 0.0001 から 0.003 に増加.0.003 を超えることは絶対にしてはいけない.
.options cshunt=1e-15 : 各ノードからグランドへ追加される CSHUNT 容量として 1e-15 を追加.高周波振動や数値ノイズによって引き起こされる "Timestep too small" 問題を解決できる.デフォルトは  0 .

「代替ソルバーや cshunt のような機能を必要とする回路には注意が必要です.これは,回路のどこかに不具合がある,つまりモデルに現実離れした部分があることを意味します.」とのこと.

2025年11月20日木曜日

涉过愤怒的海の時計台?

映画 涉过愤怒的海 では漁師の娘,金丽娜は京都大学に留学しているという設定なのだが,この映画で出てくる時計台?がちがくない?という話.


これは京大の時計台ではなくて近大の西門ですね.


スクショは近大のWebから.



ちなみに吉田寮は本物っぽい.京大の許可は取ったのだろうか….

2025年11月4日火曜日

LDAP とローカルで同じユーザー名をつけたら一度ログアウトしましょう,という話

 情けない話なので備忘録.
ローカルで user1 を作成しログインした状態で,同名ユーザーを LDAP で user1 としou=SUDOers となるグループに設定していた.このとき,ユーザー名は同じに見えるのだけれど,user_id がローカルは 1001,LDAP は 10001 となっていたので,「ユーザー名は正しく見えるのにファイル生成で変に permission denied されるぞ」「ユーザー名は正しく見えるのにsudoできないぞ?」という事態が起きていた.
% sudo ls
sudo: あなたは passwd データベースに存在しません

どうやってわかったかというと,id コマンドは認証系 (LDAP) のユーザー名と user_id を表示してくれて,
% id user1
uid=10001(user1) gid=10001(user1) groups=10001(user1),11000(admin),10000(user)

そのシェルで whoami したらローカルでログインした該当 user_id が認証システムにないと言われたためである.
% whoami
whoami: cannot find name for user ID 1001

ls-n オプションをつけるとユーザー名ではなくユーザーIDを表示してくれるのでそれもよいかもしれない.
%ls -l
合計 383M
drwxr-xr-x.  6 user1 user1 4.0K 10月 22 01:43 .
drwxrwxrwx. 83 user1 user1 8.0K 10月 22 06:41 ..
...
drwxr-xr-x. 14 user1 user1 4.0K 10月 21 21:48 zlib-1.2.9
%ls -ln
合計 383M
drwxr-xr-x.  6 10001 10001 4.0K 10月 22 01:43 .
drwxrwxrwx. 83 10001 10001 8.0K 10月 22 06:41 ..
...
drwxr-xr-x. 14 10001 10001 4.0K 10月 21 21:48 zlib-1.2.9

ログアウトしてログインしたら解決したという情けない話であった.とはいえ認証系でおかしい時にログアウトするのは勇気がいるけれど.
(危ない操作をする場合は,タブ1つはログインしっぱなしにしておけとか,違う tty でログインしておけ,とか言っていましたね)

2025年11月3日月曜日

ldappasswd が Invalide credentials (49) を返してくる

 タイトルの通りですが,LDAPのパスワードを変えようと ldappasswd を使うのだが,  
と返されうまくいかない.原因は
(1) 認証に利用しているrootdnが異なる
(2) 認証に利用しているパスワードが異なる,特に平文を使っている場合,それがハッシュ化される時のハッシュ値が実行条件によって変化する
(3) 認証に利用しているパスワードへのアクセス権がない
などがあげられるらしいが,(2) はMD5にしているし,(1),(3) は他の ldap* コマンドは受け付けているので理由が全くわからなくて困ってしまった.

結局初期化はインスタンスごと作り直すことに.
 

こんな感じの Perl スクリプトでユーザーを追加する .ldif を作成.

 

シェルスクリプトで .ldif スクリプトを起動.

 

その後,既存インスタンスの削除,インスタンス生成,LDAP オブジェクトの生成(基本+自分),LDAP オブジェクトの生成( Perl で作った学生分)という感じ.

2025年11月2日日曜日

LinuxMint / AlmaLinux 環境に LDAP を入れる

長年やりたいと思っていた  LDAP/389DirectoryServer をインストールできた.こちらのサイトを大いにコピー参考させていただいた.大変ありがたい.


こちらの環境は以下の通りなので,Server 側は一部読み替えが必要です.
Server:LinuxMint 
Client:AlmaLinux8 

Server側設定

LDAP/389DirectoryServer をインストール

 

生成した .inf の一部を書き換える.

 

インスタンスの生成と動作確認
 
→Activeになっていることを確認

ポート開放

クライアントから接続するためのポートをあける

 
 

sssd.ldif を作成

意識が低いので公開鍵認証ではなくパスフレーズ認証です.元記事にあった公開鍵認証のためのスキーマは読みません.

 

sssd.ldif を読む

 

補足:
   
modify operation type is missing at line 2, entry "ou=Users,dc=example,dc=com"
と表示されてる場合,ldapadd ではなく ldapmodify を実行している.ldapmodify を使う場合は,ldifにどのような変更を行うか記述が必要らしい.


再度実行してみる

 

ldif の情報が登録できたか確認する.
 

クライアント設定

sssdインストール

 

sssd.conf は Quita の記事のほぼそのままです.

 

 

SSSD 起動

 
→Activeになっていることを確認

動作確認
 

ユーザー情報取得

 


認証をSSSDに変更

 

ログインしてみよう.

 

.bashrc が読めていないけれど,ログインもできたしsudoもできた.ようやく使えるようになった.

LDAP初期化

LDAP の設定を初期化する際は消す前に一度止める必要があるらしい.LDAP 設定でおかしいなと思ったら,次の一連のコマンドを実行してまっさらな .inf ファイルから再構築していた.この知識がない段階では,LDAP  がうまくいかなくなったら OS まるごと再インストールしていた.(TATが…)

 

参考

こちらのサイトも参考にはしていたのだけれど,おそらく aci 設定が適切でなくてユーザー情報は引けたがログインには至らなかった.

いつも頼りにしている Server World さんの設定はすごくシンプルなんだがうまくいかない.

OpenLDAP : LDAP サーバーの設定
https://www.server-world.info/query?os=Rocky_Linux_8&p=openldap&f=1
OpenLDAP : LDAP クライアントの設定
https://www.server-world.info/query?os=Rocky_Linux_8&p=openldap&f=3

はまったこと

sssd.ldif に書いたパスワードの末尾に空白があるとパスフレーズ認証が通らない.これは平文でも暗号化していても同じ.これでずっと悩んでいて,うまく行ったりうまく行かなかったりぱっと見の再現性がなくてめっちゃこまっていた.
また /root/ds01.inf の先頭行が空欄になっていたのも問題だったかもしれない.とにかく設定中にエラーなり警告なりが出てくれないので難易度が高すぎる.

2025年11月1日土曜日

AlmaLinux8 で NFS を有効にする

基本的にこちらのサイトの通りにすればよい.

Server 側設定 (xx.xx.xx.141)

パッケージインストール
% dnf install -y rpcbind nfs-utils

共有ディレクトリ作成
% mkdir /mnt/disk1

exports記述
% vi /etc/exports
/mnt/disk1 xxx.xxx.xxx.0/24 (rw,no_root_squash,async)

サービス起動
% systemctl enable rpcbind
% systemctl restart rpcbind
% systemctl status rpcbind
→ Activeになっていることを確認
% systemctl enable nfs-server
% systemctl restart nfs-server
% systemctl status nfs-server
→ Activeになっていることを確認

Cliant 側設定 (xx.xx.xx.142)

パッケージインストール
% dnf install -y nfs-utils

マウント先作成
% mkdir /nfs/disk1

ここでマウントしてみるもうまく行かない
% mount -v -t nfs xx.xx.xx.141:/mnt/disk1 /nfs/disk1
mount.nfs: timeout set for Tue Oct 14 22:37:52 2025 mount.nfs: trying text-based options 'vers=4.2,addr=xx.xx.xx.141,clientaddr=xx.xx.xx.142' mount.nfs: mount(2): No route to host
mount.nfs: timeout set for Tue Oct 14 22:37:52 2025 mount.nfs: trying text-based options 'vers=4.2,addr=xx.xx.xx.141,clientaddr=xx.xx.xx.142' mount.nfs: mount(2): No route to host
^C

firewall で nfs サービスの有効が必要でした.

% firewall-cmd --add-service=nfs
success

% mount -v -t nfs xx.xx.xx.141:/mnt/disk1 /nfs/disk1
% ls /nfs/disk1
cad  home

無事開通!

/etc/fstabに記述する
% vim /etc/fstab
xx.xx.xx.141:/mnt/disk1 /nfs/disk1 nfs defaults 0 0

ちなみに Ubuntu で nfs を入れるには,ufs-common を使うようです.
% apt install nfs-common


2025年10月29日水曜日

Alma Linux 8 に各種 CAD を入れる

 Alma Linux 9 にて各種 CAD を動かそうと苦労していたけれど,Synopsys Container を使っても動かない CAD があったりするので(例えば WaveView ),結局諦めて Alma Linux 8.10 を入れることに.結論からすると最初から Alma Linux 8 を入れておけばよかったよ.(学生を待たせてしまって大変申し訳ないことをしてしまった)

Alma Linux 9 と異なり OS インストールはGUIで何も問題なく終わる.

学内のDNSサーバーだと名前解決できないので8.8.8.8を加える.

好みの問題だが,ウィンドウマネージャとして XFCE を入れる.次の Web ページの通りにすればよい.

Hspice は tcsh を入れたら動いた.

IC Compiler II を試す.
 libpng12 が要求された.SOURCEFORGE からダウンロード.

すると
% icc2_shell
/cad/synopsys/icc2/Q-2019.12-SP2/linux64/nwtn/bin/icc2_exec: /cad/synopsys/icc2/Q-2019.12-SP2/linux64/nwtn/bin/../shlib/libz.so.1: version `ZLIB_1.2.9' not found (required by /lib64/libpng16.so.16)
といわれる.zlib 1.2.9 を入れよう

ところが入れた zlib が読まれていないのか同じメッセージが出続ける.lib ファイルを指定するには LD_LIBRARY_PATH を指定すればよいらしいがうまくいかなかった.
% export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

LD_PRELOAD を指定したらうまくいった.
% LD_PRELOAD=/usr/local/lib/libz.so.1   /cad/synopsys/icc2/Q-2019.12-SP2/linux64/nwtn/bin/icc2_exec

WaveView を試す.libnsl が要求されたのでインストールする.すると
% wv
/lib64/libfontconfig.so.1: undefined symbol: FT_Done_MM_Var
と表示されて動かない.
次のサイトの通り LD_PRELOAD を指定してみたがうまくいかない.
% LD_PRELOAD=/lib64/libfontconfig.so.1 /cad/synopsys/wv/P-2019.06/platforms/linux64/bin/wv
別の例で同梱されている libfontconfig.so.1 を消してみよとのアドバイスがあった.

% mv /cad/synopsys/wv/P-2019.06/platforms/linux64/lib/libfreetype.so.6 /cad/synopsys/wv/P-2019.06/platforms/linux64/lib/libfreetype.so.6.bak
% wv
うごいた!

Virtuoso はおおよそ Alma Linux 9 と同じであった.以下をリポジトリもしくは rpm からインストール
dnf install ksh redhat-lsb apr-util
(redhad-lsb は epel-release が必要)
dnf install  compat-openssl10-1.0.2o-4.el8_10.1.x86_64.rpm compat-db-headers-4.7.25-28.amzn2.noarch.rpm compat-db47-4.7.25-28.amzn2.x86_64.rpm

% virtuoso
/cad/cadence/IC618.170/bin/virtuoso[113]: /cad/cadence/IC618.170/bin/cds_plat: not found [そのようなファイルやディレクトリはありません]
と表示される場合,cds_plat を動かすための shell (tcsh) が入っていないのでいれてやる.
% dnf install tcsh

こちらの環境では,Virtuoso と Xcelium を同時に PATH 指定していると,Virtuoso が Xcelium に同梱されているシェアードライブラリを見に行ってしまいうまく起動しない. 
% virtuoso
/cad/cadence/IC618.170/tools.lnx86/lib/64bit/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /cad/cadence/XCELIUM2409_Hotfix/tools.lnx86/lib/64bit/libvisadev.so)

これはよくわからなかったので,デフォルトでは Xcelium のPATHを外しておいて,Xceliumがほしいときに設定ファイルを読むことで運用による対応にしてしまった….( LD_LIBRARY_PATH でどうにかできるのかもしれないがうまくいかない…)

2025年10月20日月曜日

GoogleApps@IEEE を退会する

 

IEEEからメールが来た.



要約すると,
GoogleApps@IEEE 使ってくれてありがとう!ディスク容量も200GBに増えるし(注:正確には戻っただけ),Gemini や Notebook LM もつかえるよ,エキサイティングだね!こんな太っ腹サービスが2026年度までは無料だよ!2027年からは年間使用料 USD37 (6000円)請求するよ.
と,こっちは年間 USD833.6 (年会費 USD200 + デジタルライブラリ USD52.8 x 12:12.5万円) 払っているのに実質さらなる値上げである.Google AI Pro (月額2900円) に比べれば安価かもしれないけれど….

GoogleApps@IEEE を大して使っていないなら退会してしまうのも手かもしれない.



スクリーンショットの通りに選択して,"DELETE" でよさそうだ.@ieee.org の E メールアカウントがなくなるのがちょっと寂しい気はするが,なくてもあまり関係ないか.

2025年9月21日日曜日

Synopsys Container を使ってみる

Alma Linux 9 上で IC Compiler 2 (X-2025.06) を使おうとしているのだが,不安定で必ずコアダンプして死ぬ.
% icc2_shell -64 -gui 
(略)
ディレクトリを開こうとすると
(略)
/cad/synopsys/icc2/icc2_ver/bin/icc2_shell: 380 行: 2337728 Illegal instruction     (コアダンプ) ${CONTAINER} ${REAL_EXEC_NAME} -root_path ${SYNOPSYS_ROOT} ${ARGS}
(Illegal instructionってでるのがおかしい気がするが,アーキテクチャの判定はちゃんとLinux64 の様だ)

もういい,仮想環境使うもん,ということで Synopsys Container を使ってみる.Singularity  をベースにしているらしい.今使おうとしているコンテナは CentOS7 らしい.なので ICC2 もそれ相応に古いものにしてみる (Q-2019.12-SP2 にした).

基本的にはマニュアル通りに入れればよい.
・Synopsys Container は Synopsys Installer で普通の CAD と同じようにインストール.
・Singularity は指定のバージョンをダウンロード.インストールは NFS でもローカルでもどちらでも OK.
% cd /cad/synopsys
% mkdir singularity
% cd singularity
% tar -xvfz ~/singularity.tar.gz
% sudo ./singularity_install --prefix=/path/to/singularity

・コンテナの設定ファイルを作成する.
% cd /cad/synopsys/installer/installer_ver/container_setup
% ./container_setup.sh config -source /cad/synopsys/snps_container/container_ver -exe /cad/synopsys/singularity/bin/singularity
./container_setup.sh は .synopsys_container 構成ファイル,デフォルトのコンテナイメージ (CentOS7),そのオートマウントを作成するらしい.

・コンテナの設定ファイルを CAD にデプロイする.
% ./container_setup.sh deploy -target /cad/synopsys/icc2/icc2_ver/
INFO: Update /cad/synopsys/icc2/icc2_ver/.snps_container

この状態で,各CADに -container オプションをつけて起動する.
% icc2_shell -64 -gui -container

Alma Linux 9 で古い IC Compiler 2 が起動した.

注意点(?)
提供されている Singularity の環境では,ユーザーの $HOME が存在するデバイスはパスも再現されてマウントされるが他のデバイスはマウントされていないっぽい.

例えば実態が
/mnt/ssd + /home + /user1
                                      + /user2
                    + /cad + /synopsys
                                  + /cadence

でそれぞれシンボリックリンクを
/home -> /mnt/ssd/home
/cad -> /mnt/ssd/cad
というように作っていると,/home/user1 は Singularity 環境もアクセスできるが,/home/user2,/cad などはアクセスができない./mnt/ssd/home/user2 や /mnt/ssd/cad/synopsys などはアクセスができる. 

多分 container_setup.sh  の設定次第で何をどこにマウントするなどは制御できるとは思われるのだが….

2025年9月20日土曜日

Xcelium 2409 Hotfix 実行時に cds.lib に関してワーニングが出る

 Xcelium 2409 Hotfix を入れて ncverilog を起動したところ以下のようなワーニングが大量に出た.

% ncverilog (略)
(略)
DEFINE cds_assertions ./CDS_ASSERTIONS
|
xmsim: *W,DLCPTH (/cad/cadence/XCELIUM2409/tools/inca/files/cdsvhdl.lib,12): cds.lib Invalid path '/cad/cadence/XCELIUM2409/tools/inca/files/CDS_ASSERTIONS' (cds.lib command ignored).

cdsvhdl.lib を開いてみると,確かに記述は cds.lib っぽいのだが,ワーニングの元がよくわからない.ただファイルがないと文句言っているようだ.

調べてみると確かにファイルはないようだ.ちなみに Xcelium 2409 Base にもない.
% ls /cad/cadence/XCELIUM2409/**/CDS_ASSERTIONS/ 
zsh: no matches found: /cad/cadence/XCELIUM2409/**/CDS_ASSERTIONS/

では前のバージョンでは?と調べるとこちらはある.
% ls /cad/cadence/XCELIUM1909/**/CDS_ASSERTIONS/
/cad/cadence/XCELIUM1909/tools.lnx86/inca/files/CDS_ASSERTIONS/:
cds_assertion_stubs  xm.lnx86.068.pak  xm.lnx8664.068.pak
/cad/cadence/XCELIUM1909/tools.lnx86/inca/files/IEEE_pure/CDS_ASSERTIONS/:
cds_assertion_stubs  xm.lnx86.068.pak  xm.lnx8664.068.pak

もっとよく調べると,1909 には
/cad/cadence/XCELIUM1909/tools/inca/files/CDS_ASSERTIONS
/cad/cadence/XCELIUM1909/tools/inca/files/CDS_ASSERTIONS.src

があるのに,2409 は
/cad/cadence/XCELIUM1909/tools/inca/files/CDS_ASSERTIONS.src
しかない.ソースがコンパイルできていないということ?

しかたないので,src しかないものをすべて Xcelium 1909 からリンクすることに.
% cd /cad/cadence/XCELIUM1909/tools/inca/files/
% ln -s /cad/cadence/XCELIUM1909/tools/inca/files/CDS_ASSERTIONS

これを実行したら変なワーニングは出なくなったけれど,この対応でいいのかはわからない.