Languages

CommunityCategory: XMODELXMODEL 시뮬레이션을 일련의 개별 명령이 아닌 하나의 run file을 통해 실행하는 방법

XMODEL

XMODEL 시뮬레이션을 일련의 개별 명령이 아닌 하나의 run file을 통해 실행하는 방법

SA Support Team Staff 2019-08-12

'xmodel' launcher 스크립트로 XMODEL 시뮬레이션을 실행하면, 이 'xmodel' 스크립트는 선택된 SystemVerilog 시뮬레이터에 따라 compile/elaboration, simulation에 해당되는 명령들을 순차적으로 실행합니다. 예를 들면, NC-Verilog를 사용하는 경우에는,

ncverilog -elaborate …
ncverilog -R …

두 명령을 차례로 실행하고, VCS를 사용하는 경우에는,

vcs …
simv …

두 명령을 차례로 실행합니다. 사용된 인자들의 리스트는 간결성을 위해 생략하였습니다.

우리 회사의 경우에는 SystemVerilog 시뮬레이션들을 LSF와 같은 job scheduling 플랫폼을 통해 실행하는데, 각 job은 어느정도의 대기 시간 이후에 실행이 됩니다. 그래서 'xmodel' 스크립트가 실행하는 개별 명령들을 각각 별도의 job으로 LSF를 통해 실행하면, 총 대기 시간이 더 길어지게 됩니다. 더 좋은 방법은, 이 명령들을 하나의 run file안에 정의하여 이들을 한번에 실행할 수 있는 스크립트를 만들고, 그 스크립트를 LSF를 통해 실행하는 것이겠습니다. 예를 들어, 그 run file 스크립트의 이름을 'xmodel.run'이라 한다면, 그 내용에는 위에서 언급한 각 단계의 명령들이 정의되어 있고, 그 스크립트를 LSF의 bsub 명령을 통해 아래와 같이 실행시키는 것입니다.

bsub xmodel.run

이런 방식으로 XMODEL 시뮬레이션을 수행하도록 XMODEL 환경을 설정할 수 있나요?

1 Answers
Best Answer
SA Support Team Staff 2019-08-12

예, 가능합니다. 우선, 'xmodel' 스크립트가 XMODEL 시뮬레이션을 실제로 수행하는 방법은 configuration file과 $XMODEL_CONFIG 환경변수를 통해 customize할 수 있습니다. 그 기본적인 방법에 대한 안내는 아래의 두 링크를 참고하시기 바랍니다.
https://www.scianalog.com/support/manual/xmodel-simulation-launcher/
https://www.scianalog.com/support/community/question/432/
XMODEL configuration file에서 사용자가 정의할 수 있는 옵션의 리스트 및 그 기본값들은 $XMODEL_HOME/etc/default_config.py 파일에서 확인가능한데, 그 중 문의하신 동작에 영향을 주는 옵션들은 아래와 같습니다.

sim_cmd['ncverilog']['run_shell'] = ['csh', '-f']
sim_option['ncverilog']['use_runfile'] = False
sim_option['ncverilog']['runfile'] = 'xmodel.run'

여기서 'ncverilog' 대신 'vcs', 'modelsim' 또는 'xcelium'을 사용할 수 있고, 각각 해당 시뮬레이터에 대해서 다른 옵션값을 설정하게 됩니다.
원하시는 대로, 'xmodel' 스크립트가 개별명령을 직접 실행하지 않고, 먼저 run 스크립트 파일을 생성한 후에 이를 'bsub' 명령을 통해 실행하게 하려면 아래와 같이 설정하면 됩니다.

sim_cmd['ncverilog']['run_shell'] = ['bsub']
sim_option['ncverilog']['use_runfile'] = True
sim_option['ncverilog']['runfile'] = 'xmodel.run'

즉, 'use_runfile' 옵션이 True로 설정되면, 'xmodel' 스크립트는 개별명령 실행대신 run 스크립트 파일을 생성하며, 그 이름은 충돌방지를 위해 'runfile' 옵션에서 정의한 이름에 프로세스 ID를 덧붙여 생성됩니다. 생성된 run 스크립트를 실행하는 명령은 'run_shell' 옵션을 통해서 정의하는데, parsing된 토큰들을 리스트 형태로 나열합니다. 예를 들어, run 스크립트를 아래와 같이 -I 옵션을 추가로 주어 실행하고 싶을때는,

bsub -I xmodel.run

아래처럼 'run_shell' 옵션을 정의합니다. 하나의 문자열로 'bsub -I'로 정의하지 않음에 유의하세요.

sim_cmd['ncverilog']['run_shell'] = ['bsub', '-I']