| 1 | # \r |
| 2 | # Report generation script generated by Vivado\r |
| 3 | # \r |
| 4 | \r |
| 5 | proc create_report { reportName command } {\r |
| 6 | set status "."\r |
| 7 | append status $reportName ".fail"\r |
| 8 | if { [file exists $status] } {\r |
| 9 | eval file delete [glob $status]\r |
| 10 | }\r |
| 11 | send_msg_id runtcl-4 info "Executing : $command"\r |
| 12 | set retval [eval catch { $command } msg]\r |
| 13 | if { $retval != 0 } {\r |
| 14 | set fp [open $status w]\r |
| 15 | close $fp\r |
| 16 | send_msg_id runtcl-5 warning "$msg"\r |
| 17 | }\r |
| 18 | }\r |
| 19 | proc start_step { step } {\r |
| 20 | set stopFile ".stop.rst"\r |
| 21 | if {[file isfile .stop.rst]} {\r |
| 22 | puts ""\r |
| 23 | puts "*** Halting run - EA reset detected ***"\r |
| 24 | puts ""\r |
| 25 | puts ""\r |
| 26 | return -code error\r |
| 27 | }\r |
| 28 | set beginFile ".$step.begin.rst"\r |
| 29 | set platform "$::tcl_platform(platform)"\r |
| 30 | set user "$::tcl_platform(user)"\r |
| 31 | set pid [pid]\r |
| 32 | set host ""\r |
| 33 | if { [string equal $platform unix] } {\r |
| 34 | if { [info exist ::env(HOSTNAME)] } {\r |
| 35 | set host $::env(HOSTNAME)\r |
| 36 | }\r |
| 37 | } else {\r |
| 38 | if { [info exist ::env(COMPUTERNAME)] } {\r |
| 39 | set host $::env(COMPUTERNAME)\r |
| 40 | }\r |
| 41 | }\r |
| 42 | set ch [open $beginFile w]\r |
| 43 | puts $ch "<?xml version=\"1.0\"?>"\r |
| 44 | puts $ch "<ProcessHandle Version=\"1\" Minor=\"0\">"\r |
| 45 | puts $ch " <Process Command=\".planAhead.\" Owner=\"$user\" Host=\"$host\" Pid=\"$pid\">"\r |
| 46 | puts $ch " </Process>"\r |
| 47 | puts $ch "</ProcessHandle>"\r |
| 48 | close $ch\r |
| 49 | }\r |
| 50 | \r |
| 51 | proc end_step { step } {\r |
| 52 | set endFile ".$step.end.rst"\r |
| 53 | set ch [open $endFile w]\r |
| 54 | close $ch\r |
| 55 | }\r |
| 56 | \r |
| 57 | proc step_failed { step } {\r |
| 58 | set endFile ".$step.error.rst"\r |
| 59 | set ch [open $endFile w]\r |
| 60 | close $ch\r |
| 61 | }\r |
| 62 | \r |
| 63 | \r |
| 64 | start_step init_design\r |
| 65 | set ACTIVE_STEP init_design\r |
| 66 | set rc [catch {\r |
| 67 | create_msg_db init_design.pb\r |
| 68 | set_param chipscope.maxJobs 6\r |
| 69 | create_project -in_memory -part xc7z007sclg225-1\r |
| 70 | set_property board_part_repo_paths {C:/Users/kremlin/AppData/Roaming/Xilinx/Vivado/2019.1/xhub/board_store} [current_project]\r |
| 71 | set_property board_part em.avnet.com:minized:part0:1.2 [current_project]\r |
| 72 | set_property design_mode GateLvl [current_fileset]\r |
| 73 | set_param project.singleFileAddWarning.threshold 0\r |
| 74 | set_property webtalk.parent_dir S:/vivado-projects/esdi/esdi/esdi.cache/wt [current_project]\r |
| 75 | set_property parent.project_path S:/vivado-projects/esdi/esdi/esdi.xpr [current_project]\r |
| 76 | set_property ip_output_repo S:/vivado-projects/esdi/esdi/esdi.cache/ip [current_project]\r |
| 77 | set_property ip_cache_permissions {read write} [current_project]\r |
| 78 | add_files -quiet S:/vivado-projects/esdi/esdi/esdi.runs/synth_1/esdi_ctl_phy.dcp\r |
| 79 | link_design -top esdi_ctl_phy -part xc7z007sclg225-1\r |
| 80 | close_msg_db -file init_design.pb\r |
| 81 | } RESULT]\r |
| 82 | if {$rc} {\r |
| 83 | step_failed init_design\r |
| 84 | return -code error $RESULT\r |
| 85 | } else {\r |
| 86 | end_step init_design\r |
| 87 | unset ACTIVE_STEP \r |
| 88 | }\r |
| 89 | \r |
| 90 | start_step opt_design\r |
| 91 | set ACTIVE_STEP opt_design\r |
| 92 | set rc [catch {\r |
| 93 | create_msg_db opt_design.pb\r |
| 94 | opt_design \r |
| 95 | write_checkpoint -force esdi_ctl_phy_opt.dcp\r |
| 96 | create_report "impl_1_opt_report_drc_0" "report_drc -file esdi_ctl_phy_drc_opted.rpt -pb esdi_ctl_phy_drc_opted.pb -rpx esdi_ctl_phy_drc_opted.rpx"\r |
| 97 | close_msg_db -file opt_design.pb\r |
| 98 | } RESULT]\r |
| 99 | if {$rc} {\r |
| 100 | step_failed opt_design\r |
| 101 | return -code error $RESULT\r |
| 102 | } else {\r |
| 103 | end_step opt_design\r |
| 104 | unset ACTIVE_STEP \r |
| 105 | }\r |
| 106 | \r |
| 107 | start_step place_design\r |
| 108 | set ACTIVE_STEP place_design\r |
| 109 | set rc [catch {\r |
| 110 | create_msg_db place_design.pb\r |
| 111 | if { [llength [get_debug_cores -quiet] ] > 0 } { \r |
| 112 | implement_debug_core \r |
| 113 | } \r |
| 114 | place_design \r |
| 115 | write_checkpoint -force esdi_ctl_phy_placed.dcp\r |
| 116 | create_report "impl_1_place_report_io_0" "report_io -file esdi_ctl_phy_io_placed.rpt"\r |
| 117 | create_report "impl_1_place_report_utilization_0" "report_utilization -file esdi_ctl_phy_utilization_placed.rpt -pb esdi_ctl_phy_utilization_placed.pb"\r |
| 118 | create_report "impl_1_place_report_control_sets_0" "report_control_sets -verbose -file esdi_ctl_phy_control_sets_placed.rpt"\r |
| 119 | close_msg_db -file place_design.pb\r |
| 120 | } RESULT]\r |
| 121 | if {$rc} {\r |
| 122 | step_failed place_design\r |
| 123 | return -code error $RESULT\r |
| 124 | } else {\r |
| 125 | end_step place_design\r |
| 126 | unset ACTIVE_STEP \r |
| 127 | }\r |
| 128 | \r |
| 129 | start_step route_design\r |
| 130 | set ACTIVE_STEP route_design\r |
| 131 | set rc [catch {\r |
| 132 | create_msg_db route_design.pb\r |
| 133 | route_design \r |
| 134 | write_checkpoint -force esdi_ctl_phy_routed.dcp\r |
| 135 | create_report "impl_1_route_report_drc_0" "report_drc -file esdi_ctl_phy_drc_routed.rpt -pb esdi_ctl_phy_drc_routed.pb -rpx esdi_ctl_phy_drc_routed.rpx"\r |
| 136 | create_report "impl_1_route_report_methodology_0" "report_methodology -file esdi_ctl_phy_methodology_drc_routed.rpt -pb esdi_ctl_phy_methodology_drc_routed.pb -rpx esdi_ctl_phy_methodology_drc_routed.rpx"\r |
| 137 | create_report "impl_1_route_report_power_0" "report_power -file esdi_ctl_phy_power_routed.rpt -pb esdi_ctl_phy_power_summary_routed.pb -rpx esdi_ctl_phy_power_routed.rpx"\r |
| 138 | create_report "impl_1_route_report_route_status_0" "report_route_status -file esdi_ctl_phy_route_status.rpt -pb esdi_ctl_phy_route_status.pb"\r |
| 139 | create_report "impl_1_route_report_timing_summary_0" "report_timing_summary -max_paths 10 -file esdi_ctl_phy_timing_summary_routed.rpt -pb esdi_ctl_phy_timing_summary_routed.pb -rpx esdi_ctl_phy_timing_summary_routed.rpx -warn_on_violation "\r |
| 140 | create_report "impl_1_route_report_incremental_reuse_0" "report_incremental_reuse -file esdi_ctl_phy_incremental_reuse_routed.rpt"\r |
| 141 | create_report "impl_1_route_report_clock_utilization_0" "report_clock_utilization -file esdi_ctl_phy_clock_utilization_routed.rpt"\r |
| 142 | create_report "impl_1_route_report_bus_skew_0" "report_bus_skew -warn_on_violation -file esdi_ctl_phy_bus_skew_routed.rpt -pb esdi_ctl_phy_bus_skew_routed.pb -rpx esdi_ctl_phy_bus_skew_routed.rpx"\r |
| 143 | close_msg_db -file route_design.pb\r |
| 144 | } RESULT]\r |
| 145 | if {$rc} {\r |
| 146 | write_checkpoint -force esdi_ctl_phy_routed_error.dcp\r |
| 147 | step_failed route_design\r |
| 148 | return -code error $RESULT\r |
| 149 | } else {\r |
| 150 | end_step route_design\r |
| 151 | unset ACTIVE_STEP \r |
| 152 | }\r |
| 153 | \r |