# This script will open an existing project, set default assignments, add # project assignments and compile. After the csf.rpt file has been copied to # directory compile1_dir, the script removes the FMAX_REQUIREMENT and compiles # again, leaving the new report file in the project directory. # # After copying this script to the project directory, # it should be run from the MS-DOS prompt with the command: # quartus_cmd -f comp2.tcl # # User settings: # projname = Name of project file (.quartus) # focusname = Name of compilation focus # filname = Name of report file # compile1_dir = Target directory for first compilation report #-------------- Set project variables--------------- # User settings set projname twodiff set focusname twodiff set filename twodiff.csf.rpt set compile1_dir fmax_req_set #---------------Set base directory for file IO----------------- # Checks to see if target directory exists, if not, create set base_directory [pwd] cd $base_directory if {[file exists $compile1_dir]} { puts "Directory '$compile1_dir' exists" } else { file mkdir $base_directory/$compile1_dir puts "Created directory '$compile1_dir'" } #-------------- Open project and set compilation focus-------------- # Verify that project exists set status [project exists $projname] if {$status == 1} { # Open project set status [project open $projname] if {[string match $projname $status]} { puts "Opened project $projname" } # Set compilation focus set status [project set_active_cmp $focusname] if {[string match "cmp" $status]} { puts "Set '$focusname' as active focus of project '$projname'" } else { puts "Error setting project focus" exit } # Exit if project DNE } else { puts "Project $projname does not exist" exit } #---------------Add default parameters ---------------- puts "\nDefault parameter(s):" set status [project add_default_parameter AUTO_CARRY_CHAINS "on"] if {[string match "project default parameter added" $status]} { puts [project get_default_parameter_value AUTO_CARRY_CHAINS] } set status [project add_default_parameter CARRY_CHAIN_LENGTH "12"] if {[string match "project default parameter added" $status]} { puts [project get_default_parameter_value CARRY_CHAIN_LENGTH] } set status [project add_default_parameter AUTO_INPUT_REGISTERS "on"] if {[string match "project default parameter added" $status]} { puts [project get_default_parameter_value AUTO_INPUT_REGISTERS] } set status [project add_default_parameter AUTO_OUTPUT_REGISTERS "on"] if {[string match "project default parameter added" $status]} { puts [project get_default_parameter_value AUTO_OUTPUT_REGISTERS] } set status [project add_default_parameter REMOVE_DUPLICATE_REGISTERS "off"] if {[string match "project default parameter added" $status]} { puts [project get_default_parameter_value REMOVE_DUPLICATE_REGISTERS] } #---------------------------Add Assignments-------------------- set status [project add_assignment "" "" "" "" FMAX_REQUIREMENT 66\MHZ] if {[string match "project assignment added" $status]} { puts "\nAssignment made: FMAX = 66Mhz" } set status [project add_assignment "" "" "" "" SLOW_SLEW_RATE "ON"] if {[string match "project assignment added" $status]} { puts "Assignment made: SLOW_SLEW_RATE = ON" } set status [project add_assignment "" "" "" "" STATE_MACHINE_PROCESSING "One-Hot"] if {[string match "project assignment added" $status]} { puts "Assignment made: STATE_MACHINE_PROCESSING = ONE-HOT" } set status [project add_assignment "" "" "" "" TURBO_BIT "ON"] if {[string match "project assignment added" $status]} { puts "Assignment made: TURBO_BIT = ON" } set status [project add_assignment "" "" "" "" AUTO_GLOBAL_MEMORY_CONTROLS "off"] if {[string match "project assignment added" $status]} { puts "Assignment made: AUTO_GLOBAL_MEMORY_CONTROLS = OFF" } set status [project add_assignment "" "" "" "" PARALLEL_EXPANDER_CHAIN_LENGTH "16"] if {[string match "project assignment added" $status]} { puts "Assignment made: PARALLEL_EXPANDER_CHAIN_LENGTH = 16" } set status [project add_assignment "" "" "" "" INCLUDE_PIN_DELAYS_IN_CALCULATIONS "on"] if {[string match "project assignment added" $status]} { puts "Assignment made: INCLUDE_PIN_DELAYS_IN_CALCULATIONS = ON" } set status [project add_assignment "" "" "" "" CUT_OFF_IO_PIN_FEEDBACK "ON"] if {[string match "project assignment added" $status]} { puts "Assignment made: CUT_OFF_IO_PIN_FEEDBACK = ON" } set total_assignments [project get_assignment_count "" "" ""] puts "\nTotal assignment count (including implicit assignments): $total_assignments" #--------------------------------Compile------------------------------- set status [cmp start] if {$status == 1} { puts "Compiling project '$projname' ... \n" } else { puts "Compiler failed." } while {[cmp is_running]} { after 1000 FlushEventQueue } puts "\nFirst compilation of '$projname' complete\n" #---------------------------Move report files to compile1_dir------------- file copy -force "$focusname.csf.rpt" $base_directory/$compile1_dir/$filename puts "\nResults copied to '$base_directory/$compile1_dir/$filename' successfully\n" #------------------------Remove Assignments-------------------------- set status [project remove_assignment "" "" "" "" FMAX_REQUIREMENT 66\MHZ] if {[string match "project assignment removed" $status]} { puts "\nAssignment removed: FMAX = 66Mhz" } #--------------------------------Compile------------------------------- set status [cmp start] if {$status == 1} { puts "Compiling project '$projname' ... \n" } else { puts "Compiler failed." } while {[cmp is_running]} { after 1000 FlushEventQueue } puts "\nSecond compilation of '$projname' complete\n" #------------------Close project----------------- project close