Forum Discussion

Amir3's avatar
Amir3
Icon for Occasional Contributor rankOccasional Contributor
3 years ago
Solved

TCL Script - Automation of Compilation process and programming SOF file

Hey,

I am trying to create a TCL script for automating the compilation process and SOF file programming.

I get this Error - "Error:Unknown option: -outdir"

I changed the "-outdir" to "-output_directory" but again I get the same Error

This is the script I wrote:

package require ::quartus::project

# Set the project directory
set project_dir "Y"

# Set the project name
set project_name "X"

# Set the output directory for compiled files
set output_dir "$project_dir/output_files"

# Set the name of the SOF file
set sof_file "$project_name.sof"

# Open the project
project_open $project_dir/$project_name.qpf

# Compile the project
execute_module -tool map
execute_module -tool fit
execute_module -tool asm
execute_module -tool sta
execute_module -tool sign

# Create the output directory if it does not exist
file mkdir $output_dir

# Generate the SOF file
set sof_path $output_dir/$sof_file
execute_module -tool asm_sof -outdir $output_dir -file $sof_path

# Launch the programmer window
launch_programmer -hardware_name "USB-Blaster"

# Wait for the programmer to open
after 1000

# Select the device and file in the programmer window
program_device -position 1 -file $sof_path -operation "Program"

Note - I write X and Y because I can't write the original values here

Thanks!

3 Replies

  • You may checkout this document for all the supported command-line and tcl scripting in Quartus.

    https://www.intel.com/content/www/us/en/docs/programmable/683432/22-4/faq.html


    The tcl command "execute_module -tool" support these option [-tool <asm|cdb|drc|eda|fit|map|syn|pow|sta|stp|sim|si|cpf|ipg|pfg> ]

    I think the asm_sof is an illegal value. And there is no "output directory" option available for execute_module command.


    Best Regards,

    Richard Tan



  • As we do not receive any response from you on the previous question/reply/answer that we have provided. I now transition this thread to community support.


    Best Regards,

    Richard Tan


    p/s: If any answer from the community or Intel Support are helpful, please feel free to give best answer or rate 4/5 survey.


    • Amir3's avatar
      Amir3
      Icon for Occasional Contributor rankOccasional Contributor

      Hey Richard,

      My updated TCL script:

      package require ::quartus::project
      package require ::quartus::flow

      # Set the project directory
      set project_dir "C:/Amir_Berger/Project/Y"

      # Set the project name
      set project_name "X"

      # Set the output directory for compiled files
      set output_dir "$project_dir/output_files"

      # Set the name of the SOF file
      set sof_file "$project_name.sof"

      # Set the output directory for SOF file
      set sof_dir "$output_dir/$sof_file"

      # Open the project
      project_open $project_dir/$project_name.qpf

      # Complie Design
      execute_flow -compile
      qexec "quartus_pgm -c 1 -m JTAG -o MILTECH_2024.sof"

      The errors I got:

      Error:while executing
      Error:"qexec "quartus_pgm -c 1 -m JTAG -o MILTECH_2024.sof""
      Error: (file "ProgSOF_1.tcl" line 28)
      Error: invoked from within
      Error:"_source ProgSOF_1.tcl"
      Error: ("uplevel" body line 1)
      Error: invoked from within
      Error:"uplevel 1 $cmd "
      Error: (procedure "source" line 5)
      Error: invoked from within
      Error:"source ProgSOF_1.tcl"

      Following this error description, I understand that the problem is related to the "qexec "quartus_pgm.." line, but I don't understand why.

      I will appreciate your help

      Thanks.