Back List


ChatGPTとPCBCAD    2023(#01)


「midjourney」とか言うAIが描いたらしい絵を見せられてびっくり仰天した、私もそのうちの一人である。おっかけchatGPTの出力も、特に自然科学や社会科学など教養をちょっと堀り下げてみるくらいの問い対してはこれがまた正確で、まるでクラス一の秀才が米独Wikiと関連のニュースを引きながら組み立てた簡潔なレポートのようだった。さらにその日本語は、日本人がインターネットに日々たれ流すカオスなフレーズ(もうしわけない)に比べると圧倒的に自然で心地よく、まさかこれを機械が話すとか、想像するだに背筋が寒くなるほどの未来に私は敗北した。もともと、演繹こそが是であると信じ日々精進してきた戦後二世/三世にとっては、機械自身がフィーチャーを作るとかなんだか馴染めない部分が昔からAIにはあったのだが、midjourneyやstable-diffusionなど生成AIについて専門家の説明をうかがい見てゆくにつれ、ここまではっきりとcognitive(*1)(もしかしてinductive)な意識が産業を支えうるものなのか、いったいそんなことが本当に可能なのかと、正直ビビリ始めたのが2023年初頭のことである。

だが、それから半年経って、機械にはかなわないが私も(少しは)学習した。それは(それがただ帰納的であるという偏った物見は)あまり当たってはいなかったのである。なんだそんなことかと、皆様には初めからご賢察であったに違いない。


とここまではつかみであって、私が今日突っ込もうと思っているのはそのスーパー検索AIではなく、PCBCADである。先ごろ取引先との雑談で、
「回路基板のアートワークって今あるのと似たような回路でもびっくりするほど高いよねえ。ワーカーの人件費でしょ? 回路パターンを描いてくれるAIとか使えないの? ほら、最近流行りのさあ」
来たぞ。なるほどパターン=絵であるからして、このような連想も普通にあるだろう。
「うーん、まだ難しいんじゃないですかねえ」
なんて答えておくか? それとも...




「それなら絵なんか描くより全然簡単ですよ」

「そうなの? ならなんでやんないの」

「何ていうか..日本じゃ製造業に面倒な人材を残す余裕がまだまだあるみたいで」

「あ、それうちにもあるけど。やっと掴んだ仕事を絶対に離さない老人クラブのことだよね」

「ですよね。実際開発から製造まですべての会社に巣食ってるじゃないですか」

「うーん、身につまされるねえ」

「実は伝統的なPCBCADベンダーって、そんな客を溝からサラうようにしてやっと生きながらえているってのが現状で」(*2)

「え、なんか難しい機能を提供してくれてるんじゃないの?」

「それが全然違うんです。これ私憤も少なからず入ってるんで話半分に聞いてほしいんですが、特に古くから続くPCBCADって、紙の図面の枠の太さとお客の組み合わせを固く守って「いつものとおりです私は知りません」って責任を逃れるためと、あっちの死にかけた老人が何十年か前に決めた名前でこっちのボケた老人がドリルの刃を間違いなく選ぶためと、製造の多様性なんか無視してパターンの幅と間隙をバカ正直に守るためだけにあるんです。見た目以外に機能なんか20年前からちっとも変わってないですね」

「あはは、言うねえ。そんなもんだったの..。で、自動化の話は?」

「あっとすみません、つい熱くなっちゃって。えーと、なんで自動化されてないかってことでしたよね。実はこれずいぶん前からやってるんです。生成AIとは関係なく。例えばExcelにマクロってあるじゃないですか。マウスを使った一つ一つの操作に関数名が付いていてそれを自由に組み立てられるってやつ。あれと同じようなAPIは今どきのPCBCADなら公開していて、ユーザは自由にプログラムできるようになっているんです。PCBCADって操作が限られていて変えられないから、これを使って自動化とか簡単にできちゃうんですよ」

「ふーん、じゃ必要ないからあんまりやってないってだけなの?」

「さすが部長、」このあたりさすがオレ。営業の鏡。

「その "必要ない" ってところなんです。同様の回路なら、同様の形状なら、同様の制限でなら、同じ部署でなら、関連の作業なら..っていうカスタマイズのレベルでは自動化はユーザ側で結構行われていて、でもそれ以上のつまりユニバーサルな自動化は大仕事なだけでなくPCBCADには必要ないって言うか、メリットはあってもコストはそこそこかかるし何より機会が小さすぎて、掛け算するとビジネスにはならないって感じで私は見てますがね」

「機会とメリットとコストの掛け算ねえ。いいこと言うじゃない」

「そりゃもう。逸失利益、御社には掛け算を毎日勉強させてもらってますから」

「なにそれ。皮肉?」

「とんでもない大真面目です。いじめないでくださいよ」

「ぜんぜん違う会社の新規回路を毎日ばりばりアートワークする、みたいな使われ方があまり無いってことかね」

「そう思います。日本じゃ小規模なデザインハウスに可能性があったんでしょうけど、それも実際には特定企業の下請けに貼り付いたところばかりで、改変だったり新規でも似たような回路だったり都市伝説の継承だったり、作業者がただプチプチ単純作業を重ねるだけなのに技術料とか設計費とかって名目で法外な時間費用を計上できる、そんな事業がいまだに生き残ったままなんです。これって今の日本の残念な生産性の典型じゃないですか。さすがに早晩なくなりますよね。あとはあれ、趣味と試作をターゲットにしたネットの一括受注。こっちも実際には外注の寄り合いになっちゃっていて、全体をビジネスとして高効率化しようなんて動きはむしろ敬遠されるだけですね」

「そう言や君んとこがたまに使ってる日野だか八王子だかの外注、なんてったっけ、そこはどうなのよ」

「そうそう、あれはですね..」




などという一瞬の妄想を中断し、私は、
「はあ、どうなんでしょうか」
と答えておいた。大人ですから。





さて、このページの本題はそのようなPCBCADの評論でもない。上の妄想では途中になってしまったが、「カスタマイズからユニバーサルな自動化へ」である。PCBCADは操作の種類が少ない=やることが決まっている、ことはすでに書いた。たとえば3DCADや画像を扱うワーカーたちは、PCBCADのアートワークの作業現場を見て、そこにはたった数種類のオブジェクトしか無いことやフィーチャーが完璧に定まっていることに驚くだろう。操作と動作の種類が極端に少ない、それがPCBCADの特徴なのである。それは、いくつかの決まったメソッドを使うだけで完全な配線のトレースがスクリプトになるということでもある。実際、どのようなPCBCADにもそのようなメソッドとインターフェイスは準備されているし、使っている人も多いだろう。対象を上手に限定し、限界を知って正しく準備しておけば、半日仕事が一瞬にして終わる(こともある)とても便利な機能である。メソッドには多くの場合既存のプログラム言語のAPIが準備されているのでお手軽だ。私がお願いしている外注のひとつにも、SoCとDDRxSDRAMとの接続(BGA同士)にPythonの上でこれを使う作業者が居る。(*3)

ただ残念なのは、彼または彼の周辺が毎年何度もSoCからDDRxSDRAMへとBGA同士をつなぐパターンを新しく描くわけではないということだ。せっかくのプログラムだが、使う機会がほとんど無いのである。そしてこのことは、自動化が進まないという現状の重心を撞いてもいる。
..と、ここでちょっと待った。
ー定義が明確で数の限定された単語で書かれたスクリプトー
そうなのだ。ぐるりと一周してきた感はあるが、ChatGPTは自然言語だけでなくプログラム言語の自動生成も得意なはずだ。もしも、同じプログラム言語で(自然に構造化/階層化されたゆるいXMLのようなものかまたはPythonなど既存のものか)、同じ定義のメソッドを使って書かれたPCBCADの自動配線コードが世界の回路基板の何千分の一か何万分の一でも公開されたとしたら、回路基板のアートワークは、カスタムな一部自動化ではなくユニバーサルな完全自動化によって早々と人間から奪われる作業のひとつになるだろう。

ただしかし、プロプライエタリで伝統的なPCBCADベンダがこの部分の窓(APIを含む)を固く閉ざしているおかげで(*4)、(幸か不幸か)今はまだそんなデータベースは無いに等しいのである(不幸か幸か)。






(*1)
・ビッグデータによる cognitive な解法(IBM:2015年以前)
 ⇒ 非ノイマン型 の注釈(*1)



(*2)
・PCBCADについて
 ⇒ pka09020_https6006119622.html

・PCBCADのSI解析ってどうなのよと考えている方へ
 ⇒ pke88473_https545.html



(*3)
・RubyやPHPを横目になぜかできるだけPythonに頼ってWebサイトを作ろうとしてきたヤツ。勘違いではあったにせよ今は得意顔である。 / ・C++から敢えてCへと退行し頑なにコピペで構造を再生産し続けてきたヤツ。幸運のしっぽをつかむ資格をいつの間にか手にしていた。 / ・アルテラを嫌うあまりVHDLまで捨てVerilogHDLでモジュールを積み上げてきたヤツ。大きなハンデを負ってしまった。



(*4)
このような問いに対しては、「ODB/IPC-2581への対応」へとすり替えて答えるのが彼らの決まりのようだ。スクリプトのように見えなくはないがあくまでそれは「絵」であって、意味のないストロークにすぎない。それではこのページの書き出し「midjourney」に戻ってしまうのだ。


Back List














































Back List


有限オートマトン    2015(#23)


"非ノイマン型" より続く

ある状態と何らかの入力を処理し結果を出力する、そのような仕組みについて、
オートマトン>広義のチューリングマシン>ノイマン型コンピュータ
と、階層をもって整理することがある。この分け方の是非はこれまた難しそうなので横に置いておく。ここでは、「ハードワイヤードステートマシン」と「コンピュータ」とを比較するため、呼び名をそのまま借用することにする。

「ハードワイヤードステートマシン」は、2階層目であって広義のチューリングマシンでないもののひとつ、(出力付き)有限オートマトンに分類することができる。言語理論、正規表現的、などという言葉による解説は、ひとことでこの性質をよく表していると言えるだろう。

(オートマトンではないもの)
-->順序回路(記憶機能)の無いロジック
-->時間が経てば入力に対して出力が1:1で決まる回路
(広義のチューリングマシンではないもの)
-->有限オートマトン
(ノイマン型コンピュータではないもの)
-->非ノイマン型コンピュータ



ステートマシンは、ミーリ・タイプとムーア・タイプとに分類される。共に状態(の遷移)は現状態と新入力との組み合わせで決まるが、出力をどう決定するかが異なる。実際には回路規模や速度が違ってくるが、結果的にはどちらでも良いという場面は実際多く、HDL記述の「クセ」によって選んでしまう事が少なくない。
ムーア・タイプは出力の種類以上に状態が存在する(出力とその順序に合わせて状態を作る)。これに対しミーリ・タイプは同じ状態であっても入力によって出力を変化させるので、状態の数が減る可能性がある。
ムーア・タイプの出力は現状態のマルチプレクスで決まるので、あえてラッチすることはあまりない。一方ミーリ・タイプの出力は現状態と入力との組み合わせで決まるので、回路が複雑になりその遅れへの手当を嫌って一旦ラッチすることが多く、ミーリ・タイプで出力をラッチする記述には2つの見えかたがある。
①状態のalwaysとは別のalwaysで状態と入力から組み合わせてラッチする
②reg宣言した出力ノードを状態のalways中で使う(イベントには記載しない)
ちなみにそえぞれ出力をラッチしない場合は以下のとおり。
①状態のalwaysの外で状態と入力からassignする
②reg宣言しないままのノードを状態のalways中で使う(イベントにも記載が必要)
以下は、ムーア・タイプとミーリ・タイプ(出力は上記ラッチする方の②)の、HDLでの違いの例である。

module seq_circuit
(clock, reset, sw1, sw2, sw3, out); 
input clock, reset; 
input sw1, sw2, sw3; 
output out; 
module seq_circuit
(clock, reset, sw1, sw2, sw3, out); 
 input clock, reset; 
 input sw1, sw2, sw3; 
 output out; 
 reg [1:0]state; 
 reg out;//@OnlyMearly 
 always@
(posedge clock or posedge reset)
begin 
  
  ----- Mealy 
  if(reset == 1'b1)begin 
   state <= 2'b00; out <= 1'b0; 
  end 
  else begin 
   if(state == 2'b00)begin 
    if(sw1 == 1'b1)begin 
     state <= 2'b01; out <= 1'b0; 
    end 
   end 
   else if(state == 2'b01)begin 
    if(sw2 == 1'b1)begin 
     state <= 2'b10; out <= 1'b0; 
    end 
   end  
   else if(state == 2'b10)begin 
    if(sw3 == 1'b1)begin 
     state <= 2'b11; out <= 1'b1; 
    end 
    else begin 
     out <= 1'b0; 
    end 
    else begin 
     if(state == 2'b11)begin 
      out <= 1'b1; 
     end 
    end 
   end 
  end 
  ----- 
  
  ***** Moore 
  if(reset == 1'b1)begin 
   state <= 2'b00; 
  end 
  else begin 
   if(state == 2'b00)begin 
    if(sw1 == 1'b1)begin 
     state <= 2'b10; 
    end 
   end 
   else if(state == 2'b01)begin 
    if(sw2 == 1'b1)begin 
     state <= 2'b10; 
    end 
   end 
   else if(state == 2'b10)begin 
    if(sw3 == 1'b1)begin 
     state <= 2'b11; 
    end 
   end 
  end 
  ***** 
  
 end 
 assign out = 
(state == 2'b11) ? 
 1'b1 : 1'b0;//@OnlyMoore
endmodule 


Back List














































Back List


非ノイマン型    2015(#22)


ノイマン型という呼び名は年々その定義がぼやけてきているらしいが、一般的には、「プログラムとデータをメモリに記憶し、プロセッサが順次これを出し入れして処理を行うという構成」(したがってハーバードアーキテクチャも含む)くらいに捉えて良いようだ。現在コンピュータと呼ばれる装置はほとんどがこの分類の内側に入っている。コンピュータの大きな特徴のひとつに、その重要な部品が、プロセッサ/メモリ/ソフトウエアと明確に分類されることがある。このことによって、それぞれの部品は独立して健全に発展し、そのおかげでコンピュータは今日の規模にまで成長を遂げた。

一方、非ノイマン型はと言うと、ソルバに有機物や量子ビットなどの物理的な挙動を用いたコンピュータを想像することが多いかもしれない。あるは実際に先行しているCMOSロジック、IBMのSyNAPSEチップ(*1)なども有名である。いずれにしても、「超低消費電力で遥かに高い性能」、このようなイメージは、非ノイマン型という呼び名に託された、ぼんやりとした、しかし大きな期待である。

さて、これらノイマン型/非ノイマン型をひとくくりにコンピュータ(入出力機能を備え多様な動作を内部/外部からプログラムできる装置)として見ると、その外に、プリミティブなロジックの組み合わせによって単一(専用)の計算や順序制御を行うハードワイヤードロジック、例えばDSPの一部やステートマシンなどを据えることができる(非ノイマン型と似た向きの性格を備えており境界は曖昧になってきているがこちらはコンピュータではない)。ハードワイヤードロジックには、限定された課題に対してコンピュータの中間的な性能をより高い性能へと置き換える選択肢、という側面がある。また、制御装置においては、コンピュータとハードワイヤードロジックとの比較は、特に信頼性の観点をもって必ず最初に議論されるべき重要な問題である。 → PLC

→ "有限オートマトン" に続く






*1)
ここ数年IBMは、cognitive(経験的認知に基づく)をキーワードに掲げ、現行ノイマン型のままでビッグデータをハンドリングしそれを現実の課題としながら、一方で、やはりCMOSロジックではあるが非ノイマン型のSyNAPSEチップ(4,096 parallel and distributed cores, interconnected in an on-chip mesh network)に関する研究開発にも力を注いでいる。

Introducing a Brain-inspired Computer
TrueNorth's neurons to revolutionize system architecture
By Dharmendra S. Modha
Six years ago, IBM and our university partners embarked on a quest—to build a brain-inspired machine—that at the time appeared impossible. Today, in an article published in Science, we deliver on the DARPA SyNAPSE metric of a one million neuron brain-inspired processor. The chip consumes merely 70 milliwatts, and is capable of 46 billion synaptic operations per second, per watt–literally a synaptic supercomputer in your palm. 

IBM Research:
Brain-inspired Chip
https://www.research.ibm.com
/articles/brain-chip.html


Back List














































Back List


PLC    2015(#21)


三菱電機は、[MELSOFT iQ Works Ver.2] + [MELSEC iQ-F seroes] のCPU基本セット、またはこれにシンプルモーションユニット FX5-40SSC-S を加えて、期間限定のキャンペーンというかたちで提供を開始した。
https://www.mitsubishielectric.co.jp
/fa/products/cnt/plc/
欧州における独インダストリー4.0の風圧も利用し、現状では厳しいとみられている同社PLC事業のテコ入れを図る。

同社は10年前から、「eファクトリー」というテーマで、工場でPLCが収集したデータを整理/蓄積し、「分析」としてこれを絵に見せるというサービスを展開してきた。ソリューション化とPLCの復権、両方からFA事業を支援するという二面作戦である。しかしPLC自体は、産業機器の低迷という地盤沈下はもちろん、技術の孤立と技術者不足、工程のロボット(多重/複雑/小型)化、対するマイコンとロジックデバイスや専用回路の低価格化/標準化、センサ一体型チップ、そしてネットワークを用いたPCとの連携、それら多方面からの逆風によって、20世紀には確保していたその立ち位置を見なおさなければならなくなってきた。

1960年代までの米自動車製造工程では、小規模な閉ループのリレーコントローラがそれぞれのマシンで局所的に使われていた。しかしモデルチェンジのサイクルが短くなるにつれ、リレーコントローラの改修コストは徐々に目立つようになってゆく。その後「コンピュータ」が登場しても、それは工場で用いるにはあまりにも汎用的で(何でもできて)、その分プログラムが大規模すぎて、入出力制御が面倒で、動作環境も当時の工場では厳しかった。(現在のPC、マイコンやロジックデバイスの類と比較してはならない。)
それでも米Modicon社は、1970年を前にして、小さな専用コンピュータを利用したシステムを規格化する。中でも単一で汎用性の無いラダー図にユーザインターフェイスを限定したシステムは、特に日本において単純な動作を必要とする製造機械のユーザに対し、このしくみであれば自分たちも前からよく知っていて完全に制御できるのだと、そのような錯覚ではあるが確信をもたらし、製造現場で最も重要とされる「安心」「堅牢」「間便」といった正のイメージを確立した。
しかし実際には、当初より指摘されているとおり、このシステムもプリミティブには普通のノイマンマシン(ハーバードアーキテクチャ含む)が動いているのであり、したがってラダー図であっても、その線は回路の結線などではでなくプログラムの周期的スキャンである(*1)。そして、それが使われるときには基本ファームウエアがプロセッサのほとんどの能力を隠蔽するということこそが、ラダー図のただひとつのキモなのである。見覚えのあるリレーシステムのようなものを画面に見せることによって、「不安」「脆弱」「複雑」といった問題を見えなくしているのだ。とすれば、PLCの「安心」「堅牢」「間便」の実体とは一体何なのか。それは、「PLCという考え方」なのではなく、ソフトウエアでは基本ファームウエアの隠蔽性と一貫性であり、ハードウエアでは端子の機械的および電気的な保護/サージ対策/EMイミュニティ/電源設計/振動対策/熱設計、そして事業戦略では第一に供給とメンテナンスの長期保証、それに部品の選別や購入方法/テストの充実や構造化、これら地道な(しかし必要な)対策の組合わせがその答と言えるだろう(*2)。

つまり現在通用している名称や考え方を用いて言うならば、PLCはいつでも「高機能」「複雑」「不安」「脆弱」に舵を切ることができ、反対にPCやマイコンはいくらでも「安心」「堅牢」「間便」「低機能」になり得るのである。フィールドエラーを許さない製造工程を市場とするならば、いずれも同じように、半分のコストはこれら中間にあるだろう最適な基本ファームウエアを維持することに費やされ、残り半分のコストは地道なハードウエア対策と戦略と運用に費やされことになるはずだ。
堅牢なハードウエアに一貫性のある基本ファームウエアを載せた汎用マイコンシステムと、アップデート機能や通信/連携、それに伴うネット技術までを備えたPLC。これらの間に境界は無い。実際、そういった製品は現在目に見えて増えてきているのである。





*1)
いくつかの現実が、このラダー図の持つ生来の悩みを代弁している。
ひとつは、これは日本(PLC=ラダー図である国)に限るのだが、「PLC技術者」という呼び名の不思議だ。リレーコントローラをまねることによって誰にでも使えるシステムを目指したはずが、元のリレーコントローラとの種の(生まれの)違いが災いし、実際には特殊なルールと方言を覚えた人間にしか使えなくなってしまったという矛盾が、日本にはまだ消化されないまま残っているのである。
もうひとつは、日本やアジア地域よりも付加価値の高い製造工程が必要なヨーロッパでの使われ方だ。複雑で長い動きをする製造装置の制御には状態遷移や構造化の考え方が適しており、これはそのままでノイマンマシンとの親和性が高く、したがってわざわざ実際の動作を塗り換えて見せるラダー図などではなく、CPUに対して直接的で簡単なSFCが主にPLCでは使われている。教育/玩具向けがSFCであることも多い。
かくして現在の日本では、そのあまりにも歪んでしまったラダー図の世界は、マルチプルな工程を求める製造業界からの不満や批判を一身に受けることとなった。このことは自然な流れではあるとしても、PLCというハードウエアや事業モデルまでもがそのあおりを受け疑問視されているのは行き過ぎである。PLC事業者は、鎧をまとった汎用マイコンシステムのFAへの侵攻を迎え撃つためには、未だ残る「ラダー図の世界に安住するPLC技術者」を一掃し、速やかにラダー図から脱却してその負の遺産を完済するとともに、自らのビジネスの本当の価値と正当性を世間に示し問わなければならないだろう。

*2)
車載半導体においても似たような誤解がたまにあるかもしれない。
「車載グレード」とは、よく言われる物性的な温度範囲のことではあまりない。条件の限定とテストの運用や選別によって市場での事故の確率をいかに減らすか、がメインテーマなのである。


Back List