본문 바로가기

예, .el 파일에서는 verilog-library-flags 설정을 빼고, 대신 각 Verilog 파일의 Local Variables 섹션에서 설정할 수 있습니다. 이는 각 파일별로 필요한 설정을 적용할 수 있는 좋은 방법입니다.

최종 설정 파일 및 스크립트

.el 파일에서 verilog-library-flags 설정을 제거하고, 각 Verilog 파일에 Local Variables 섹션을 추가한 상태로 스크립트를 작성하겠습니다.

my-verilog-settings.el

;; my-verilog-settings.el

;; Verilog mode 설정
(require 'verilog-mode)
(add-to-list 'auto-mode-alist '("\\.v\\'" . verilog-mode))
(add-to-list 'auto-mode-alist '("\\.sv\\'" . verilog-mode))
(setq verilog-auto-newline nil
      verilog-auto-endcomments nil
      verilog-auto-lineup 'all
      verilog-indent-level 3
      verilog-indent-level-module 3
      verilog-indent-level-declaration 3
      verilog-indent-level-behavioral 3
      verilog-indent-level-directive 1
      verilog-case-indent 2
      verilog-cexp-indent 2
      verilog-indent-begin-after-if t
      verilog-auto-lineup 'declarations
      verilog-tab-always-indent t
      verilog-auto-input-ignore-regexp "^(reset|clk)")

(defun my-verilog-auto ()
  "자동으로 포트, 와이어 등을 생성하고 현재 버퍼에 저장합니다."
  (verilog-auto)
  (verilog-indent-buffer)
  (save-buffer))

process_verilog.csh

#!/bin/csh

# 입력 파라미터 확인
if ($#argv != 2) then
  echo "Usage: process_verilog.csh input_verilog_file output_verilog_file"
  exit 1
endif

# 입력 파일과 출력 파일 변수 설정
set input_verilog_file = $1
set output_verilog_file = $2

# 디버깅을 위해 변수 출력
echo "Input file: $input_verilog_file"
echo "Output file: $output_verilog_file"

# 출력 파일로 입력 파일을 복사
cp $input_verilog_file $output_verilog_file

# Emacs 배치 모드에서 설정 파일을 로드하고 변환 작업을 수행
emacs --batch --no-site-file -l my-verilog-settings.el $output_verilog_file \
      --eval "(verilog-mode)" \
      --eval "(my-verilog-auto)" -kill

example1.sv 파일

Verilog 파일에 Local Variables 섹션을 추가합니다.

// example1.sv

// Your Verilog code here

// Local Variables:
// verilog-library-flags: ("-f filelist.f")
// End:

실행 방법

  1. my-verilog-settings.el 파일을 현재 작업 디렉토리에 저장합니다.
  2. process_verilog.csh 스크립트를 작성하고 실행 가능하게 만듭니다.
chmod +x process_verilog.csh
  1. example1.sv 파일에 Local Variables 섹션을 추가합니다.
  2. csh 스크립트를 실행하여 Verilog 파일을 변환합니다.
./process_verilog.csh example1.sv final1.sv

설명

  • my-verilog-settings.el: Verilog 모드를 설정하고, my-verilog-auto 함수를 정의하여 포트, 와이어 등을 자동 생성하고 현재 버퍼를 저장합니다.
  • process_verilog.csh: 입력 파일을 출력 파일로 복사하고, Emacs 배치 모드를 사용하여 my-verilog-settings.el을 로드한 후, verilog-mode를 활성화하고, my-verilog-auto 함수를 실행합니다.
  • example1.sv: Verilog 파일에 Local Variables 섹션을 추가하여 verilog-library-flags 설정을 포함합니다.

이렇게 하면 각 Verilog 파일마다 필요한 설정을 적용할 수 있으며, Emacs Lisp 설정 파일에서는 전역 설정만 유지할 수 있습니다.

B로그0간

개발 관련 글과 유용한 정보를 공유하는 공간입니다.