From 556cce4733b23e1ee88cf2b689f5786712141958 Mon Sep 17 00:00:00 2001
From: Erik Kooistra <kooistra@astron.nl>
Date: Mon, 17 Nov 2014 14:46:35 +0000
Subject: [PATCH] Added script for compiling the Altera simulation libraries to
 avoid having to use the Quartus GUI and to be able to keep on using 'mk all'
 in Modelsim.

---
 tools/quartus/run_altera_simlib_comp | 111 +++++++++++++++++++++++++++
 1 file changed, 111 insertions(+)
 create mode 100755 tools/quartus/run_altera_simlib_comp

diff --git a/tools/quartus/run_altera_simlib_comp b/tools/quartus/run_altera_simlib_comp
new file mode 100755
index 0000000000..17f5ef8ba2
--- /dev/null
+++ b/tools/quartus/run_altera_simlib_comp
@@ -0,0 +1,111 @@
+#!/bin/bash
+###############################################################################
+#
+# Copyright (C) 2014
+# ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
+# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+###############################################################################
+
+# Purpose: Compile the Altera simulation libraries
+# Description:
+#   This script is equivalent to manually running the Quartus GUI tools/Launch simulation library compiler.
+#   However it is needed to use this script, because then the Altera libraries can be compiled with the 'vlib -type directory' option.
+#   Default 'vlib' compiles all components into a single binary but to be able to use 'mk all' it is necessary that each component
+#   is compiled into a seperate binary.
+#   Therefore this script uses 'sed' to replace 'vlib' by 'vlib -type directory' in the created Modelsim .do file and then
+#   it then runs the .do file. This needs to be done for all families (arria10) and all HDL (vhdl and verilog).
+#   Another advantage of using this script is that it can be kept in SVN and that it avoids having to explain how to do it manually
+#   via the GUI.
+# Usage:
+#   Assume $MODEL_TECH_ALTERA_LIB=/home/software/modelsim_altera_libs/14.0a10
+#
+#   First run the script in some user directory that where $RADIOHDL is known. Use the output directory that will fit $MODEL_TECH_ALTERA_LIB
+#   > run_altera_simlib_comp 14.0a10
+#
+#   Then use 'sudo' to move the directory to the protected central project directory that is set by $MODEL_TECH_ALTERA_LIB.
+#   > sudo mv 14.0a10 /home/software/modelsim_altera_libs
+#   
+
+# 1) General tool and project settings
+# - use '. <script>.sh' to have the settings apply in this shell, otherwise they get lost when <script>.sh returns
+
+# Tool settings for selected target unb2
+. ${RADIOHDL}/tools/quartus/set_quartus unb2
+. ${RADIOHDL}/tools/modelsim/set_modelsim unb2
+
+# Select output directory for the library compilation results
+OUTPUT_DIR=${1:-}
+if [ "${OUTPUT_DIR}" = "" ]; then
+  unb_error $0 "Please specify an output directory"
+fi
+echo "Create Altera simulation libraries for Modelsim at output directory: ${OUTPUT_DIR}"
+
+# Define the FPGA families
+FAMILIES="arria10"
+
+
+# 2) Create Modelsim .do file for compiling the Altera simulation libraries
+# . verilog
+quartus_sh --simlib_comp -family ${FAMILIES} \
+                         -tool modelsim \
+                         -tool_path $VSIM_DIR \
+                         -language verilog \
+                         -directory ${OUTPUT_DIR} \
+                         -log altera_simlibs_verilog.log \
+                         -cmd_file altera_simlibs_verilog.do \
+                         -gen_only \
+                         -suppress_messages
+# . vhdl
+quartus_sh --simlib_comp -family ${FAMILIES} \
+                         -tool modelsim \
+                         -tool_path $VSIM_DIR \
+                         -language vhdl \
+                         -directory ${OUTPUT_DIR} \
+                         -log altera_simlibs_vhdl.log \
+                         -cmd_file altera_simlibs_vhdl.do \
+                         -gen_only \
+                         -suppress_messages
+                         
+# Go to the output directory
+cd ${OUTPUT_DIR}
+
+# Keep the log files
+mv ../altera_simlibs_verilog.log .
+mv ../altera_simlibs_vhdl.log .
+
+
+# 3) Now use sed to replace 'vlib' by 'vlib -type directory'
+
+# Usage: sed -i 's/original/new/g' file.txt
+# Explanation:
+#    sed = Stream EDitor
+#    -i = in-place (i.e. save back to the original file)
+#
+#    The command string:
+#        s = the substitute command
+#        original = a regular expression describing the word to replace (or just the word itself)
+#        new = the text to replace it with
+#        g = global (i.e. replace all and not just the first occurrence)
+#
+#    file.txt = the file name 
+
+sed -i 's/vlib/vlib -type directory/g' altera_simlibs_verilog.do
+sed -i 's/vlib/vlib -type directory/g' altera_simlibs_vhdl.do
+
+# 4) Compile the Altera libraries with Modelsim
+$VSIM_DIR/vsim -c -do altera_simlibs_verilog.do
+$VSIM_DIR/vsim -c -do altera_simlibs_vhdl.do
-- 
GitLab