티스토리 뷰

HSPICE의 application에 따른 속도 향상 방법을 정리한다. 해당 방법들은 구글에서 찾으면 상당히 많이 나오는 부분이지만, 그냥 간단하게 정리해보고자 한다. 아래에 나온 방법 외에 License Check time을 줄이는 방법이 있지만, 해당 방법은 작은 simul을 여러개 돌릴 때 유용한 것이므로 관련 링크를 두고 생략한다.

 

2019.06.29 - [연구/HSPICE] - [HSPICE] HSPICE에서 License check 시간 줄이기

 

위에가 License Check 관련 링크이다. 

1. netlist check 측면

ALTER 기능을 쓰게 되면, if-else 기능으로 소자를 바꾸지 않는 이상 모두 동일한 netlist를 사용하게 된다. 그러나 HSPICE에서는 기본적으로 모든 경우에서 netlist를 check하도록 되어있다. 따라서 만약 많은 수의 alter를 사용하며, 각각이 모두 동일한 netlist를 지닌 경우, 해당 netlist check가 시간을 소모하게 된다. 이를 줄여주는 option이 존재한다.

 

.option ALTCC

.option ALTCHK

 

전자는 한 번만 읽도록 하는 option이고, 후자는 netlist topology check 시간을 줄여주는 option이다.

 

2. 소자 Check 측면

기본적으로 HSPICE는 소자를 check하도록 되어있다. 만약 내가 소자를 바꾸지 않았다면, 이전에 check 받은 상태에서 다시 check를 할 필요가 없다. topology 또한 마찬가지다. 때문에 이를 위한 option이 존재한다.

 

.option NOELCK

.option NOTOP

 

전자는 Element를 읽지 않는 것이고, 후자는 topology check를 넘기겠다는 것이다. 모두 1번과 동일하나, 1번이 Alter에서만 동작한다고 하면, 2번은 모든 Simul에 대해서 동작한다고 보면 된다.

 

3. 병렬화

HSPICE에는 2가지 병렬 프로세싱이 존재한다. 1개는 하나의 작업을 여러 Core로 돌리는 것이고, 1개는 여러개의 작업을 여러 Core로 돌리는 것이다. 전자를 Multi-processing, 후자를 Distributed-processing이라고 한다.

 

Multi-processing의 경우, 아래와 같은 명령어로 사용하게 된다.

hspice -i testbench.sp -mt 4 -hpp

 

Distributed-processing의 경우, 아래와 같은 명령어로 사용하게 된다.

hspice -i testbench.sp -dp 4

 

각각 1개의 License당 2개의 Thread를 담당한다고 알려져있다.

 

4. runlvl 변경

runlvl은 정확도와 속도 관련된 option을 한 번에 바꿀 수 있도록 마련된 option이다. HSPICE 상에서는 기본이 3으로 나타나며, 최대 6까지 조절이 가능하다. runlvl이 높아질수록 정확도가 높고, 속도가 느려진다.

 

 .option runlvl=6

 

 

댓글