Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Novice
354 Views

How can I run quartus_sh 19.3.0 or better in Docker?

When I try to run quartus_sh inside Docker, I get the crash below.

 

Any ideas on how I can address this?

 

 

quartus_sh --lower_priority --flow compile top

Info: *******************************************************************

Info: Running Quartus Prime Shell

Info: Version 19.3.0 Build 222 09/23/2019 SC Pro Edition

[deleted]

Info: Processing started: Mon Dec 2 11:08:58 2019

Info: System process ID: 6

Info: Command: quartus_sh --lower_priority --flow compile top

Info: Quartus(args): compile top

Info: Project Name = /home/oyvind/ascenium/ascenium2/hardware/fmax/top

Info: Revision Name = top

quartus_sh: malloc.c:2868: mremap_chunk: Assertion `((size + offset) & (GLRO (dl_pagesize) - 1)) == 0' failed.

 

0 Kudos
6 Replies
Highlighted
Novice
81 Views

It would obviously make Quartus a lot more user-friendly if it wasn't necessary to hunt down this workaround:

 

I can sweep the problem under the carpet with these Dockerfile incantations:

 

+RUN apt-get -y --no-install-recommends install libtcmalloc-minimal4

+

+ENV LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libtcmalloc_minimal.so.4

 

 

0 Kudos
Highlighted
Novice
81 Views

The goal is to be able to run Quartus in the cloud. My plan to achieve this is to use a local license in the cloud. The concept of a license server breaks down for the cloud.

 

 

Overview on how to how to reproduce:

 

  1. Make sure you have plenty of disk space. You're going to need an SSD for this with 50-100GByte free. An HDD would be very, very slow for this.
  2. First create a "quartus19base" Docker image based on the first Dockerfile attached.
  3. Create a "crash" Docker image based on the second Dockerfile attached.
  4. Create a simple Quartus project called "top", then use image created in #1 to run a quartush_sh flow

 

To create "quartus19base" image:

 

  1. Create a folder "install"
  2. copy Quartus-pro-19.3.0.222-linux-complete.tar into "install"
  3. Copy the first Dockerfile attached into that folder
  4. build the image: docker build -t quartus19base install/

 

To create the "crash" image:

 

  1. Create folder "crash"
  2. Copy the second Dockerfile to "crash"
  3. Copy your single seat license.dat tied to a MAC address into "crash" and update Dockerfile to copy that license.dat into the Docker image
  4. Copy the attached "runquartus" file into "crash"
  5. docker build -t crash crash

 

Reproduce crash:

 

  1. Change working folder to where you have your "top" project
  2. Use your license.dat mac address for the "--mac-address" argument
  3. Run:  docker run --mac-address=xx:xx:xx:xx:xx:xx -ti -u $(id -u ${USER}):$(id -g ${USER}) -v $(pwd):$(pwd) --workdir $(pwd) -t crash quartus_sh --flow compile top

 

0 Kudos
Highlighted
Novice
81 Views

Second Docker file

0 Kudos
Highlighted
Novice
81 Views

runquartus file

0 Kudos
Highlighted
81 Views

Thanks for the feedback. We will look into this so that in the future, a newer Quartus version will give a better customer experience.

0 Kudos
Highlighted
Novice
81 Views

Thanks!

 

It would also be great if there was an official way to handle licensing when running in the cloud.

 

My use-case is that I want to do a place and route run upon pull requests in github.com using the github google cloud pull request plugin.

 

If the design has no timing violations and the fMax is equal to or better then current fMax, the pull request is automatically merged using Mergify.

0 Kudos