2022年9月13日火曜日

ランダウアーの原理と集積回路のエネルギー

ランダウアーの原理で盛り上がっていたので調べてみた.

ランダウアーの原理:情報を1bit消去するために必要なエネルギー:k T ln2
k: ボルツマン定数,T:絶対温度

室温だと E_landauer = 1.38e-23 JK-1 * 300K * ln2 = 2.87e-21 J

intel Broadwell-U が13億トランジスタで,ざっくり半分がコア,半分アンコアとしてコア部を構成するのは6.5億トランジスタ,これをざっくり NAND2 換算すると1.4億ロジックゲート,すべての NAND2 で1サイクルあたり 1 E_landauer を消費するとして,サイクルあたり4.02 e-13 J,3 GHz で動いて 1.2e-3 J/s = 1.2 mW といったところ.TDPが15W なので,ランダウアーの原理で消費するエネルギーは全体に比べて1万分の1程度である.

今の集積回路のエネルギーはトランジスタのゲート容量や拡散配線などの寄生抵抗容量で構成されていて,仮に「寄生」成分がない理想的な状況であっても (CMOS) トランジスタのゲート容量は本質的に必要なので,ランダウアーの原理がコンピュータの消費エネルギーを支配する事は当分はなさそう.

2022年9月8日木曜日

ASAP7 のセルライブラリの一覧

 良く忘れるので載せておく.7.5 Track セルです.
# AND-OR
A2O1A1Ixp33_ASAP7_75t_R.gds
A2O1A1O1Ixp25_ASAP7_75t_R.gds
AO21x1_ASAP7_75t_R.gds
AO21x2_ASAP7_75t_R.gds
AO22x1_ASAP7_75t_R.gds
AO22x2_ASAP7_75t_R.gds
AO31x2_ASAP7_75t_R.gds
AO32x1_ASAP7_75t_R.gds
AO32x2_ASAP7_75t_R.gds
AO33x2_ASAP7_75t_R.gds
AO211x2_ASAP7_75t_R.gds
AO221x1_ASAP7_75t_R.gds
AO221x2_ASAP7_75t_R.gds
AO222x2_ASAP7_75t_R.gds
AO322x2_ASAP7_75t_R.gds
AO331x1_ASAP7_75t_R.gds
AO331x2_ASAP7_75t_R.gds
AO332x1_ASAP7_75t_R.gds
AO332x2_ASAP7_75t_R.gds
AO333x1_ASAP7_75t_R.gds
AO333x2_ASAP7_75t_R.gds
# AND-OR-INVERTER
AOI21x1_ASAP7_75t_R.gds
AOI21xp5_ASAP7_75t_R.gds
AOI21xp33_ASAP7_75t_R.gds
AOI22x1_ASAP7_75t_R.gds
AOI22xp5_ASAP7_75t_R.gds
AOI22xp33_ASAP7_75t_R.gds
AOI31xp33_ASAP7_75t_R.gds
AOI31xp67_ASAP7_75t_R.gds
AOI32xp33_ASAP7_75t_R.gds
AOI33xp33_ASAP7_75t_R.gds
AOI211x1_ASAP7_75t_R.gds
AOI211xp5_ASAP7_75t_R.gds
AOI221x1_ASAP7_75t_R.gds
AOI221xp5_ASAP7_75t_R.gds
AOI222xp33_ASAP7_75t_R.gds
AOI311xp33_ASAP7_75t_R.gds
AOI321xp33_ASAP7_75t_R.gds
AOI322xp5_ASAP7_75t_R.gds
AOI331xp33_ASAP7_75t_R.gds
AOI332xp33_ASAP7_75t_R.gds
AOI333xp33_ASAP7_75t_R.gds
# AND2-4 
AND2x2_ASAP7_75t_R.gds
AND2x4_ASAP7_75t_R.gds
AND2x6_ASAP7_75t_R.gds
AND3x1_ASAP7_75t_R.gds
AND3x2_ASAP7_75t_R.gds
AND3x4_ASAP7_75t_R.gds
AND4x1_ASAP7_75t_R.gds
AND4x2_ASAP7_75t_R.gds
AND5x1_ASAP7_75t_R.gds
AND5x2_ASAP7_75t_R.gds
# DFF w/ asyncronous set/reset
ASYNC_DFFHx1_ASAP7_75t_R.gds
# Buffer (f is fast: FO3, other: FO4,5,6)
BUFx2_ASAP7_75t_R.gds
BUFx3_ASAP7_75t_R.gds
BUFx4f_ASAP7_75t_R.gds
BUFx4_ASAP7_75t_R.gds
BUFx5_ASAP7_75t_R.gds
BUFx6f_ASAP7_75t_R.gds
BUFx8_ASAP7_75t_R.gds
BUFx10_ASAP7_75t_R.gds
BUFx12f_ASAP7_75t_R.gds
BUFx12_ASAP7_75t_R.gds
BUFx16f_ASAP7_75t_R.gds
BUFx24_ASAP7_75t_R.gds
# Posedge clk DFF w/ neg. data polarity (QN<=!D)
DFFHQNx1_ASAP7_75t_R.gds
DFFHQNx2_ASAP7_75t_R.gds
DFFHQNx3_ASAP7_75t_R.gds
# Posedge clk DFF w/ pos. data polarity (Q<=D)
DFFHQx4_ASAP7_75t_R.gds
# Negedge clk DFF w/ neg. data polarity (QN<=!D)
DFFLQNx1_ASAP7_75t_R.gds
DFFLQNx2_ASAP7_75t_R.gds
DFFLQNx3_ASAP7_75t_R.gds
# Negedge clk DFF w/ pos. data polarity (Q<=D)
DFFLQx4_ASAP7_75t_R.gds
# D-latch (High-transparent)
DHLx1_ASAP7_75t_R.gds
DHLx2_ASAP7_75t_R.gds
DHLx3_ASAP7_75t_R.gds
# D-latch (Low-transparent)
DLLx1_ASAP7_75t_R.gds
DLLx2_ASAP7_75t_R.gds
DLLx3_ASAP7_75t_R.gds
# Full adder
FAx1_ASAP7_75t_R.gds
# ?? (Not Half adder)
HAxp5_ASAP7_75t_R.gds
# Hold buffer (#stack)
HB1xp67_ASAP7_75t_R.gds
HB2xp67_ASAP7_75t_R.gds
HB3xp67_ASAP7_75t_R.gds
HB4xp67_ASAP7_75t_R.gds
# Integrated clock gating (ICG) cell
ICGx1_ASAP7_75t_R.gds
ICGx2_ASAP7_75t_R.gds
ICGx3_ASAP7_75t_R.gds
# Inverter
INVx1_ASAP7_75t_R.gds
INVx2_ASAP7_75t_R.gds
INVx3_ASAP7_75t_R.gds
INVx4_ASAP7_75t_R.gds
INVx5_ASAP7_75t_R.gds
INVx6_ASAP7_75t_R.gds
INVx8_ASAP7_75t_R.gds
INVx11_ASAP7_75t_R.gds
INVx13_ASAP7_75t_R.gds
INVxp33_ASAP7_75t_R.gds
INVxp67_ASAP7_75t_R.gds
# Majority (inverse, non-inverse)
MAJIxp5_ASAP7_75t_R.gds
MAJx2_ASAP7_75t_R.gds
MAJx3_ASAP7_75t_R.gds
# NAND
NAND2x1p5_ASAP7_75t_R.gds
NAND2x1_ASAP7_75t_R.gds
NAND2x2_ASAP7_75t_R.gds
NAND2xp5_ASAP7_75t_R.gds
NAND2xp33_ASAP7_75t_R.gds
NAND2xp67_ASAP7_75t_R.gds
NAND3x1_ASAP7_75t_R.gds
NAND3x2_ASAP7_75t_R.gds
NAND3xp33_ASAP7_75t_R.gds
NAND4xp25_ASAP7_75t_R.gds
NAND4xp75_ASAP7_75t_R.gds
NAND5xp2_ASAP7_75t_R.gds
# NOR
NOR2x1p5_ASAP7_75t_R.gds
NOR2x1_ASAP7_75t_R.gds
NOR2x2_ASAP7_75t_R.gds
NOR2xp33_ASAP7_75t_R.gds
NOR2xp67_ASAP7_75t_R.gds
NOR3x1_ASAP7_75t_R.gds
NOR3x2_ASAP7_75t_R.gds
NOR3xp33_ASAP7_75t_R.gds
NOR4xp25_ASAP7_75t_R.gds
NOR4xp75_ASAP7_75t_R.gds
NOR5xp2_ASAP7_75t_R.gds
# OR-AND
O2A1O1Ixp5_ASAP7_75t_R.gds
O2A1O1Ixp33_ASAP7_75t_R.gds
OA21x2_ASAP7_75t_R.gds
OA22x2_ASAP7_75t_R.gds
OA31x2_ASAP7_75t_R.gds
OA33x2_ASAP7_75t_R.gds
OA211x2_ASAP7_75t_R.gds
OA221x2_ASAP7_75t_R.gds
OA222x2_ASAP7_75t_R.gds
OA331x1_ASAP7_75t_R.gds
OA331x2_ASAP7_75t_R.gds
OA332x1_ASAP7_75t_R.gds
OA332x2_ASAP7_75t_R.gds
OA333x1_ASAP7_75t_R.gds
OA333x2_ASAP7_75t_R.gds
# OR-AND-INVERTER
OAI21x1_ASAP7_75t_R.gds
OAI21xp5_ASAP7_75t_R.gds
OAI21xp33_ASAP7_75t_R.gds
OAI22x1_ASAP7_75t_R.gds
OAI22xp5_ASAP7_75t_R.gds
OAI22xp33_ASAP7_75t_R.gds
OAI31xp33_ASAP7_75t_R.gds
OAI31xp67_ASAP7_75t_R.gds
OAI32xp33_ASAP7_75t_R.gds
OAI33xp33_ASAP7_75t_R.gds
OAI211xp5_ASAP7_75t_R.gds
OAI221xp5_ASAP7_75t_R.gds
OAI222xp33_ASAP7_75t_R.gds
OAI311xp33_ASAP7_75t_R.gds
OAI321xp33_ASAP7_75t_R.gds
OAI322xp33_ASAP7_75t_R.gds
OAI331xp33_ASAP7_75t_R.gds
OAI332xp33_ASAP7_75t_R.gds
OAI333xp33_ASAP7_75t_R.gds
# OR
OR2x2_ASAP7_75t_R.gds
OR2x4_ASAP7_75t_R.gds
OR2x6_ASAP7_75t_R.gds
OR3x1_ASAP7_75t_R.gds
OR3x2_ASAP7_75t_R.gds
OR3x4_ASAP7_75t_R.gds
OR4x1_ASAP7_75t_R.gds
OR4x2_ASAP7_75t_R.gds
OR5x1_ASAP7_75t_R.gds
OR5x2_ASAP7_75t_R.gds
# Scan-DFF w/ posedge clk
SDFHx1_ASAP7_75t_R.gds
SDFHx2_ASAP7_75t_R.gds
SDFHx3_ASAP7_75t_R.gds
SDFHx4_ASAP7_75t_R.gds
# Scan-DFF w/ negedge clk
SDFLx1_ASAP7_75t_R.gds
SDFLx2_ASAP7_75t_R.gds
SDFLx3_ASAP7_75t_R.gds
SDFLx4_ASAP7_75t_R.gds
# Tie cell
TIEHIx1_ASAP7_75t_R.gds
TIELOx1_ASAP7_75t_R.gds
# XOR, XNOR
XNOR2x1_ASAP7_75t_R.gds
XNOR2x2_ASAP7_75t_R.gds
XNOR2xp5_ASAP7_75t_R.gds
XOR2x1_ASAP7_75t_R.gds
XOR2x2_ASAP7_75t_R.gds
XOR2xp5_ASAP7_75t_R.gds

2022年8月24日水曜日

Google Siteを公開する

新しい Google Site に移行してから,Site が検索結果に表示されなくて困っていた.原因は Google Site の情報が Google Drive 上で非共有になっていたためだった.Google Drive で Google Site の情報を格納しているファイルを選択し,右側のメニューから「アクセスを管理」→「公開済みサイト」→「公開」を選ぶと Google 未ログインでもアクセスできるようになった.

自分自身は常に Google アカウントでログインしているから検索結果に出てくるのだが,非ログインで表示されなくてようやく気がついた.

2022年7月30日土曜日

作成したWebページを検索エンジンに表示させる (Google Search Consoleを使う)

とある国際会議の Web ページを作成したのだが Google 検索でヒットしない.しばらく放っておけばクロールされるのかもしれないが,手動で登録するには Google Search Console を使うらしい.


やるべき事は以下の通り.

・Google Search Console に目的のページを入力して自分の Google アカウントがサイトの所有権を持っているか確認する.

・所有権がない場合,所有権を認識するための HTML を Google Search Console からダウンロードし,目的のサイトに FTP などでアップする.

・Google が上記 HTML を認識したらGoogle Search Console で目的のサイトの検索パフォーマンスなどが表示できるようになる.

・クローラが Web サイトの構造を認識できるサイトマップを用意する.SEO 対策であれば XML や HTML で記述すべきらしいが Text 形式でアップした HTML の URL をリストアップするのでもよいみたい.

・アップしたサイトマップを Google Search Console 経由で登録する.ステータスが「成功しました」になればOK.

今回のケースは,サイトマップを登録したら則検索結果に反映されるようになった.ただ,学会名と開催年の間にスペースを入れないと見付からないけれど….

2022年7月29日金曜日

XREA のレンタルサーバーに Mediawiki を入れる

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

いくつかつまずいたのでメモ
2022/07/29での最新版は1.38.2だが,現地点の XREA では php-xml が入っていないかうまく呼び出せずファイルのアップロードに失敗する.(XMLReaderが無くてファイルフォーマットを検知できない).なのでこの問題の無い 1.31 を選ぶ.セキュリティの問題は目をつぶろう…( .htaccess とログインパスワードの2重に鍵をかけておこう)

1.31だとファイルはアップロードできるが画像表示に失敗する.どうも/image/.htaccressの記述に問題があるようなので,
Options +FollowSymLinks
の記述をコメントアウトする.

XREA のレンタルサーバーを借りると勝手に .com ドメインを作ってくれるのだが次年度以降費用がかかる.XREA のサブドメインだけにすれば費用はかからないが,SSL が使えない.
どうにかできるのかもしれないが,知識が無いのでどうしたものか.

2022年6月22日水曜日

Primelib は SiliconSmart と同じ

 タイトルそのまま.同じスクリプトがそのまま動きます.むしろ起動時に
> Reading  /cad/synopsys/primelib/T-2022.03-1/etc/sis.err...done
なんてログが出てくるので,「さては SiliconSmart だな,テメー」,という気分になります.

2022年6月3日金曜日

インターンシップの思い出

唐突に,1x年前の学部時代のインターンシップの事を思い出したので書いてみる.もう時効だよね.当時まだ赤かった頃です.

・統合して4年経つのに旧M,旧Hと言う言葉が普通に使われる.福利厚生も違うという噂.
・技術者数に対してCADのライセンスが全く足りない.そのため技術者はライセンスサーバーをポーリングするスクリプトを書いて,ライセンスを取れたら仕事をするという感じだった.
・上記のため,回路設計のためのシミュレータ(Cadence ncverilog)がほとんど使えない.仕方が無いので別のマイナーメーカーの設計ツールを利用していた(Novas debussy).手持ちのノートPCにインストールした Veritak の方が便利だった始末.
→ debussy は使えると便利で,後継(?)の Veridi をたまに利用するようになった.
・前年度落選したベンダーが翌年営業攻勢をかけるため使えるCADが年度ごとに変わる.当時は意味を理解していなかったが,今思うと毎年習熟すべき CAD が変わるとか習熟コストを考えると非効率的すぎるのでは.
・技術者は忙しいのか,メンターさん含めてあまりこまめに見てもらえなかった.朝から晩まで会議だったり.派遣の方が一番優しかった気がする.これは部署や時期にもよるだろう.
・いっぽうでたばこ休憩が多かった.
・食堂がキツキツなうえにとにかくご飯がおいしくなかった.
・昼休憩後のトイレの個室が空いているところを見たことがない.寝てる?
・寮の食堂が量は多いわおいしいわで天国だった.お風呂も広かった.
・8時出社して20時帰寮して22時ぐらいまで試行錯誤していた.

3週間かけてI2Cの仕様書を理解してバスマスタ・スレーブのRTLを書く課題で,半泣きだったけれどステートマシンの理解がきちんとできたのでそういう意味では大変よかった.大学院生向けの課題だと聞いて後で泣いた.ここには絶対就職しないとも思った.事業所はなくなった.
青くなった今はよくなっていると思います,たぶん.

2022年5月28日土曜日

Setup search inside SiliconSmart

Flip-Flop の遅延特性のうち,Setup time の定義は2つある.
(1) C2Q 遅延の最小値から C2Q 遅延が 3~5% 悪化した点の D2C 遅延を Setup とする.
(2) D2Q 遅延が最小となる D2C 遅延を Setup とする.

広く認識されているのは (1) で,(2) はマイナーなイメージ.多くの人が参照している CMOS VLSI Design では (1) と (2) の両方を上げて,(2)でよいのではと述べている.

実際のキャラクタライザではどうしているのか調べたところ,SiliconSmart では D2C 遅延を変更し Q 出力が失敗する直前を探す探査をしているとマニュアルに書かれていた((1),(2)とも違う動き).
なお SiliconSmart が吐き出した SPICE ネットリストを見ると,SiliconSmart 自身は HSPICE による Setup の bisection 探査を呼び出していて,HSPICE の内部アルゴリズムが Setup を調べてレポートしているようだ.

Calibre PEX を使ってみる

とあるプロセスのプロセスパラメータがわからないので,個々の要素の抵抗容量を見積もりたい(リバースエンジニアリング?).ルールファイルが暗号化されているので生の値はわからないので,Calibre PEX の見積もり結果を RVE で解析してみる.

まず前提として,Calibre で RC 抽出する.今回は xACT を使った.xRC でもいけるのかはわからない.xACT の起動方法はこちら.

次に,レイアウトビューアから RVE を起動する.Virtuoso でもかまわないし,Calibre DESIGNrevでもかまわない.Database Type に PEX を選択し,RC抽出時に生成されるsvdbを指定する.



Net ごとにRC抽出結果が表示される.それぞれ
R Count:抽出された抵抗の素子数
C:固有容量値
CC:他ネットへのカップリング容量
C+CC:容量総和
となる.

ネット名をダブルクリックすると詳細を解析できる.VSSを選択してみる.



CCを選ぶと,VSSとカップリングしているネット名とカップリング容量が表示される.



Pt-to-Pt Res. を選ぶと,ネットもしくはピン間の抵抗の総和を計算してくれる.またレイアウトに抵抗値と経路も表示してくれる.("5"の左横のZ状の黄色線が経路)

2022年5月21日土曜日

VNC で画面が真っ黒になる

Cent OS7 のマシンに Windows10 PC で VNC 接続をしたいが,接続すると画面が真っ黒になる.
CentOS (server):TigerVNC 64bit v1.8.0
Windows (client):UltraVNC 1.3.81

~/.vnc/xstartup に
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
を追記したら XFCE4 セッションが見えるようになった.

CentOSマシンは同じで,以前のWindows10マシン@UltraVNC 1.2.3.0 では unset しなくてもよかったのだが,なぜかクライアント側ではなくサーバー側の変更が必要になってしまった.

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
については,今となっては TigerVNC は xstartup や同一アカウントによる複数の Xvnc セッションのサポートをしていないので不要(なはず)らしい.一方で過去にこのようなサポートを必要とした時に,個々の Xvnc ごとに D-Bus セッションバスインスタンスを分離するために必要であったと言うお話が書かれていた.互換性のためにも unset はした方がよいとのことだった.
https://groups.google.com/g/tigervnc-users/c/8s4pLFNHitA