반응형

1.cleaning 공정 

세정공정은 약 400~500개의 반도체 메인 공정 중 15% 정도를 차지하는 중요한 공정입니다.

웨이퍼에 외형변화를 일으키기 위해 Fab 공정을 진행하면 웨이퍼 표면에 화학적/물리적 잔류물이 남게 되는데, 이러한 잔류물을 제거하는 공정이 바로 세정(Cleaning)입니다. 웨이퍼 세정을 제대로 하지 않으면 제품의 성능과 신뢰성에 치명적인 악영향을 끼치게 됩니다.

그 결과 수율이 떨어져 다음 공정으로 진행시켜야 할 양품 개수가 적어지고, 제품 품질이 나빠져 고객 불만이 높아지는 등 경영상의 문제로 직결됩니다.

세정은 크게 3가지 방식으로 나눌 수 있습니다. 화학용액을 이용하는 습식세정, 용액 이외의 매체를 이용하는 건식세정, 습식세정과 건식세정의 중간 형태인 증기를 이용하는 증기세정입니다. 

 

2.photo 공정

흔히 포토 리소그래피를 줄여서 포토공정(Photo)이라고 합니다. 이 공정은 웨이퍼 위에 회로 패턴이 담긴 마스크 상을 빛을 이용해 비춰 회로를 그리기 때문에 붙여진 이름입니다. 여기서 패턴을 형성하는 방법은 흑백 사진을 만들 때 필름에 형성된 상을 인화지에 인화하는 것과 유사합니다.

반도체는 집적도가 증가할수록 칩을 구성하는 단위 소자 역시 미세 공정을 사용해 작게 만들어야 하는데요. 미세 회로 패턴 구현 역시 전적으로 포토 공정에 의해 결정되기 때문에 집적도가 높아질수록 포토 공정 기술 또한 세심하고 높은 수준의 기술을 요하게 됩니다.

사진 원판의 역할을 하는 포토마스크 만들기

웨이퍼를 인화지로 만드는 감광액 도포

빛을 통해 웨이퍼에 회로를 그려 넣는 노광

회로 패턴을 형성하는 현상 공정

이 포함됩니다.

 

3.etch 공정

식각(Etching)공정에서는 밑그림 중 불필요한 부분을 없애는 즉, 회로의 패턴 중 필요한 부분만 남기고 불필요한 부분은 깎아내는 작업을 수행합니다. 더 자세히 말하자면 포토(Photo Lithography)공정에서 부식방지막(Photo Resist)을 형성했다면 식각 공정에서는 액체 또는 기체의 etchant를 사용하여 부식을 진행하여 불필요한 부분을 없애는 작업입니다. (이때 etchant 란 부식을 진행하는 물질을 통칭하는 말입니다.) 이러한 에칭 기법은 동판화를 작업하는 미술에서 자주 쓰이는 방법인데요 19세기 화가인 피사로(Camille Pissaro)와 드가(Edgar Degas) 역시 에칭을 이용해서 정교하고 세밀한 선을 살린 작품을 많이 만들어 냈다고 합니다.

 

4.depo

박막(Thin Film)은 기계가 공으로는 실현불가능한 두께인 1마이크로미터(μm) 이하의 얇은 막을 의미합니다.

이런 박막을 웨이퍼 위에 만들어 전기적인 특성을 갖게하는 과정증착(depo)이라고 합니다.

물리기상증착법(PVD), 화학기상증착법(CVD), 스핀 온 글라스(SOG), 도금 등의 증착방법이 있습니다.

 

5.test

이 공정에서는 전기적 신호를 통해 웨이퍼 상의 각각의 칩들이 정상인지 이상이 있는지를 판정하고수선이 가능한 칩은 수선 공정에서 처리하도록 정보를 저장합니다이 때특정 온도에서 발생하는 불량을 잡아내기 위해 상온보다 높은/낮은 온도에 따른 테스트가 병행됩니다. 이외에도 다양한 테스트들을 진행하는 공정입니다.

 

 

 

 

 

 

 

 


출처: https://www.skcareersjournal.com/959 [SK채용 공식 블로그]

반응형
반응형

 

반도체 공정은 크게 전공정과 후공정으로 나누어 집니다.

전공정에는 cleaning, deposition, pr coationg, lithography, etching 등이 있고 

후공정에는 packaging, assembly 등으로 나뉘고 테스트도 포함됩니다.

 

건축과 비유하게 되면

 

 

반도체 회사들은 크게 6가지로 나눌 수 있습니다.

 

이렇게 6가지입니다. IDM은 우리 흔히 알고있는 반도체 대기업들이 포함됩니다. 설계, 생산, 판매 등 종합적으로 반도체를 관리하는 회사들입니다. 국내 IDM은 삼성전자와 하이닉스입니다.

FABLESS는 반도체 생산이 아닌 설계만 하는 회사입니다. 대표적으로 AMD, NVIDIA가 있습니다.

FOUNDERY는 위탁생산업체입니다. 생산 설비만은 갖추고 고객사가 원하는 반도체들을 생산해줍니다. 삼성전자도 foundery 사업을 하고있습니다. 

그외에도 패키징, 테스트, 장비회사등으로 분류할 수 있습니다.

 

직무는 크게 3가지

로 나눌 수 있습니다. 

연구 개발은 기존보다 더 나은 것을 개발하여 회사의 기술력과 이익을 발전시키는 업무이고 생산제조는 양산 수율을 유지하며 제품을 만들고 이슈를 빠르게 해결하는 업무입니다. 

 

각각의 장단점이 존재하고 3가지 업무 모두 중요한 절차입니다.

 

아래 그림은 반도체 공정에서의 2 업무의 역할입니다. 

다음시간에는 FAB이 무엇인지에 대해서 포스팅하겠습니다. 

반응형
반응형

문제링크: https://www.acmicpc.net/problem/1038

 

1038번: 감소하는 수

음이 아닌 정수 X의 자릿수가 가장 큰 자릿수부터 작은 자릿수까지 감소한다면, 그 수를 감소하는 수라고 한다. 예를 들어, 321과 950은 감소하는 수지만, 322와 958은 아니다. N번째 감소하는 수를 ��

www.acmicpc.net

 

많이 고민한 문제입니다.

첫번째로 dp적인 사고로 생각되지 않아 고민하였습니다.

 

저는 가변 배열인 vector를 사용하여 해결하였습니다. 

  1. 1~9 을 미리 vector에 넣고 
  2. 순서대로 자신보다 작은 수를 뒤에 붙여 vector에 다시 넣습니다.
  3. 즉 1인 경우 10을 vector에 2인 경우 20 21 을 vecor에 넣습니다.

이 과정을 반복하며 vector 를 구성하여 문제를 해결했습니다.

 

 

 

 

 

하지만 이문제에는 함정이 존재합니다.

만약 N번째 감소하는 수가 없다면 -1을 출력한다.

위 조건이 함정입니다. 

 

생각해보니 9876543210 << 이상부터는 더이상의 감소하는 수가 존재하지 않습니다.

 

그렇다면 9876543210 은 몇번째 숫자일까요?

 

1의 자리수 일때는 1~9  -> 10C1

2의 자리수 일때는 1 + 2 + ~ + 9 =45  -> 10C2

 

.

.

.

.

9의 자리수 일때는 1 -> 10C10

즉 아래 식만큼 가능합니다.

 

1023입니다.

하지만 하나도 선택하지 않을때를 빼면 1022번까지만 가능합니다. 이후 숫자는 -1 을 출력하게끔 구현해야함

 

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
vector <long long> que;
int n = 0, cnt = 0;


int main() {


	cin >> n;
	if (n > 1022) {
		cout << -1 << endl;
		return 0;
	}
	if (n == 0) {
		cout << 0 << endl;
		return 0;
	}
	for (int i = 1; i <= 9; i++) { //초기값 지정
		que.push_back(i);
		cnt++;
	}
	

	for(int i=0;i<que.size();i++) {
		if (cnt >= n)
			break;
		long long n = que[i];
		
		for (int i = 0; i <= 9; i++) {
			if (n % 10 > i)
				que.push_back(n * 10 + i),cnt++;
			
		}

	}
	cout << que[n-1] << endl;
	return 0;

}

 

반응형
반응형

(안읽으셔도 되요)반도체는 상온에서 전기를 전하는 전도율이 구리 같은 도체와 애자, 유리 같은 부도체(절연체)의 중간 정도이고, 가해진 전압이나 열, 빛의 파장 등에 의해 전도도가 바뀐다. 일반적으로는 규소 결정에 불순물을 넣어서 만든다. 주로 증폭 장치, 계산 장치 등을 구성하는 집적회로를 만드는 데에 쓰인다.  

 

라는 사전 정의입니다.. (너무 어려운말)

 

 

 

 

모든 전자기기에 들어가는 것이 반도체입니다. 

그리고 반도체들도 각각의 종류가 상세하게 나뉘고 

다양한 공정별로 제작이 되어집니다.

 

 

반도체는 물질이며 보통 고체 화학 원소 또는 화합물, 어떤 조건에서는 전기를 전도 할 수 있지만 다른 조건에서는 전기를 전도 할 수 없습니다. 전류 제어를위한 좋은 매체입니다. 라는 뜻입니다.

 

자신이 원할 때 on/off가 가능한 물질이 반도체입니다.

 

기기와 연결되는 카메라, 디스플레이 등이 우리의 눈, 코와 같은 기관들이라면, 반도체의 한종류인 cpu는 사람의 뇌라고 할 수 있습니다. 

 

 

 

반도체는 5가지 목표를 가지고 있습니다.

  • 1. 저전력 소비(Low Power Consumption)
  • 2. 빠른 프로그램밍 작성(High Speed Programming)
  • 3. 긴 내구성, 지구력(Long durability Endurance)
  • 4. 강력한 신뢰성(Strong reliability)
  • 5. 높은 응집성(High Density)

입니다. 

 

각각의 목표들은 서로 상이합니다. 높은 성능을 위해서는 전력 소비가 증가하게 되고 전력 소비를 낮추면 성능이 감소하는 형태입니다. 

그렇기 때문에 이상적인 반도체는 존재할 수 없고, 적절히 기능하는 합리적인 반도체를 개발합니다.

 

다음포스팅에서는 반도체 개발 공정에 대해서 포스팅하겠습니다.

반응형
반응형

이전 포스팅: https://gusdnr69.tistory.com/category/IOT%EA%B0%9C%EB%B0%9C/node.js

 

'IOT개발/node.js' 카테고리의 글 목록

코딩, 개발, 애니덕질

gusdnr69.tistory.com

 

play-sound는  mp3 파일에 한해서 재생이 됩니다.

다양한 음원 파일을 재생할 수 있는 라이브러리를 소개하겠습니다.

 

https://dyclassroom.com/reference-javascript/work-with-audio-in-javascript-using-howler-js

 

Work with audio in JavaScript using Howler.js - Reference JavaScript - DYclassroom | Have fun learning :-)

In this tutorial we will learn about Howler.js which makes working with audio in JavaScript easy and reliable across all platforms. Click here to visit Howler.js GitHub repository. Install If you have Node and NPM installed then use the following command i

dyclassroom.com

 

Howler.js 입니다. 웹 UI를 통해서 mp3외에 다른 형식의 음원파일도 재생이 가능합니다.

 

 

 

 

저는 wav파일을 재생하기 위해서 

node-aplay 

를 사용하였습니다.

 

 

설치 절차

sudo apt-get update
sudo apt-get upgrade
sudo rpi-update
sudo apt-get install alsa-base alsa-utils
sudo npm install node-aplay

 

 

 

예시 코드

var Sound = require('node-aplay');
 
// fire and forget:
new Sound('/path/to/the/file/filename.wav').play();
 
// with ability to pause/resume:
var music = new Sound('/path/to/the/file/filename.wav');
music.play();
 
setTimeout(function () {
    music.pause(); // pause the music after five seconds
}, 5000);
 
setTimeout(function () {
    music.resume(); // and resume it two seconds after pausing
}, 7000);
 
// you can also listen for various callbacks:
music.on('complete' function () {
    console.log('Done with playback!');
});

 

 

 pause나 resume은 미리 변수에 sound 객체를 저장해놓아야만 가능합니다. 

setTimeout 없이 사용하셔도 무방합니다.

 

 

반응형
반응형

 

서류전형과 면접전형으로 진행되었습니다.

7월 한달간 반도체 전반에 대한 교육을 받고 8.1~10.30 3달동안 하이닉스의 협력업체에서 채용전환형 인턴생활을 하는 과정입니다.

 

 

서류 문항은 기존 sk 지원서와 동일하여 쓰는데 크게 어려움을 가지지 않았습니다!

면접은 스터디를 통해서 준비하였습니다.

 

면접은 해당기업별로 진행되었습니다. 자기소개서 위주로 진행이 되었고,  면접관님들이 편안한 분위기에서 대답할  수 도와주셔서 덜 긴장할 수 있었습니다. 

 

해당 카테고리에서는 하이파이브 과정동안의 일상과 교육과정에 대한 포스팅을 하겠습니다.

 

 

 

 

반응형
반응형

문제링크:https://www.acmicpc.net/problem/2688

 

2688번: 줄어들지 않아

문제 어떤 숫자가 줄어들지 않는다는 것은 그 숫자의 각 자리 수보다 그 왼쪽 자리 수가 작거나 같을 때 이다. 예를 들어, 1234는 줄어들지 않는다.  줄어들지 않는 4자리 수를 예를 들어 보면 0011,

www.acmicpc.net

 

전형적인 dp문제입니다. 이전단의 결과값들이 현재 결과값에 영향을 미치기 때문입니다. 

예를 들어 n = 1일때 0 1 2 3 ~~ 9 로 총 10가지 경우의 수입니다.

 

n=2 일때  

0으로 시작할때  0~9 로 10개

1로 시작할때 1~9로 9개

2로 시작할때 2~9로 8개

3로 시작할때 3~9로 7개

.

.

.

9로 시작할때 9~9로 1개

 

for (int k = j; k <= 9; k++)
      dp[i][j] += dp[i - 1][k]; 

와 같은 점화식을 가지게 됩니다.

 

 

 

정답코드입니다. 

#include <iostream>
using namespace std;

long long dp[65][10] = { 0 };
int t = 0, n = 0;

int main() {

	for (int i = 0; i <= 9; i++)
		dp[1][i] = 1;

	for (int i = 2; i <= 64; i++) 
		for (int j = 0; j <= 9; j++) 
			for (int k = j; k <= 9; k++)
				dp[i][j] += dp[i - 1][k];
		
	cin >> t;
	while (t--) {
		cin >> n;
		long long result = 0;
		for (int i = 0; i <= 9; i++)
			result += dp[n][i];
		cout << result << '\n';
	}
}

 

반응형

'알고리즘 > DP' 카테고리의 다른 글

[백준] 1256-사전(C++)  (0) 2020.09.13
[백준] 13398-연속합2(C++)  (0) 2020.09.06
[백준] 11049-행렬 곱셈 순서(C++)  (0) 2020.06.13
[백준] 11066-파일 합치기(C++)  (0) 2020.06.11
[백준] 2602-돌다리 건너기(C++)  (0) 2020.06.10
반응형

문제링크: https://www.acmicpc.net/problem/16236

 

16236번: 아기 상어

N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가��

www.acmicpc.net

 

시뮬레이션 문제입니다. 상어가 먹이를 먹으면서 돌아다니는 시간을 출력하는 문제입니다.

 

 

  • 1. bfs 를 통해서 도달할 수 있는 위치들의 최단거리를 표시합니다. 
  • 2. 배열을 탐색(O(n))하면서 먹을수 있는 먹이이고 최단거리인 먹이를 선택합니다. 
  • 3. 먹이를 선택할때에는 위에 있는 먹이, 왼쪽에 있는 먹이가 우선순위를 가지게 됩니다. 
  • 4. 1~3번을 반복하며 상어가 이동할 수 있는 최대경로를 계산하고 먹을 먹이가 없는 시점에서의 값을 출력합니다. 

 

예외를 처리해주어야 하는게 상어 위치를 9로 만들어 두시게 되면은 만약 상어의 크기가 9보다 커지게 될때 bfs에서 계속 해당 위치를 탐색하며 무한루프에 빠질 수 있습니다. 그부분 조심하시고, 문제의 조건들을 꼼꼼하게 확인하시면 그렇게 어렵지 않은 문제였습니다.

 

 

정답코드입니다.

#include <iostream>
#include <queue>
#include <cstring>
using namespace std;


int n = 0, result = 0;
int sy, sx, ssize = 2, s_ex = 0;
int arr[21][21] = { 0 };
int visited[21][21];
int y_ar[4] = { 0,0,1,-1 };
int x_ar[4] = { 1,-1,0,0 };

void bfs() {

	queue <int> que[2];
	que[0].push(sy);
	que[1].push(sx);
	visited[sy][sx] = 1;
	while (que[0].empty() != 1) {
		int yy = que[0].front();
		int xx = que[1].front();

		que[0].pop(), que[1].pop();

		for (int i = 0; i < 4; i++) {
			int y = y_ar[i] + yy;
			int x = x_ar[i] + xx;

			if(x >=1 && x<=n && y>=1 && y <=n)
				if (visited[y][x] == 0 && arr[y][x] <= ssize) {
					visited[y][x] = visited[yy][xx] + 1;
					que[0].push(y);
					que[1].push(x);

				}
		}

	}
}

bool select_fish() {

	int len = (int)2e9;
	int select_y, select_x;

	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++)
			if (visited[i][j] != 0 && visited[i][j] < len)
				if (ssize > arr[i][j] && arr[i][j] != 0)
					len = visited[i][j], select_y = i, select_x = j;

	if (len != (int)2e9) {

		// 물고기 자리 이동
		arr[sy][sx] = 0;
		sy = select_y;
		sx = select_x;
		arr[sy][sx] = 1000000000;
		result += len - 1;
		s_ex++;
		if (s_ex == ssize)
			s_ex = 0, ssize++;
		return true;
	}
	return false;

}

int main() {
	cin >> n;
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++) {
			cin >> arr[i][j];
			if (arr[i][j] == 9)
				sy = i, sx = j, arr[i][j] = 1000000000;

		}
	while (1) {
		bool jud=false;

		memset(visited, 0, sizeof(visited));
		bfs();

	
		jud = select_fish();
		if (jud == false)
			break;

	}

	cout << result << '\n';
	return 0;
}
반응형

'알고리즘 > 시뮬레이션' 카테고리의 다른 글

[백준] 13459-구슬 탈출(C++)  (2) 2020.08.17
[백준] 16234-인구 이동(C++)  (0) 2020.08.12
[백준] 11559-Puyo Puyo(C++)  (0) 2020.05.03
[백준] 14891-톱니바퀴(C++)  (0) 2020.04.28
[백준] 14500-테트로미노(C++)  (0) 2020.04.14

+ Recent posts