Afficheur_7SEG.tcl
6.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
#
# Report generation script generated by Vivado
#
proc create_report { reportName command } {
set status "."
append status $reportName ".fail"
if { [file exists $status] } {
eval file delete [glob $status]
}
send_msg_id runtcl-4 info "Executing : $command"
set retval [eval catch { $command } msg]
if { $retval != 0 } {
set fp [open $status w]
close $fp
send_msg_id runtcl-5 warning "$msg"
}
}
proc start_step { step } {
set stopFile ".stop.rst"
if {[file isfile .stop.rst]} {
puts ""
puts "*** Halting run - EA reset detected ***"
puts ""
puts ""
return -code error
}
set beginFile ".$step.begin.rst"
set platform "$::tcl_platform(platform)"
set user "$::tcl_platform(user)"
set pid [pid]
set host ""
if { [string equal $platform unix] } {
if { [info exist ::env(HOSTNAME)] } {
set host $::env(HOSTNAME)
}
} else {
if { [info exist ::env(COMPUTERNAME)] } {
set host $::env(COMPUTERNAME)
}
}
set ch [open $beginFile w]
puts $ch "<?xml version=\"1.0\"?>"
puts $ch "<ProcessHandle Version=\"1\" Minor=\"0\">"
puts $ch " <Process Command=\".planAhead.\" Owner=\"$user\" Host=\"$host\" Pid=\"$pid\">"
puts $ch " </Process>"
puts $ch "</ProcessHandle>"
close $ch
}
proc end_step { step } {
set endFile ".$step.end.rst"
set ch [open $endFile w]
close $ch
}
proc step_failed { step } {
set endFile ".$step.error.rst"
set ch [open $endFile w]
close $ch
}
set_msg_config -id {Synth 8-256} -limit 10000
set_msg_config -id {Synth 8-638} -limit 10000
start_step init_design
set ACTIVE_STEP init_design
set rc [catch {
create_msg_db init_design.pb
set_param chipscope.maxJobs 1
set_param synth.incrementalSynthesisCache C:/Xilinx/Vivado/2019.1/bin/.Xil/Vivado-7292-WIN10-TP/incrSyn
set_param xicom.use_bs_reader 1
create_project -in_memory -part xc7a35tcpg236-1
set_property board_part digilentinc.com:basys3:part0:1.2 [current_project]
set_property design_mode GateLvl [current_fileset]
set_param project.singleFileAddWarning.threshold 0
set_property webtalk.parent_dir C:/Users/profil/Desktop/Afficheur_7SEG/Afficheur_7SEG.cache/wt [current_project]
set_property parent.project_path C:/Users/profil/Desktop/Afficheur_7SEG/Afficheur_7SEG.xpr [current_project]
set_property ip_output_repo C:/Users/profil/Desktop/Afficheur_7SEG/Afficheur_7SEG.cache/ip [current_project]
set_property ip_cache_permissions {read write} [current_project]
add_files -quiet C:/Users/profil/Desktop/Afficheur_7SEG/Afficheur_7SEG.runs/synth_1/Afficheur_7SEG.dcp
read_xdc C:/Users/profil/Desktop/Afficheur_7SEG/Afficheur_7SEG.srcs/constrs_1/imports/TP1/Basys-3-Master.xdc
link_design -top Afficheur_7SEG -part xc7a35tcpg236-1
close_msg_db -file init_design.pb
} RESULT]
if {$rc} {
step_failed init_design
return -code error $RESULT
} else {
end_step init_design
unset ACTIVE_STEP
}
start_step opt_design
set ACTIVE_STEP opt_design
set rc [catch {
create_msg_db opt_design.pb
opt_design
write_checkpoint -force Afficheur_7SEG_opt.dcp
create_report "impl_1_opt_report_drc_0" "report_drc -file Afficheur_7SEG_drc_opted.rpt -pb Afficheur_7SEG_drc_opted.pb -rpx Afficheur_7SEG_drc_opted.rpx"
close_msg_db -file opt_design.pb
} RESULT]
if {$rc} {
step_failed opt_design
return -code error $RESULT
} else {
end_step opt_design
unset ACTIVE_STEP
}
start_step place_design
set ACTIVE_STEP place_design
set rc [catch {
create_msg_db place_design.pb
if { [llength [get_debug_cores -quiet] ] > 0 } {
implement_debug_core
}
place_design
write_checkpoint -force Afficheur_7SEG_placed.dcp
create_report "impl_1_place_report_io_0" "report_io -file Afficheur_7SEG_io_placed.rpt"
create_report "impl_1_place_report_utilization_0" "report_utilization -file Afficheur_7SEG_utilization_placed.rpt -pb Afficheur_7SEG_utilization_placed.pb"
create_report "impl_1_place_report_control_sets_0" "report_control_sets -verbose -file Afficheur_7SEG_control_sets_placed.rpt"
close_msg_db -file place_design.pb
} RESULT]
if {$rc} {
step_failed place_design
return -code error $RESULT
} else {
end_step place_design
unset ACTIVE_STEP
}
start_step route_design
set ACTIVE_STEP route_design
set rc [catch {
create_msg_db route_design.pb
route_design
write_checkpoint -force Afficheur_7SEG_routed.dcp
create_report "impl_1_route_report_drc_0" "report_drc -file Afficheur_7SEG_drc_routed.rpt -pb Afficheur_7SEG_drc_routed.pb -rpx Afficheur_7SEG_drc_routed.rpx"
create_report "impl_1_route_report_methodology_0" "report_methodology -file Afficheur_7SEG_methodology_drc_routed.rpt -pb Afficheur_7SEG_methodology_drc_routed.pb -rpx Afficheur_7SEG_methodology_drc_routed.rpx"
create_report "impl_1_route_report_power_0" "report_power -file Afficheur_7SEG_power_routed.rpt -pb Afficheur_7SEG_power_summary_routed.pb -rpx Afficheur_7SEG_power_routed.rpx"
create_report "impl_1_route_report_route_status_0" "report_route_status -file Afficheur_7SEG_route_status.rpt -pb Afficheur_7SEG_route_status.pb"
create_report "impl_1_route_report_timing_summary_0" "report_timing_summary -max_paths 10 -file Afficheur_7SEG_timing_summary_routed.rpt -pb Afficheur_7SEG_timing_summary_routed.pb -rpx Afficheur_7SEG_timing_summary_routed.rpx -warn_on_violation "
create_report "impl_1_route_report_incremental_reuse_0" "report_incremental_reuse -file Afficheur_7SEG_incremental_reuse_routed.rpt"
create_report "impl_1_route_report_clock_utilization_0" "report_clock_utilization -file Afficheur_7SEG_clock_utilization_routed.rpt"
create_report "impl_1_route_report_bus_skew_0" "report_bus_skew -warn_on_violation -file Afficheur_7SEG_bus_skew_routed.rpt -pb Afficheur_7SEG_bus_skew_routed.pb -rpx Afficheur_7SEG_bus_skew_routed.rpx"
close_msg_db -file route_design.pb
} RESULT]
if {$rc} {
write_checkpoint -force Afficheur_7SEG_routed_error.dcp
step_failed route_design
return -code error $RESULT
} else {
end_step route_design
unset ACTIVE_STEP
}
start_step write_bitstream
set ACTIVE_STEP write_bitstream
set rc [catch {
create_msg_db write_bitstream.pb
catch { write_mem_info -force Afficheur_7SEG.mmi }
write_bitstream -force Afficheur_7SEG.bit
catch {write_debug_probes -quiet -force Afficheur_7SEG}
catch {file copy -force Afficheur_7SEG.ltx debug_nets.ltx}
close_msg_db -file write_bitstream.pb
} RESULT]
if {$rc} {
step_failed write_bitstream
return -code error $RESULT
} else {
end_step write_bitstream
unset ACTIVE_STEP
}