비고:Quartus와 ModelSim의 환경 구축 노트
Quartus와 ModelSim이 요구하는 프로그램 라이브러리를 Docker 이미지에 폐쇄하여 서버 (호스트) 를 깨끗하게 할 뿐입니다.
이번에 제작된 Docker file은 quartuslib
일단 결론.
기본적으로 아래 그림과 같은 환경이 되었다.
FPGA 보드는 Quartus Programer의 원격 기능을 사용하여 기록합니다.
시도된 환경
1. Quartus 및 ModelSim 설치
필요한 라이브러리만 Docker 이미지에 넣는 주의이기 때문에 Quartus와 ModelSim은 서버 (호스트 측) 에 직접 설치됩니다.
기본/home/$USER
이 아니라 /eda
입니다.
또한 ModelSim 내의 vco 등 참조linuxpe
는 있지만 그런 디렉터리는 존재하지 않는다.
기호 링크를 붙여 넣으면 해결됩니다.sudo ln -s /eda/intelFPGA_lite/18.1/modelsim_ase/linuxaloem/ /eda/intelFPGA_lite/18.1/modelsim_ase/linuxpe
2. 필요한 라이브러리 클래스를 Docker 이미지로 변환
이번에 쓴 Docker file은 ittouogami씨의 quartus18.1_docker를 참고했습니다.
Dockerfile
DockerfileFROM ubuntu:18.04
ENV DEBCONF_NOWARNINGS noninteractive
COPY build_freetype.sh /tmp
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
# Environment Variables for Quartus Prime and ModelSim
ARG QUARTUS_VER="18.1"
ENV QSYS_ROOTDIR="/eda/intelFPGA_lite/$QUARTUS_VER/quartus/sopc_builder/bin"
ENV PATH=$PATH:/eda/intelFPGA_lite/$QUARTUS_VER/quartus/bin
ENV PATH=$PATH:/eda/intelFPGA_lite/$QUARTUS_VER/modelsim_ase/linuxaloem
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib32
RUN set -eux && \
sed -i -e '$a deb http://archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse' /etc/apt/sources.list && \
dpkg --add-architecture i386 && \
apt-get update && \
apt-get install --no-install-recommends -qq -y \
software-properties-common \
build-essential \
g++-multilib \
gcc-multilib \
gosu \
&& \
# Install libraries required for Quartus Prime
apt-get install --no-install-recommends -qq -y \
libfontconfig1:amd64 \
libglib2.0-0:amd64 \
libpng12-0:amd64 \
libsm6:amd64 \
libxext6:amd64 \
libxrender1:amd64 \
locales \
&& \
locale-gen en_US.UTF-8 && \
# Install librarise required for Platform Designer(Qsys)
apt-get install --no-install-recommends -qq -y \
openjdk-8-jre \
&& \
# Install libraries required for ModelSim
apt-get install --no-install-recommends -qq -y \
libncurses5:i386 \
libxext6:i386 \
libxft2:i386 \
wget \
&& \
chmod +x /tmp/build_freetype.sh && \
/tmp/build_freetype.sh && \
# Clean up
rm -rf /tmp/* && \
apt-get autoclean && \
apt-get autoremove && \
rm -rf /var/lib/apt/lists/* && \
# Set entry point
chmod +x /usr/local/bin/entrypoint.sh
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["/bin/bash", "-l"]
Docker를 사용하지 않으면 다음 4개의 라이브러리에 가입할 수 있습니다 (Ubuntu 18.04에서)
주의점은 ModelSim이 32비트 라이브러리와 구형freetype을 요구한다는 것이다.
특히freetype은 원본 파일에서 컴파일하거나 .deb
설치해야 합니다.# ※Dockerを使わない場合
# QuartusとModelSimに必要なライブラリのインストール
$ sudo sed -i -e '$a deb http://archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse' /etc/apt/sources.list
$ sudo dpkg --add-architecture i386
$ sudo apt-get update && \
sudo apt-get install -y \
libpng12-0:amd64 \
libncurses5:i386 \
libxext6:i386 \
libxft2:i386
# freetypeを自分でコンパイルするなら
$ sudo apt-get install build-essential gcc-multilib g++-multilib
$ wget http://download.savannah.gnu.org/releases/freetype/freetype-2.4.12.tar.bz2
$ tar xf freetype-2.4.12.tar.bz2
$ cd freetype-2.4.12
$ ./configure --build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"
$ make
Docker 인상freetype-2.4.12/objs/.libs
에 있는 내용을 모두 넣기/lib32
또한 Docker 컨테이너 내에서 일반 사용자로서 작업을 진행하기 위해 신청점은 다음과 같다.
entrypoint.sh#!/bin/bash
USER=${USER:-root}
USER_ID=${LOCAL_UID:-1000}
GROUP_ID=${LOCAL_GID:-1000}
echo "Starting with UID: $USER_ID, GID: $GROUP_ID, USER: $USER"
if [[ -n "$USER_ID" ]]; then
export HOME=/home/$USER
useradd -s /bin/bash -u $USER_ID -o -d $HOME $USER
echo ${USER}:${USER} | chpasswd
chown $USER_ID:$GROUP_ID -R $HOME
chown $USER $(tty)
exec /usr/sbin/gosu "$USER" "$@"
else
exec "$@"
fi
3. 컨테이너에 넣기
지정한 환경 변수와 음량이 크기 때문에 시작용 조개 스크립트를 썼습니다.
boot_docker.shdocker run -it --rm \
--net host \
-e LOCAL_UID=$(id -u $USER) \
-e LOCAL_GID=$(id -g $USER) \
-e USER=$USER \
-e DISPLAY=$DISPLAY \
-e "QT_X11_NO_MITSHM=1" \
-v /tmp/.X11-unix:/tmp/.X11-unix \
--privileged \
-v /sys:/sys:ro \
-v /eda:/eda \
-v $HOME:$HOME \
-v $(pwd):$(pwd) \
-w $(pwd) \
sarakane6090/quartuslib:1.0 $1
시작할 때 파라미터를 지정하지 않으면 용기에 직접 넣습니다
예를 들어, quartus
를 지정하면 직접 Quartus가 GUI를 통해 일어납니다.# コンテナに入る
$ ./boot_docker.sh
# QuartusをGUIで立ち上げる
$ ./boot_docker.sh quartus
GUI는 호스트의 X11-unix를 사용합니다.X 클라이언트는 모바Xterm을 사용하여 만능입니다.
또한 명령 입력을 편리하게 하기 위해make를 사용했다
MakefilePRJ_NAME := <project_name>
PRJ_DIR := ./path/to/<project_dir>
DOCKER := ./path/to/boot_docker.sh
synthesis:
$(DOCKER) "quartus_sh --flow compile $(PRJ_DIR)/$(PRJ_NAME)"
program:
$(DOCKER) "quartus_pgm --id 1 --mode=JTAG -o ""p;/path/to/output_files/$(PRJ_NAME).sof"""
quartus:
$(DOCKER) "quartus $(PRJ_DIR)/$(PRJ_NAME)"
modelsim:
$(DOCKER) "vsim"
4. 원격 기능 사용(JtaServer)
클라이언트 PC에서 인코딩과 실시간 디버깅만 하면 됩니다.
최소 쓰기 및 Signal tapQuartus Prime Programmer and Tools
이 설치되어 있습니다.
소비 용량이 1.25GB 정도여서 노트북도 안심하고 넣을 수 있다.
하지만 Windows나 Linux(Ubuntu)는 설치만 하면 사용할 수 없습니다.
각자 다음과 같은 일이 필요하다
sudo ln -s /eda/intelFPGA_lite/18.1/modelsim_ase/linuxaloem/ /eda/intelFPGA_lite/18.1/modelsim_ase/linuxpe
이번에 쓴 Docker file은 ittouogami씨의 quartus18.1_docker를 참고했습니다.
Dockerfile
Dockerfile
FROM ubuntu:18.04
ENV DEBCONF_NOWARNINGS noninteractive
COPY build_freetype.sh /tmp
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
# Environment Variables for Quartus Prime and ModelSim
ARG QUARTUS_VER="18.1"
ENV QSYS_ROOTDIR="/eda/intelFPGA_lite/$QUARTUS_VER/quartus/sopc_builder/bin"
ENV PATH=$PATH:/eda/intelFPGA_lite/$QUARTUS_VER/quartus/bin
ENV PATH=$PATH:/eda/intelFPGA_lite/$QUARTUS_VER/modelsim_ase/linuxaloem
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib32
RUN set -eux && \
sed -i -e '$a deb http://archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse' /etc/apt/sources.list && \
dpkg --add-architecture i386 && \
apt-get update && \
apt-get install --no-install-recommends -qq -y \
software-properties-common \
build-essential \
g++-multilib \
gcc-multilib \
gosu \
&& \
# Install libraries required for Quartus Prime
apt-get install --no-install-recommends -qq -y \
libfontconfig1:amd64 \
libglib2.0-0:amd64 \
libpng12-0:amd64 \
libsm6:amd64 \
libxext6:amd64 \
libxrender1:amd64 \
locales \
&& \
locale-gen en_US.UTF-8 && \
# Install librarise required for Platform Designer(Qsys)
apt-get install --no-install-recommends -qq -y \
openjdk-8-jre \
&& \
# Install libraries required for ModelSim
apt-get install --no-install-recommends -qq -y \
libncurses5:i386 \
libxext6:i386 \
libxft2:i386 \
wget \
&& \
chmod +x /tmp/build_freetype.sh && \
/tmp/build_freetype.sh && \
# Clean up
rm -rf /tmp/* && \
apt-get autoclean && \
apt-get autoremove && \
rm -rf /var/lib/apt/lists/* && \
# Set entry point
chmod +x /usr/local/bin/entrypoint.sh
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["/bin/bash", "-l"]
Docker를 사용하지 않으면 다음 4개의 라이브러리에 가입할 수 있습니다 (Ubuntu 18.04에서)주의점은 ModelSim이 32비트 라이브러리와 구형freetype을 요구한다는 것이다.
특히freetype은 원본 파일에서 컴파일하거나
.deb
설치해야 합니다.# ※Dockerを使わない場合
# QuartusとModelSimに必要なライブラリのインストール
$ sudo sed -i -e '$a deb http://archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse' /etc/apt/sources.list
$ sudo dpkg --add-architecture i386
$ sudo apt-get update && \
sudo apt-get install -y \
libpng12-0:amd64 \
libncurses5:i386 \
libxext6:i386 \
libxft2:i386
# freetypeを自分でコンパイルするなら
$ sudo apt-get install build-essential gcc-multilib g++-multilib
$ wget http://download.savannah.gnu.org/releases/freetype/freetype-2.4.12.tar.bz2
$ tar xf freetype-2.4.12.tar.bz2
$ cd freetype-2.4.12
$ ./configure --build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"
$ make
Docker 인상freetype-2.4.12/objs/.libs
에 있는 내용을 모두 넣기/lib32
또한 Docker 컨테이너 내에서 일반 사용자로서 작업을 진행하기 위해 신청점은 다음과 같다.entrypoint.sh
#!/bin/bash
USER=${USER:-root}
USER_ID=${LOCAL_UID:-1000}
GROUP_ID=${LOCAL_GID:-1000}
echo "Starting with UID: $USER_ID, GID: $GROUP_ID, USER: $USER"
if [[ -n "$USER_ID" ]]; then
export HOME=/home/$USER
useradd -s /bin/bash -u $USER_ID -o -d $HOME $USER
echo ${USER}:${USER} | chpasswd
chown $USER_ID:$GROUP_ID -R $HOME
chown $USER $(tty)
exec /usr/sbin/gosu "$USER" "$@"
else
exec "$@"
fi
3. 컨테이너에 넣기
지정한 환경 변수와 음량이 크기 때문에 시작용 조개 스크립트를 썼습니다.
boot_docker.shdocker run -it --rm \
--net host \
-e LOCAL_UID=$(id -u $USER) \
-e LOCAL_GID=$(id -g $USER) \
-e USER=$USER \
-e DISPLAY=$DISPLAY \
-e "QT_X11_NO_MITSHM=1" \
-v /tmp/.X11-unix:/tmp/.X11-unix \
--privileged \
-v /sys:/sys:ro \
-v /eda:/eda \
-v $HOME:$HOME \
-v $(pwd):$(pwd) \
-w $(pwd) \
sarakane6090/quartuslib:1.0 $1
시작할 때 파라미터를 지정하지 않으면 용기에 직접 넣습니다
예를 들어, quartus
를 지정하면 직접 Quartus가 GUI를 통해 일어납니다.# コンテナに入る
$ ./boot_docker.sh
# QuartusをGUIで立ち上げる
$ ./boot_docker.sh quartus
GUI는 호스트의 X11-unix를 사용합니다.X 클라이언트는 모바Xterm을 사용하여 만능입니다.
또한 명령 입력을 편리하게 하기 위해make를 사용했다
MakefilePRJ_NAME := <project_name>
PRJ_DIR := ./path/to/<project_dir>
DOCKER := ./path/to/boot_docker.sh
synthesis:
$(DOCKER) "quartus_sh --flow compile $(PRJ_DIR)/$(PRJ_NAME)"
program:
$(DOCKER) "quartus_pgm --id 1 --mode=JTAG -o ""p;/path/to/output_files/$(PRJ_NAME).sof"""
quartus:
$(DOCKER) "quartus $(PRJ_DIR)/$(PRJ_NAME)"
modelsim:
$(DOCKER) "vsim"
4. 원격 기능 사용(JtaServer)
클라이언트 PC에서 인코딩과 실시간 디버깅만 하면 됩니다.
최소 쓰기 및 Signal tapQuartus Prime Programmer and Tools
이 설치되어 있습니다.
소비 용량이 1.25GB 정도여서 노트북도 안심하고 넣을 수 있다.
하지만 Windows나 Linux(Ubuntu)는 설치만 하면 사용할 수 없습니다.
각자 다음과 같은 일이 필요하다
docker run -it --rm \
--net host \
-e LOCAL_UID=$(id -u $USER) \
-e LOCAL_GID=$(id -g $USER) \
-e USER=$USER \
-e DISPLAY=$DISPLAY \
-e "QT_X11_NO_MITSHM=1" \
-v /tmp/.X11-unix:/tmp/.X11-unix \
--privileged \
-v /sys:/sys:ro \
-v /eda:/eda \
-v $HOME:$HOME \
-v $(pwd):$(pwd) \
-w $(pwd) \
sarakane6090/quartuslib:1.0 $1
# コンテナに入る
$ ./boot_docker.sh
# QuartusをGUIで立ち上げる
$ ./boot_docker.sh quartus
PRJ_NAME := <project_name>
PRJ_DIR := ./path/to/<project_dir>
DOCKER := ./path/to/boot_docker.sh
synthesis:
$(DOCKER) "quartus_sh --flow compile $(PRJ_DIR)/$(PRJ_NAME)"
program:
$(DOCKER) "quartus_pgm --id 1 --mode=JTAG -o ""p;/path/to/output_files/$(PRJ_NAME).sof"""
quartus:
$(DOCKER) "quartus $(PRJ_DIR)/$(PRJ_NAME)"
modelsim:
$(DOCKER) "vsim"
클라이언트 PC에서 인코딩과 실시간 디버깅만 하면 됩니다.
최소 쓰기 및 Signal tap
Quartus Prime Programmer and Tools
이 설치되어 있습니다.소비 용량이 1.25GB 정도여서 노트북도 안심하고 넣을 수 있다.
하지만 Windows나 Linux(Ubuntu)는 설치만 하면 사용할 수 없습니다.
각자 다음과 같은 일이 필요하다
Jtag Server
libudev.so.0
이 필요하기 때문에/usr/lib
기호 링크를 붙여넣습니다.sudo ln -s /lib/x86_64-linux-gnu/libudev.so.1 /usr/lib/libudev.so.0
Linux라면 일반 사용자가 실행합니다.
# PowerShellなら
cd $env:QUARTUS_ROOTDIR¥bin64
# CMDなら
cd %QUARTUS_ROOTDIR%¥bin64
# 下記のコマンドでJtag Serverを有効にする
jtagconfig --enableremote <password>
Quartus Programer를 시작하여 방금 설정한 JtaServer를 추가합니다.다음 이미지에서 (4) 에 호스트 이름 또는 IP 주소 및 암호를 입력합니다.
Connection Status에 OK 또는 No Hardware가 표시되면 원격 주소로 연결할 수 있습니다.
오랜 시간 동안 드로잉이 굳으면 100% 실패합니다. 방화벽과 같은 네트워크 주변을 확인하십시오.
참고 자료
Ubuntu에 Altera(Intel)의 FPGA 개발 도구 "Quartus Prime" 설치
Installing Altera Quartus II 14.0 and ModelSim on Ubuntu Linux 14.10 system
ittouogami/quartus18.1_docker
Reference
이 문제에 관하여(비고:Quartus와 ModelSim의 환경 구축 노트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sarakane/items/115ec4d326180b62f449텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)