비고:Quartus와 ModelSim의 환경 구축 노트

15272 단어 DockerModelSimquartus
집에서 진행하는 Quartus와 ModelSim의 환경 구축 노트.
Quartus와 ModelSim이 요구하는 프로그램 라이브러리를 Docker 이미지에 폐쇄하여 서버 (호스트) 를 깨끗하게 할 뿐입니다.
이번에 제작된 Docker file은 quartuslib

일단 결론.


기본적으로 아래 그림과 같은 환경이 되었다.
FPGA 보드는 Quartus Programer의 원격 기능을 사용하여 기록합니다.

시도된 환경

  • 클라이언트
  • Windows 10 Pro 64bit (1801)
  • Quartus Promoe Programer만 설치
  • 서버
  • Ubuntu 18.04 x86_64
  • QuartusPrime Lite 18.1
  • Docker 18.09
  • 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
    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.sh
    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
    
    시작할 때 파라미터를 지정하지 않으면 용기에 직접 넣습니다
    예를 들어, quartus를 지정하면 직접 Quartus가 GUI를 통해 일어납니다.
    # コンテナに入る
    $ ./boot_docker.sh
    
    # QuartusをGUIで立ち上げる
    $ ./boot_docker.sh quartus
    
    GUI는 호스트의 X11-unix를 사용합니다.X 클라이언트는 모바Xterm을 사용하여 만능입니다.
    또한 명령 입력을 편리하게 하기 위해make를 사용했다
    Makefile
    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"
    

    4. 원격 기능 사용(JtaServer)


    클라이언트 PC에서 인코딩과 실시간 디버깅만 하면 됩니다.
    최소 쓰기 및 Signal tapQuartus Prime Programmer and Tools이 설치되어 있습니다.
    소비 용량이 1.25GB 정도여서 노트북도 안심하고 넣을 수 있다.
    하지만 Windows나 Linux(Ubuntu)는 설치만 하면 사용할 수 없습니다.
    각자 다음과 같은 일이 필요하다
  • Windows
  • 라이센스 방화벽Jtag Server
  • 초기 상태에서 사유는 무효이고 공공은 유효하다.(보통 반대로는?)
  • Linux(Ubuntu)
  • jtagconfiglibudev.so.0이 필요하기 때문에/usr/lib 기호 링크를 붙여넣습니다.
  • sudo ln -s /lib/x86_64-linux-gnu/libudev.so.1 /usr/lib/libudev.so.0
  • JtaServer를 활성화하려면 관리자 권한을 사용하여 다음 명령을 실행합니다.
    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" 설치
  • 우선 제가 참고할 수 있도록 허락해 주십시오.
  • Ubuntu16.0464-bit, Quartus II 13.1에서 Model-sim

  • Installing Altera Quartus II 14.0 and ModelSim on Ubuntu Linux 14.10 system
  • 이상 두 개는 ModelSim 이동을 위해 참고한 것이다

  • ittouogami/quartus18.1_docker
  • Docker file 제작에 큰 참고 가치가 있습니다.감사
  • 좋은 웹페이지 즐겨찾기