1. 최대/ 최소/ 평균값/ PeaktoPeak /적분/ 미분
.MEAS [DC/AC/TRAN] [만들 변수명] [MAX/MIN/AVG/PP/INTEG/DERIV] [PROBE한 변수명] FROM=[시작점] TO=[끝점]
1-1. EXAM
.MEAS DC I_MAX MAX I(M1) FROM=0.1V TO=2V
설명: M1의 전류(I(M1))의 최대값을 I_MAX라는 이름으로 저장한다. 측정범위는 0.1V~2.0V
2. 어떤 변수가 특정 값을 가질 때, 전압/주파수/시간 찾기
.MEAS [DC/AC/TRAN] [만들 변수명] WHEN [PROBE한 변수명]=[값]
2-1. EXAMPLE
.MEAS DC V_WHEN_I_1A WHEN I(M1)=1A
M1의 전류가 1A일 때, 전압값을 V_WHEN_I_1A 라는 이름으로 저장한다.
2-2. EXAMPLE
.MEAS DC V_WHEN_I_MAX WHEN I(M1)=I_MAX
EX 1-1과 함께 사용한다면, 위와 같이 사용할 수도 있다. 전류가 최대일 때 전압값을 저장한다.
3. 연산하기 (후처리하기?)
.MEAS DC [만들 변수명] PARAM='[수식]'
3-1. EXAMPLE
.MEAS DC POWER_WHEN_I_MAX PARAM='V_WHEN_I_MAX * CURRENT_MAX'
EX 1-1과 EX 2-2를 함께 사용해, 위와 같이 사용할 수 있다. 뒤 수식의 계산 값을 POWER_... 에 저장한다.
사칙연산 가능하다. 제곱이나 제곱근은 가능한지 모르겠다.
3-2. EXAMPLE
.MEAS DC ABSOL_V PARAM='ABS(V_WHEN_I_MAX)
V_WHEN_I_MAX의 절댓값을 ABSOL_V에 저장한다
번외.
또한 sweep을 하면서 다음과 같이 변수를 변경할 수 있다.
예를 들어 R1을 1k로 변경 > sweep > R1을 2k로 변경 > sweep > ... > R1을 100k로 변경 > sweep 과 같은 방식이다.
반복작업에 간편하다. 방법은 아래와 같다.
**for great result, W=55u, L=1u**
.PARAM MOS_W=55u
.PARAM MOS_L=1u
M1 D G 0 0 NMOS w=MOS_W, l=MOS_L
RD D VD 1k
VGS G 0 DC 5
VDD VD 0 DC 2
**simulation**
.OP
.temp =25
.dc VGS 0.0 5.0 0.001 sweep DATA=sweep_param
**for graph**
.probe i(M1)
.probe gmo(M1)
.data sweep_param MOS_L MOS_W
0.1u 0.1u
0.1u 10.09u
(중략)
100.0u 100.0u
.enddata
.end
2, 3번 줄에서 변경할 변수를 선언한다. (param=...)
14번 줄에서 dc sweep 시 data를 바꿔가면서 sweep하겠다고 선언한다. (DATA=...)
21~26번 줄에서 어떤 데이터를 어떻게 바꿀건지 설정한다. (.data ...)
'Electronic eng. > Analog circuit' 카테고리의 다른 글
[hspice] netlist 작성법 간단 정리 (3) | 2024.10.24 |
---|---|
[hspice] 시뮬레이션 결과가 oscillation할 때, 진동할 때 (0) | 2024.10.24 |