はてなキーワード: Verilogとは
n=1の話をするが組み込みにもちゃんと若い人いるよ。新卒一括採用だからWebみたいに派手じゃないけど。
あと組み込みにも色々あるよ
① CPUにC言語で書く。状態制御とかDI/DOする。割り込みつかってある期間内で処理を終わらせるようにする
② CPUにアセンブラで処理書く。古い製品のCPUはそれでしか書けないとかある。
③ FPGAにVerilog/VHDLで処理書く。①で間に合わない速度が必要なとき。あとA/D変換とか
④ PLCにラダー言語で処理書く。リレーwwwなんだが、何十年も出してる装置とかPLCが中心になっていて今更変えられないので今も需要がある。発注元も昔のやつ参考にするのでPLCで制御することみたいな要求事項がそのまま残ってる。
⑤ 組み込みLinuxに対してC++で処理書く。リアルタイムじゃない。CPU1はこれで、CPU2が①とかある。1と2のデータの受け渡しにFPGA使ったりする
⑥ タッチディスプレイのUIとか。タッチディスプレイの機械売ってるメーカが出してるクソ使いにくいソフトで作る。これで作ると牛丼屋の券売機見たいのができる。
私は3年立たずに逃げたのでもっと他にもあると思う
素人で調べたところだと、
こんな感じで普通の人が知るのは難しそうだ。
全体的に、線で結ばれているものが親子関係なのか包含関係なのかただ近い領域のものなのか曖昧なので意味のあるグラフというよりはキーワードを適当に散りばめて近い領域にあるものを線で結んだお気持ちマップに見える
というか、
ASICやLSIを作ったことある人なら、当たり前すぎることなんだけど、
語弊があるどころかニュアンスが逆なんだよね。
開発者にとって楽になるどころか難しい方向に行くんだよね。
「フロントエンドのみArm命令に置き換えた形」という文言は、
「中身は前のまんまw」「命令セット入れ替えただけなんすわw」「命令デコーダをarm化したSparc64です。」という意味ではなくむしろ逆で、マイクロアーキテクチャが共通になるように、DDRとHBMの差分を見えなくしたりレイテンシを調整したりetc...して、ほとんど全部Verilogを書き直したってことなんだよね。
で、なぜそこまでしてマイクロアーキテクチャを共通化するかっていうと
LSIチップの検証って組み合わせパターンが天文学的数字すぎて分岐網羅とか全然できないんだよね。
ソフトウェア的な分岐網羅に換算したら0.1%となんじゃないかな。
そこでマイクロアーキテクチャを共通化してると、過去チップのLSIテストケースを流用できるわけなんだな。
CPUをVHDL,Verilog,System-Verilogで書いたりした時もあった。
USB,HDMI,電池の充電制御,WiFi,自動車など色々やったが、コンピュータが遠くなっていく感じがある。
FPGAでCPUを書いてOSを起動させたとして、自分の普段の仕事環境が良くなるわけではない。
ソフトウェアでは次々と開発環境が良くなっていくし、自分で使いやすいようにカスタマイズもできる。
でもハードはそうではない。MS Officeは動くがメモリが4GBでカクカク。
作ったハードも自分達が使うわけじゃない。例えば100Gイーサ開発してもその恩恵は得られず1Gbpsが関の山だったりする。
Python,Go,R,C++,Rubyくらいになると書けるがどう動いてるかわからなくなってブラックボックス化する。
社会的には正しいのだが、自分が関わったハードと自分が書いたC/C++のコードを上位から呼び出すのはわかるが、
ハードが変わったらブラックボックスになる。ロジアナやオシロで見てわかるレベルであればいいが。
PandasのTime seriesが時間を扱えるのかと思っていると、ピコ秒が扱えない。
これは1例に過ぎないが、Amazonや本屋で新刊が出ると買って勉強し、ライブラリの公式ドキュメントも読んでいくが、仕事に直結しない。
クラウド使ってディープラーニングのやり方は沢山情報はあるが、CPU内蔵GPUでメモリ4GB+FPGAでやる情報なんてない。
毎日仕事ができなくて凹んでます。元増田の2年目が羨ましいです。
研究室では解析アプリケーションを作るのにC,C++,Fortranをいじってました
また趣味でサーバの立ち上げやWeb系のJavascriptやPHP,Pythonなどもいじっていました。
まったく違う。組み込みとWebとアプリケーションで文化が違ったわけです。
ここからはあくまで私の体験ですが…
まず、組み込み系はハード(接続図)を読めないと話になりませんでした。
CPU、FLASH、SRAM、FPGA、CPLD、アナログ回路、バッファ、それらをつなぐバス、電源、接点、コネクタ、スロット、A/D、D/Aなどなど、
これらがどうつながってるか意識しなくてはいけません。SoCとか行っても接続図読めないと意味ありません。
次に、FPGA・CPLDの設計があります。言語はVerilogかVHDLです。Xilinx、Altera、Actel等のデバイスに書き込みます。
PLDって言うのは言語で書けるハードです。似ているようでCPUと違うので設計にはスキルが必要です。
この段階でシミュレーション(modelsim等)をしてもらいます。
次にCPUです。言語はC,アセンブラ、C++です。でもほとんどがCです。デバイスはルネサスのSHとかです。自分はここで見習いをしてます。
CPUに直接入ってくる信号(接点・バス等)もありますが、前述のFPGA・CPLDから入ってくる信号のほうが多いです。
で、アプリケーション・Web系と何が違うかといえば、ものすごい短期間にいろんなことが起こります。
リアルタイム処理っていうのでしょうか。割り込みとか聞いたことありませんか。
要はOSがないので自分でなんでも考えなきゃいけないわけです。
CPUの検証はMISRA-Cや専用のカバレッジテストツールで行います。
接点の調整とかLCDパネルとかメンテナンスのツールだとかがないと装置に指令を出せません。
これらにもCPUが入っているわけなので別にコードを書く必要があります。組み込み系の仕事です。
これは言語でかけるリレー回路です。リレーってのはスイッチです。
スイッチを操作することで接続されている機械を操作(電源の入り切りとか)します。
これもCPU,PLD等とは全く違う方式(ラダー)で書きます。十分組み込みの仕事です。
ユニット試験では通っても、組み合わせ試験で動かないというのは100%あると思います。
試験の仕事じゃないと思われるでしょうが、自分はここも立派な組み込み系の仕事だと思ってます。
などなど一言で組み込み系の仕事といってもいろいろあるわけです。
上の中の2つ3つを仕事に使えるレベルまで持って行くには10年、20年はかかると言われました。
ここで表題の件なのですが、元増田の人は経験8年なので、例えばFPGAを8年やってきてCを書けと言われても大変だと思います。
特にその後にWeb系の仕事(これも一言で表すにはいろいろジャンルがあると思いますが)をされてきたとのことなので
いろいろとあったのだと思います。逆にずーとやっていた分野のことを任せるといいかもしれません。
まずどんなことをやってきたのか聞いてみたほうがいいと思います。
フリーのプログラマです。月収で200~1500万くらい。年収で3000万~1億くらい。都内のボロいワンルームの1Fに一人で住んでテレビも冷蔵庫も食器もない部屋で毎晩コードを書いているだけです。昼は寝ています。ごはんは隣のコンビニですましています。何かを選ぶ気力も無いです。使っているパソコンはThinkPad X30だけです。これで十分です。有料のソフトは秀丸があれば何もいりません。
欲しいものはなにもないです。行きたいところもないです。会いたい人もいないです。友達も仕事以外では誰もいないです。学生時代の大半はいじめられっこだったので、基本的に人は好きじゃないです。2ちゃんでスレを立ててもだいたい伸びないです。オンラインゲームも人と絡むのがすごい苦手ですぐやめました。惨事の彼女なんているわけないです。セックスは有料でしたことがありますけど、zipの同人誌を見てオナニーしてるほうが気持ちよくて、面倒くさくないと思ったのが感想です。恋をしたこともありますが、多くは色恋営業で、街で声をかけられて、数十万の絵を買わされたり、数千万の紙切れを買わされたりして、契約成立のあとは、一度も会ってくれない女の人に3人ほど恋をしました。一生虹でいいとおもいました。
コードを書くのだけは異常に速いと言われます。Webサイト構築でも、FlashでもAJAXでも、DSP開発でも、PGA/CPLD verilogでも、WindowsやMacでも、JavaでもAirでも、BREWやiアプリとかのケータイアプリでも、iPhoneやAndroidのアプリでも、PS2やPSPのコンソール機のゲーム開発でも、組み込みの独自OSの開発でも、ドライバ開発でも、カスタムCPUのコンパイラでも、なんでもこなしてきました。キモい38歳です。コードを書くだけがとりえです。それだけの人間なんだと毎日思っています。別に幸せでも不幸でもないです。ただ、やりたいこともないです。正直、明日にでも死にたいです。もう死んでいるかもしれません。みなさん、ありがとう。