반응형

Allegro System Capture를 실행하고 라이센스를 Default 선택하면 OrCAD Capture와 같이 되돌리는 GUI command가 없다.

 

 

반응형

 

그래서 Default 로 선택을 하면 다시 라이선스를 변경할 방법이 없다.

 

해결방법은 System Capture를 실행하고 아래와 같이 tcl 코드를 입력한 후 재시작 하면 된다.

Tcl> cps::resetLicenseCache

 

 

반응형
반응형

 

(Blind / Buried Via(=bbvia) 에 대해서, 그리고 직접 만들기)

https://ansan-survivor.tistory.com/98

 

[PCB Editor] OrCAD PCB Editor, B/B(blind/buried) via 만들기. (layer내 파 묻힌 여러 via 만들기)

간단히 용어를 정리하면, blind via는 via인데 한쪽만 surface까지 뚫린 via. buried via는 완전 내측 layer만 뚫려있는 via. 여러 층에 복잡한 Via를 만들 때, 이와 같은 기능이 유용할 수 있다. 아래 영상을

ansan-survivor.tistory.com

 

고밀도 High Density Layer PCB (HDL PCB)를 설계할 때 bbvia를 자주 사용하게 되는데, 여기서는 이 bbvia를 전체적으로 쉽게 생성하고, Layer의 인식을 쉽게 라벨을 붙이고 보여줄 수 있도록 설정, 배치방법에 대한 것이다.

 

 

  테스트로 만들 bbvia에 대한 Layer는 아래와 같이 8층짜리 Layer이다.

  최초 사용 via는 하나의 Through Via밖에 없다.

 

 

 

1. 자동으로 인접한 층에 대하여 BBvia 생성하기 (아래 참고)

 

https://ansan-survivor.tistory.com/620

 

[PCB Editor] OrCAD / Allegro PCB 자동으로 B/B via(Blind/Buried Via) 만들기 (auto define B/B via)

B/B via를 수동으로 만드는 방법이 있지만, 빠르게 자동생성하는 방법이 있다. 수동으로 만드는 방법은 아래 참고 ansan-survivor.tistory.com/98 [PCB Editor] OrCAD PCB Editor, B/B(blind/buried) via 만들기...

ansan-survivor.tistory.com

    * 그러나 인접한 Layer에 대한 Buried Via만 생성하려면 아래와 같이 한다.

    이제 Constraint Manager의 Physical에서 확인하면 아래와 같이 자동으로 인접 Layer에 대해 bbvia가 생성된다.

 

 

 

2. Via의 우선순위를 정한다. (나열되어있는건 Via 배치 순위를 정하므로 중요하다)

 

    2-1. Through Via가 맨위에 있다면 Via를 배치할 때 기본으로 Through via가 생성된다. 그러면 매번 선택 Via를 변경해야 함으로 귀찮다.

계속 ... 을 눌러서 bbvia를 선택해야함 아니면 Through Hole via가 배치된다.

 

 

    2-2.  우선순위를 Through Via를 맨 뒤로 보내면 기본으로 bbvia가 배치가 된다. 그러면 Top에서 다른 Layer까지 갈 때 자동으로 BBvia가 배치되면서 이동한다.

그냥 더블클릭만으로 알아서 bbvia가 배치된다.

 

반응형

 

 

3. 위처럼 Layer에 내가 정한 Label (L1 : L2 , L2 : L3 등등)을 붙이고 싶은경우 Cross-Section Editor에서 Layer ID를 수정하면 된다.

    Design Parameter의 Display탭의 Drill labels을 체크하면 위 그림처럼 Layer ID가 표시 된다.

 

 

4. BBvia의 Constraint Manager를 통해 Same Net Spacing을 정하면 DRC Rule만큼 간격을 정해서 배치 가능하다.

클릭 시 확대

    Same net spacing은 아래와 같이 기능을 켜두어야 적용 된다. (Analyze - Analysis Mode - 설정)

 

5. 드릴 테이블을 뽑아보면 각각 bbvia에 관한 테이블도 함께 나온다.

반응형
반응형

(MariaDB 설치 방법은 아래 참고)

https://ansan-survivor.tistory.com/1185

 

[CentOS 7] 리눅스 Maria DB(마리아DB), MySQL 설치하기, MySQL 계정 생성 암호 설정

MariaDB를 새로 설치할때, 기존의 것과 충돌 방지를 위해 삭제명령을 한번 해주면 좋다. 삭제 방법은 아래 참고. https://ansan-survivor.tistory.com/1184 [CentOS 7] 리눅스 Maria DB(마리아DB), MySQL 제거하기..

ansan-survivor.tistory.com

 

 

MariaDB(MySQL)을 구축하고나서 외부에서 접속을 해보면 접속이 되질 않는다.

그 이유는 mariaDB는 default로 외부접속을 차단해놨기 때문이다.

 

 

 

이를 root 외부접속 허용하는 방법이다.

 

1. 리눅스에서 root계정으로 접속

$ mysql -u root -p

 

 

2. 아래 명령을 순차적으로 입력한다. (비밀번호는 본인이 설정한 root 비밀번호)

use mysql

grant all privileges on *.* to 'root'@'%'identified by '비밀번호';

flush privileges;

    그리고 나서 mysql을 종료

exit

 

 

3. MySQL을 재시작

sudo systemctl restart mariadb.service

 

반응형

 

(결과)

윈도우에서 MySQL Workbench로 접속하니 잘 접속이 되었다.

반응형
반응형

SQL문으로 버전확인

> SELECT VERSION():

 

리눅스 Shell에서 버전 확인

$ mysql -V

 

반응형

 

 

윈도우에서 버전 확인

(윈도우에서는 자동으로 환경변수 등록이 되지 않기 때문에 mysql.exe 파일이 설치된 위치를 찾아야 한다.)

C:\Program Files\MySQL\MySQL Workbench 8.0 CE

윈도우 cmd 창으로 해당 경로로 이동 후

cd C:\Program Files\MySQL\MySQL Workbench 8.0 CE

버전확인 명령어 입력

mysql.exe --version

반응형
반응형

SQL문에 다음 명령을 넣으면 확인 가능하다.

SHOW GLOBAL VARIABLES LIKE 'PORT';

 

 

반응형
반응형

앞서 구조체에 대한 설명이 있다.

https://ansan-survivor.tistory.com/1331

 

[C언어] 구조체(struct) 에 대해서, C언어 구조체란? 구조체 사용방법, 구조체 선언과 동시에 초기화

구조체(struct)란?  - 여러 자료형(int, double 등)을 하나로 묶어서 표현할 수 있도록 함.  - struct [자료형] 형태. 즉, 사용자 정의 자료형을 만듦.  - 구조체를 만들면 여러 자료형을 담고 있는 구조

ansan-survivor.tistory.com

 

이 구조체에 대한 인스턴스를 변수 하나가 아닌 배열로 선언이 가능하다.

아래는 arr[3] 으로 배열 3개를 만들어 각각 구조체 인스턴스가 하나씩 들어간 형태이다.

#define _CRT_SECURE_NO_WARNINGS // visual studio 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>

struct point
{
	int xpos;
	int ypos;
};

int main()
{
	// point구조체의 인스턴스로 배열선언
	struct point arr[3];
	int i = 0;

	for (i=0;i<3;i++)
	{
		printf("점 좌표 입력:");
		scanf("%d %d", &arr[i].xpos, &arr[i].ypos);
	}

	for (i = 0; i < 3; i++)
	{
		printf("[%d, %d]", arr[i].xpos, arr[i].ypos);
	}

	return 0;
}
반응형

결과를 보면 arr[0]에 xpos, ypos 그리고 나머지 arr[1], arr[2]에도 다 들어가있다.

그것을 결과로 출력한 것.

 

 

여러 타입(Type) 자료형이 들어가있는 구조체(Struct)의 선언 및 바로 초기화

#include <stdio.h>

struct person
{
	char name[20];
	char phoneNum[20];
	int age;
};

int main()
{
	// 구조체 배열 인스턴스를 선언과 동시에 초기화 시키기 (초기값 부여)
	struct person arr[3] = {
		{"jack", "010-1234-4323", 31},
		{"tom", "010-4321-4323", 21},
		{"tom", "010-1646-4323", 45}
	};

	int i;

	for (i=0;i<3;i++)
	{
		printf("%s %s %d \n", arr[i].name, arr[i].phoneNum, arr[i].age);
	}

	return 0;
}

 

 

 

반응형
반응형

DFM은 설계단계에서 제조공정까지 고려하여 설계를 할 수 있도록 Rule을 설정해주는 기능이다.

사용 방법은 아래)

https://ansan-survivor.tistory.com/938

 

[PCB Editor] [DFM] OrCAD / Allegro PCB Design True DFM Wizard 사용하기, DFM 마법사 사용하기

1. Setup - DesignTrue DFM Wizard 2. Wizard 진행 2-1. Welcome 2-2. Verify Stackup Names 2-3. Stackup의 타입 지정. 위 PCB는 Primary 부분만 Rigid이고, 나머지는 Flex의 속성을 갖음 2-4. Template 지정..

ansan-survivor.tistory.com

https://ansan-survivor.tistory.com/765

 

[PCB Editor] [DFM] Allegro PCB DFA Constraints Spreadsheet 사용하기

* 이 옵션은 Allegro PCB 라이센스에서 가능 (OrCAD라이센스 불가능) DFA_boundary_Top 및 Bottom을 사용하려면 해당 풋프린트 패키지를 만들 때 DFA_BOUND_TOP 및 BOTTOM shape을 사용해야 한다. 1. DFA Constr..

ansan-survivor.tistory.com

 

그러나 Constraint Manager Rule을 Ravel 프로그래밍언어로 쉽게 개발할 수 있는데,

https://ansan-survivor.tistory.com/963

 

[PCB Editor] Cadence RAVEL 언어란? (RAVEL language, Allegro PCB, SiP DRC 생성 언어)

Cadence에서는 Allegro PCB 및 IC 의 커스터마이징을 위한 SKILL이라는 언어를 지원하고 있다. 각종 내장된 함수로 여러 기능들을 입맛에 맞게 커스터마이징을 시킬 때 사용하는 SKILL언어에 대한 사용법

ansan-survivor.tistory.com

 

이미 개발된 Ravel 템플릿을 내장시켜 DFM을 손쉽게 설정할 수 있는 GUI화 된 세팅이 있다.

이는 Allegro PCB Designer 이상의 라이센스 보유자만 사용이 가능하다.

 

 

해당 기능은 Manufacture - Setup RAVEL Rules in CM 에 있다.

아래와 같은 창이 뜨는데, 각종 DFM공정에 필요한 Rule을 설정할 수 있다.

 

해당 기능을 확장하여 클릭해보면, 어떤 기능을 하는지 우측에 설명과 이미지로 보여준다.

우측하단에 Constraint Value가 있고, 여기에 제한할 값을 입력하면 된다.

실제 이 라벨 코드는 설치시 아래 경로에 내장되어있다. 그리고 이 경로에서 불러오는 것이다.

C:\Cadence\SPB_17.4\share\pcb\dfm_ravel\pcb_rules\Assembly_Checks

아래와 관련하여 DFM체크를 손쉽게 진행할 수 있다.

 

 

반응형

 

* 테스트포인트(TP)관련 DFM체크

 - 테스트포인트(TP)와 솔더마스크 체크

 - 실크스크린 텍스트와 TP 간격 체크

 - 실크스크린 라인과 TP 간격 체크

 - PCB보드 외곽선과 TP 간격 체크

 

* 실크스크린 DFM체크

 - 실크스크린 Reference Text와 Pin(Pad), via, smd 와의 이격거리 체크 (Top면 / Bottom면 별도 설정)

 - 실크스크린 Line과 Pin(Pad), via, smd 와의 이격거리 체크 (Top면 / Bottom면 별도 설정)

 - 실크스크린 Text의 글자 높이 제한

 - 실크스크린 단독 Line 길이 제한

 

 

* 에칭관련 DFM체크

 - PCB보드 외곽선과 내부의 Pad, Via, SMD pad의 간격 설정

 -  하나의 핀에 Net가 부여 된 경우

 - PCB외곽선과 Trace의 최소 거리 제한

 - SMD핀 중심으로 부터 가까운 거리고 trace가 들어왔는지 판독

 

* 솔더마스크 DFM체크

 - 솔더마스크(Soldermask)와 PCB 외곽선과의 최소 길이 제한

 

 

* Assembly 관련 DFM체크

 - 부품(Component)와 Pad간의 간격 제한

 

* Milling가공 관련 DFM체크

 - Cutout Hole과 PCB외곽선과의 최소 길이 제한

 

* PCB Outline 관련 DFM체크

 - Outline을 여러개 생성했는지, 닫힌(Closed)된 형상이 아닌지 등 체크

* Via 드릴가공 DFM체크

 - Blind/Buried Via (B/Bvia) 및 Micro via의 최소 Drill 깊이 제한

 

 

위와 같은 사항들을 손쉽게 제한사항을 둘 수 있어 설계 단계에서 제조과정에서  발생할 문제를 미리 잡을 수 있다.

 

반응형
반응형

구조체(struct)란? 

 - 여러 자료형(int, double 등)을 하나로 묶어서 표현할 수 있도록 함.
 - struct [자료형] 형태. 즉, 사용자 정의 자료형을 만듦.

 - 구조체를 만들면 여러 자료형을 담고 있는 구조 하나만을 선언해서 가져올 수 있다.

 

#define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>

// x, y점은 서로 독립된 것이 아니라, 하나의 정보를 표현한다.
// 좌표점 세트(구조체)를 아래와 같이 정의
struct point	
{
	int xpos;
	int ypos;
};

// 구조체를 이용해서 좌표간 거리 구하기
int main()
{
	// 각각 x,y좌표를 지닌 2개의 구조체 생성.
	struct point pos1, pos2;
	
	double distance;


	fputs("1번째 좌표: ", stdout);
	scanf("%d %d", &pos1.xpos, &pos1.ypos);


	fputs("2번째 좌표: ", stdout);
	scanf("%d %d", &pos2.xpos, &pos2.ypos);


	// 두 좌표 입력된 값 출력
	printf("첫번째 좌표점 : %d, %d\n", pos1.xpos, pos1.ypos);
	printf("두번째 좌표점 : %d, %d\n", pos2.xpos, pos2.ypos);

	return 0;
}

위와 같은 방식으로 구조체 인스턴스(pos1, pos2)를 생성하고, 그 내부에 인자를 하나씩(pos1.xpos, pos1.ypos) 빼서 쓸 수 있다. 인스턴스에서 내부 인자에 접근하는 방법은 마침표(.)을 사이에 넣으면 된다.

반응형

<여러 타입(Type)자료형을 넣은 구조체>

    인적정보가 담긴 구조체를 생성.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

// char와 int 자료형이 섞여있는 구조체 생성 (인적 데이터)
struct person
{
	char name[20];
	char phoneNum[20];
	int age;
};

int main()
{
	//	man1 과 man2 두 구조체인스턴스 생성.
	struct person man1, man2;	

	// man1에 대한 데이터 생성. (strcpy함수를 이용해 문자열 복사)
	strcpy(man1.name, "홍길동");
	strcpy(man1.phoneNum, "010-1234-5678");
	man1.age = 23;


	// man2에 대한 데이터는 사용자 입력 받음
	printf("이름 입력: ");
	scanf("%s", man2.name);
	printf("번호 입력: ");
	scanf("%s", man2.phoneNum);
	printf("나이 입력: ");
	scanf("%d", &(man2.age));


	printf("첫번째 사람 이름: %s \n", man1.name);
	printf("첫번째 사람 번호: %s \n", man1.phoneNum);
	printf("첫번째 사람 나이: %d \n", man1.age);

	printf("두번째 사람 이름: %s \n", man2.name);
	printf("두번째 사람 번호: %s \n", man2.phoneNum);
	printf("두번째 사람 나이: %d \n", man2.age);

	return 0;
}

구조체 인스턴스 man1은 자동입력된 데이터, man2는 유저의 입력은 받는 데이터.

구조체의 Type은 char과 int가 함께 들어가있다.

 

 

<구조체 선언과 동시에 변수까지 선언하기>

    아래과 같이 main에서 구조체 인스턴스를 선언할 필요없이, 구조체 생성과 동시에 선언이 가능하다.

    } 뒤에 띄어쓰기가 반드시 있어야 한다.

서로 같은 의미 main( )밖에서도 구조체 바로 아래 선언은 가능하다.

 

 

 

<구조체 선언과 동시에 초기화 하기>

    아래과 같이 선언과 동시에 값을 넣으면, 구조체에 있는 변수 순서대로 값이 들어간다.

#include <stdio.h>

struct point
{
	int xpos;
	int ypos;
};

struct person
{
	char name[20];
	char phoneNum[20];
	int age;
};

// 초기화 방식이 배열과 유사함.
// 초기화 할 데이터들을 중괄호 안에 순서대로 나열하면 된다.

int main()
{
	struct point pos = { 10, 20 };
	struct person man = { "이승기", "010-1234-5678", 21 };

	printf("%d %d \n", pos.xpos, pos.ypos);
	printf("%s %s %d \n", man.name, man.phoneNum, man.age);

	return 0;
}

{&amp;nbsp; } 중괄호를 열고 값을 넣으면 해당값이 자동으로 들어가 초기화 한다.

 

 

반응형
1···21222324252627···181

+ Recent posts