「EMC」を含む日記 RSS

はてなキーワード: EMCとは

2022-11-10

日本半導体復権出来るかどうか

圧倒的に足りてない物


半導体設計する為のソフトEDAソフト

Webのようにオープンソース設計ソフトはない。

cadence、synopsysという米国企業がほぼ独占している。

なんで重要かというと、色々理由はあるが、1例を上げると製造した時に問題が起こらないかデザインルールをチェックする。

TSMCが新しい○nmプロセスを出すときは、必ずCacence、Synopsysが対応したとプレスリリースを出している。

デザインルールをチェックしない場合、配線間が短く設計し過ぎていてショートして最悪チップが動かないといった自体になる。

ちなみに中国EDA企業は立ち上げ出来てない(一応中国国内EDAベンダーはあるが)


日本独自に2nmプロセスを立ち上げるとして、当たり前だがCadenceかSynopsysに対応してもらう、ということになるはずだ。

日本ソフトウェアを立ち上げるのは流石に難しいのではないだろうか。


Cadence、Synopsysともライセンス量が馬鹿みたいに高い。

1チップ作るのに○億と量産前に飛んでいく。

CPUサーバー上でシミュレーターを動かす方法もあるが、先端ロジックだとトランジスタ数が多くなりすぎて、エミュレータを使わないとまともに検証が出来ない。

エミュレータFPGAみたいなもので、実チップまでは早くならないがシミュレーターより断然早い。

Cadence、Synopsysともエミュレータも出しているが、こちらも高い。ポンポン買えるものでもない。


チップの次はボード設計する為のソフトや、熱シミュレーターEMCなど必要になる。

ボードはなんとかしようと思えば出来るはず・・・。先端の高密度はCadence、Altium使いたいが。

ちなみにAltiumに関する書籍日本にはないが、中国では何冊も出ている。

ボード設計チップより楽に解析されるので優先度は低い。


設計したチップを使ってくれる市場対応するミドルウェア

先端ロジック設計する会社製造する工場を作ったとして、作った物が売れないと意味がない。

何を作るのか、だ。

しかも今時の先端ロジックは金がかかりすぎて、グローバルで億単位で売らないと半導体にかかる費用がペイしない。

車に沢山半導体が使われるんだということで報道されるが、台数が少ないので、後回しにされて、半導体不足が解消しないってのは昨今の状況だった。

高温まで対応するなど要求スペックが厳しいわりに、数が売れないので半導体企業としては美味しくない。

PS5の台数でも厳しいはずだ。(PS5は売れば売るほど赤字だし)

スマホほど単価が高くて、体積が小さいの輸送費がかからない、そんなものがないといけない。


AI向けはまだまだどれだけ演算能力があっても足りないので、そっち向けはありかもしれない。

ただチップを作っただけでは動かず、ドライバーミドルウェア必要になる。

インテルがやったようにCUDAからコンバートするソフトを用意するなども必要だろう。

それだけやっても、市場がないかもしれない。

相当性能高いチップを作ったとしても、国内市場だけでペイしないだろう。

ソフトウェアエンジニアの方々も、チップが相当性能高くても携わりたくないのではないか

NVIDIAGPUを8個とか、数増やしてどっこいどっこいの性能のチップなら、わざわざ国産チップ用にソフトを作る必要がない。

2021-03-14

anond:20210314005638

俺もツイートの人の過去TLを読んで頭を抱えた、これが25歳のやることかと

100V直結で危ないことやり過ぎ、安全おざなりすぎ、EMC全く分かってなさ過ぎ

こんなん会社でやってたら危なっかしくて即研修詰めになるわ

まず低圧電源載ってる装置メーカーに入るか、大学電気実験教科書買ってその通りに作るか、電気主任技術者なり電気工事士なりの勉強してこいって思った

2012-07-28

シェル操作課題 SQLによる解答例

シェル操作課題 (cut, sort, uniq などで集計を行う) 設問編 - Yamashiro0217の日記の解答例です。MySQL 5.5です。

準備
mysql> CREATE TABLE log (
    ->   id          BIGINT PRIMARY KEY AUTO_INCREMENT,
    ->   server_host VARCHAR(30),
    ->   access_time DATETIME,
    ->   user_id     INT,
    ->   access_url  VARCHAR(191)
    -> );
Query OK, 0 rows affected (0.00 sec)

mysql> LOAD DATA LOCAL INFILE 'log.csv'
    -> INTO TABLE log
    -> FIELDS TERMINATED BY ','
    -> (server_host, @unixtime, user_id, access_url)
    -> SET access_time = FROM_UNIXTIME(@unixtime);
Query OK, 9 rows affected (0.01 sec)
Records: 9  Deleted: 0  Skipped: 0  Warnings: 0
問1 このファイルを表示しろ
mysqlSELECT server_host, access_time, user_id, access_url
    -> FROM log;
+-------------+---------------------+---------+--------------+
| server_host | access_time         | user_id | access_url   |
+-------------+---------------------+---------+--------------+
| server1     | 2012-07-27 13:25:24 |      30 | /video.php   |
| server2     | 2012-07-27 13:25:10 |      20 | /profile.php |
| server3     | 2012-07-27 13:25:15 |       7 | /login.php   |
| server1     | 2012-07-27 13:25:05 |       8 | /profile.php |
| server2     | 2012-07-27 13:26:45 |      35 | /profile.php |
| server2     | 2012-07-27 13:25:10 |      20 | /profile.php |
| server3     | 2012-07-27 13:26:45 |      30 | /login.php   |
| server4     | 2012-07-27 13:27:05 |      12 | /video.php   |
| server1     | 2012-07-27 13:27:45 |       7 | /video.php   |
+-------------+---------------------+---------+--------------+
9 rows in set (0.00 sec)
問2 このファイルからサーバー名とアクセス先だけ表示しろ
mysqlSELECT server_host, access_url
    -> FROM log;
+-------------+--------------+
| server_host | access_url   |
+-------------+--------------+
| server1     | /video.php   |
| server2     | /profile.php |
| server3     | /login.php   |
| server1     | /profile.php |
| server2     | /profile.php |
| server2     | /profile.php |
| server3     | /login.php   |
| server4     | /video.php   |
| server1     | /video.php   |
+-------------+--------------+
9 rows in set (0.00 sec)
問3 このファイルからserver4の行だけ表示しろ
mysql> CREATE INDEX log_ix1 ON log (server_host);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysqlSELECT server_host, access_time, user_id, access_url
    -> FROM log
    -> WHERE server_host = 'server4';
+-------------+---------------------+---------+------------+
| server_host | access_time         | user_id | access_url |
+-------------+---------------------+---------+------------+
| server4     | 2012-07-27 13:27:05 |      12 | /video.php |
+-------------+---------------------+---------+------------+
1 row in set (0.00 sec)

インデックスを作らなかった場合は減点します。

問4 このファイルの行数を表示しろ
mysqlSELECT COUNT(*)
    -> FROM log;
+----------+
| COUNT(*) |
+----------+
|        9 |
+----------+
1 row in set (0.00 sec)
問5 このファイルサーバー名、ユーザーIDの昇順で5行だけ表示しろ
mysqlSELECT server_host, access_time, user_id, access_url
    -> FROM log
    -> ORDER BY server_host, user_id
    -> LIMIT 5;
+-------------+---------------------+---------+--------------+
| server_host | access_time         | user_id | access_url   |
+-------------+---------------------+---------+--------------+
| server1     | 2012-07-27 13:27:45 |       7 | /video.php   |
| server1     | 2012-07-27 13:25:05 |       8 | /profile.php |
| server1     | 2012-07-27 13:25:24 |      30 | /video.php   |
| server2     | 2012-07-27 13:25:10 |      20 | /profile.php |
| server2     | 2012-07-27 13:25:10 |      20 | /profile.php |
+-------------+---------------------+---------+--------------+
5 rows in set (0.00 sec)
問6 このファイルには重複行がある。重複行はまとめて数え行数を表示しろ
mysqlSELECT COUNT(DISTINCT server_host, access_time, user_id, access_url)
    -> FROM log;
+---------------------------------------------------------------+
| COUNT(DISTINCT server_host, access_time, user_id, access_url) |
+---------------------------------------------------------------+
|                                                             8 |
+---------------------------------------------------------------+
1 row in set (0.00 sec)

COUNT関数の中にDISTINCTを書けるのは覚えておくと便利です。

問7 このログのUU(ユニークユーザー)数を表示しろ
mysqlSELECT COUNT(DISTINCT user_id)
    -> FROM log;
+-------------------------+
| COUNT(DISTINCT user_id) |
+-------------------------+
|                       6 |
+-------------------------+
1 row in set (0.00 sec)
問8 このログアクセス先ごとにアクセス数を数え上位1つを表示しろ
mysqlSELECT access_url, COUNT(*)
    -> FROM log
    -> GROUP BY access_url
    -> ORDER BY COUNT(*) DESC
    -> LIMIT 1;
+--------------+----------+
| access_url   | COUNT(*) |
+--------------+----------+
| /profile.php |        4 |
+--------------+----------+
1 row in set (0.00 sec)
問9 このログのserverという文字列をxxxという文字列に変え、サーバー毎のアクセス数を表示しろ
mysqlSELECT REPLACE(server_host, 'server', 'xxx'), COUNT(*)
    -> FROM log
    -> GROUP BY server_host;
+---------------------------------------+----------+
| REPLACE(server_host, 'server', 'xxx') | COUNT(*) |
+---------------------------------------+----------+
| xxx1                                  |        3 |
| xxx2                                  |        3 |
| xxx3                                  |        2 |
| xxx4                                  |        1 |
+---------------------------------------+----------+
4 rows in set (0.00 sec)
10 このログユーザーID10以上の人のユニークユーザーIDユーザーIDソートして表示しろ
mysqlSELECT DISTINCT user_id
    -> FROM log
    -> WHERE user_id >= 10
    -> ORDER BY user_id;
+---------+
| user_id |
+---------+
|      12 |
|      20 |
|      30 |
|      35 |
+---------+
4 rows in set (0.00 sec)
個人的な感触
 
ログイン ユーザー登録
ようこそ ゲスト さん