Hog Hog2024.2-4
pre-implementation.tcl
Go to the documentation of this file.
1 #!/usr/bin/env tclsh
2 # Copyright 2018-2024 The University of Birmingham
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 # http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15 
16 set old_path [pwd]
17 set tcl_path [file normalize "[file dirname [info script]]/.."]
18 source $tcl_path/hog.tcl
19 
20 if {[IsQuartus]} {
21  # Quartus
22  Msg Error "Pre-module scripts are not supported in Quartus mode!"
23  return TCL_ERROR
24 }
25 
26 # Go to repository path
27 cd "$tcl_path/../.."
28 
29 if {[IsXilinx]} {
30  # Vivado
31  if {[IsISE]} {
32  set proj_file [get_property DIRECTORY [current_project]]
33  } else {
34  set proj_file [get_property parent.project_path [current_project]]
35  }
36  set proj_dir [file normalize [file dirname $proj_file]]
37  set proj_name [file rootname [file tail $proj_file]]
38  set group_name [GetGroupName $proj_dir "$tcl_path/../.."]
39 } else {
40  #Tclssh
41  set proj_file $old_path/[file tail $old_path].xpr
42  Msg CriticalWarning "You seem to be running locally on tclsh, so this is a debug, the project file will be set to $proj_file and was derived from the path you launched this script from: $old_path. If you want this script to work properly in debug mode, please launch it from the top folder of one project, for example Repo/Projects/fpga1/ or Repo/Top/fpga1/"
43 }
44 
45 #number of threads
46 set maxThreads [GetMaxThreads [file normalize $tcl_path/../../Top/$group_name/$proj_name]]
47 
48 if {$maxThreads != 1} {
49  Msg CriticalWarning "Multithreading enabled. Bitfile will not be deterministic. Number of threads: $maxThreads"
50 } else {
51  Msg Info "Disabling multithreading to assure deterministic bitfile"
52 }
53 
54 if {[IsXilinx]} {
55  # Vivado
56  set_param general.maxThreads $maxThreads
57 } else {
58  #Tclssh
59 }
60 
61 
62 ######## Reset files before implementation ###########
63 ResetRepoFiles "./Projects/hog_reset_files"
64 
65 set user_pre_implementation_file "./Top/$group_name/$proj_name/pre-implementation.tcl"
66 if {[file exists $user_pre_implementation_file]} {
67  Msg Status "Sourcing user pre-implementation file $user_pre_implementation_file"
68  source $user_pre_implementation_file
69 }
70 
71 cd $old_path
72 Msg Info "All done"