logic_log.txt 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367
  1. > set sh_continue_on_error false
  2. > set sh_echo_on_source true
  3. > set sh_quiet_on_source true
  4. > set cc_critical_as_fatal true
  5. >
  6. > set_seed_rand 10
  7. > if { ! [info exists LOGIC_DEVICE] } {
  8. set LOGIC_DEVICE AGRV2KL100
  9. }
  10. > if { ! [info exists LOGIC_DESIGN] } {
  11. set LOGIC_DESIGN top
  12. }
  13. > if { ! [info exists LOGIC_MODULE] } {
  14. set LOGIC_MODULE top
  15. }
  16. > if { ! [info exists IP_INSTALL_DIR] } {
  17. set IP_INSTALL_DIR ""
  18. }
  19. > if { ! [info exists LOGIC_DIR] } {
  20. set LOGIC_DIR .
  21. }
  22. > if { ! [info exists LOGIC_VV] } {
  23. set LOGIC_VV "${LOGIC_DESIGN}.v"
  24. }
  25. > if { ! [info exists IP_VV] } {
  26. set IP_VV ""
  27. }
  28. > if { ! [info exists LOGIC_ASF] } {
  29. set LOGIC_ASF ""
  30. }
  31. > if { ! [info exists LOGIC_PRE] } {
  32. set LOGIC_PRE ""
  33. }
  34. > if { ! [info exists LOGIC_POST] } {
  35. set LOGIC_POST ""
  36. }
  37. > if { ! [info exists LOGIC_FORCE] } {
  38. set LOGIC_FORCE false
  39. }
  40. > if { ! [info exists LOGIC_COMPRESS] } {
  41. set LOGIC_COMPRESS false
  42. }
  43. >
  44. > cd $LOGIC_DIR
  45. >
  46. > alta::set_verbose_cmd false
  47. > set logic_qsf ${LOGIC_DESIGN}.qsf
  48. > set skip_setup false
  49. > if { [file exists $logic_qsf] } {
  50. if { $LOGIC_FORCE } {
  51. alta::tcl_info "Overwrite existing LOGIC preparation files in $LOGIC_DIR"
  52. } else {
  53. alta::tcl_warn "Files for LOGIC preparation already exist in $LOGIC_DIR, will not overwrite"
  54. set skip_setup true
  55. }
  56. }
  57. Warn: Files for LOGIC preparation already exist in logic, will not overwrite.
  58. > set logic_ip false
  59. > if { $IP_INSTALL_DIR != "" } {
  60. set logic_ip true
  61. }
  62. >
  63. > set ETC_DIR [file join [alta::prog_home] "etc"]
  64. > set IP_FILES ""
  65. > set VERILOG_FILES $LOGIC_VV
  66. > if { $IP_VV != "" } {
  67. set VERILOG_FILES "$VERILOG_FILES $IP_VV"
  68. }
  69. > set VQM_FILES ""
  70. > set VHDL_FILES ""
  71. > set AF_QUARTUS_TEMPL [file join $ETC_DIR "af_quartus.tcl"]
  72. > set AF_QUARTUS "af_quartus.tcl"
  73. > set AF_IP_TEMPL [file join $ETC_DIR "af_ip.tcl"]
  74. > set AF_IP "af_ip.tcl"
  75. > set AF_MAP_TEMPL ""
  76. > set AF_MAP ""
  77. > set AF_RUN_TEMPL [file join $ETC_DIR "af_run.tcl"]
  78. > set AF_RUN "af_run.tcl"
  79. > set AF_BATCH_TEMPL ""
  80. > set AF_BATCH ""
  81. > set VE_FILE ""
  82. >
  83. > if { ! [info exists ORIGINAL_DIR] } {
  84. set ORIGINAL_DIR ""
  85. }
  86. > if { ! [info exists ORIGINAL_OUTPUT] } {
  87. set ORIGINAL_OUTPUT ""
  88. }
  89. > if { ! [info exists ORIGINAL_QSF] } {
  90. set ORIGINAL_QSF ""
  91. }
  92. > if { ! [info exists ORIGINAL_PIN] } {
  93. set ORIGINAL_PIN ""
  94. }
  95. >
  96. > set GCLK_CNT -1; # Allow an extra gclk for GCLKSW
  97. > set USE_DESIGN_TEMPL true
  98. >
  99. > set logic_hx ${LOGIC_DESIGN}.hx
  100. > set hx_fp [open $logic_hx r]
  101. > set hsi_freq 0
  102. > set hse_freq 0
  103. > set sys_freq 0
  104. > set bus_freq 0
  105. > while { [gets $hx_fp line] >= 0 } {
  106. set words [split $line]
  107. if { [lindex $words 0] == "#define" } {
  108. if { [lindex $words 1] == "BOARD_HSI_FREQUENCY" } {
  109. set hsi_freq [lindex $words 2]
  110. } elseif { [lindex $words 1] == "BOARD_HSE_FREQUENCY" } {
  111. set hse_freq [lindex $words 2]
  112. } elseif { [lindex $words 1] == "BOARD_PLL_FREQUENCY" } {
  113. set sys_freq [lindex $words 2]
  114. } elseif { [lindex $words 1] == "BOARD_BUS_FREQUENCY" } {
  115. set bus_freq [lindex $words 2]
  116. }
  117. if { [lindex $words 1] == "BOARD_PLL_CLKIN" } {
  118. set BOARD_PLL_CLKIN [lindex $words 2]
  119. }
  120. if { [lindex $words 1] == "USB0_MODE" } {
  121. set USB0_MODE [lindex $words 2]
  122. }
  123. }
  124. }
  125. > close $hx_fp
  126. >
  127. > if { ! $logic_ip } {
  128. set sdc_file ${LOGIC_DESIGN}.sdc
  129. set sdc_ip ""
  130. } else {
  131. set sdc_file ${LOGIC_DESIGN}_.sdc
  132. set sdc_ip ${LOGIC_DESIGN}.sdc
  133. }
  134. >
  135. > if { ! $skip_setup } {
  136. if { ! [file exists $sdc_file] } {
  137. set sdc_fp [open $sdc_file w]
  138. puts $sdc_fp "# pio_begin"
  139. if { $hsi_freq != 0 } {
  140. set hsi_period [expr 1000000000.0/$hsi_freq]
  141. puts $sdc_fp "if { ! \[info exists ::HSI_PERIOD\] } {"
  142. puts $sdc_fp " set ::HSI_PERIOD $hsi_period"
  143. puts $sdc_fp "}"
  144. puts $sdc_fp "create_clock -name PIN_HSI -period \$::HSI_PERIOD \[get_ports PIN_HSI\]"
  145. puts $sdc_fp "set_clock_groups -asynchronous -group PIN_HSI"
  146. }
  147. if { $hse_freq != 0 } {
  148. set hse_period [expr 1000000000.0/$hse_freq]
  149. puts $sdc_fp "if { ! \[info exists ::HSE_PERIOD\] } {"
  150. puts $sdc_fp " set ::HSE_PERIOD $hse_period"
  151. puts $sdc_fp "}"
  152. puts $sdc_fp "create_clock -name PIN_HSE -period \$::HSE_PERIOD \[get_ports PIN_HSE\]"
  153. puts $sdc_fp "set_clock_groups -asynchronous -group PIN_HSE"
  154. }
  155. puts $sdc_fp "derive_pll_clocks -create_base_clocks"
  156. puts $sdc_fp "# pio_end"
  157. close $sdc_fp
  158. }
  159. if { $sdc_ip != "" && ! [file exists $sdc_ip] } {
  160. set sdc_fp [open $sdc_ip w]
  161. puts $sdc_fp "# pio_begin"
  162. if { $sys_freq != 0 } {
  163. set sys_period [expr 1000000000.0/$sys_freq]
  164. puts $sdc_fp "create_clock -name sys_clock -period $sys_period \[get_ports sys_clock\]"
  165. }
  166. if { $bus_freq != 0 } {
  167. set bus_period [expr 1000000000.0/$bus_freq]
  168. puts $sdc_fp "create_clock -name bus_clock -period $bus_period \[get_ports bus_clock\]"
  169. }
  170. puts $sdc_fp "# pio_end"
  171. close $sdc_fp
  172. }
  173. load_architect -no_route -type $LOGIC_DEVICE
  174. alta::setupRun ${LOGIC_DESIGN} ${LOGIC_MODULE} \
  175. "${IP_FILES}" \
  176. "${VERILOG_FILES}" \
  177. "${VQM_FILES}" \
  178. "${VHDL_FILES}"\
  179. "${AF_QUARTUS_TEMPL}" "${AF_QUARTUS}"\
  180. "${AF_IP_TEMPL}" "${AF_IP}" \
  181. "${AF_MAP_TEMPL}" "${AF_MAP}" \
  182. "${AF_RUN_TEMPL}" "${AF_RUN}" \
  183. "${AF_BATCH_TEMPL}" "${AF_BATCH}" \
  184. "${VE_FILE}" \
  185. "." "${ORIGINAL_DIR}" "${ORIGINAL_OUTPUT}"\
  186. "${ORIGINAL_QSF}" "${ORIGINAL_PIN}" \
  187. "${GCLK_CNT}" "${USE_DESIGN_TEMPL}"
  188. if { $logic_ip } {
  189. set qsf_fp [open $logic_qsf]
  190. set qsf_lines {}
  191. set is_pio false
  192. while { [gets $qsf_fp line] >= 0 } {
  193. if { [string first "pio_begin" $line] >= 0 } {
  194. set is_pio true
  195. } elseif { [string first "pio_end" $line] >= 0 } {
  196. set is_pio false
  197. } elseif { ! $is_pio } {
  198. lappend qsf_lines $line
  199. }
  200. }
  201. close $qsf_fp
  202. set qsf_fp [open $logic_qsf w]
  203. puts $qsf_fp "# pio_begin >>>>>> DO NOT MODIFY THIS SECTION! >>>>>>"
  204. puts $qsf_fp "set_instance_assignment -name VIRTUAL_PIN ON -to *"
  205. puts $qsf_fp "# pio_end <<<<<< DO NOT MODIFY THIS SECTION! <<<<<<"
  206. foreach line $qsf_lines {
  207. puts $qsf_fp $line
  208. }
  209. close $qsf_fp
  210. set af_run af_run.tcl
  211. set run_fp [open $af_run]
  212. set run_lines {}
  213. set is_pio false
  214. while { [gets $run_fp line] >= 0 } {
  215. if { [string first "pio_begin" $line] >= 0 } {
  216. set is_pio true
  217. } elseif { [string first "pio_end" $line] >= 0 } {
  218. set is_pio false
  219. } elseif { ! $is_pio } {
  220. lappend run_lines $line
  221. }
  222. }
  223. close $run_fp
  224. set run_fp [open $af_run w]
  225. puts $run_fp "# pio_begin >>>>>> DO NOT MODIFY THIS SECTION! >>>>>>"
  226. puts $run_fp "set FLOW PACK"
  227. puts $run_fp "# pio_end <<<<<< DO NOT MODIFY THIS SECTION! <<<<<<"
  228. foreach line $run_lines {
  229. puts $run_fp $line
  230. }
  231. close $run_fp
  232. }
  233. if { true } {
  234. set supra_proj ${LOGIC_DESIGN}.proj
  235. set proj_fp [open $supra_proj w]
  236. puts $proj_fp {[GuiMigrateSetupPage]}
  237. puts $proj_fp "design=$LOGIC_DESIGN"
  238. puts $proj_fp "device=$LOGIC_DEVICE"
  239. puts $proj_fp ""
  240. puts $proj_fp {[GuiMigrateRunPage]}
  241. puts $proj_fp "fitting=1"
  242. puts $proj_fp "fitter=5"
  243. puts $proj_fp "effort=2"
  244. puts $proj_fp "skew=2"
  245. if { $logic_ip } {
  246. puts $proj_fp "flow=0"
  247. }
  248. close $proj_fp
  249. }
  250. }
  251. >
  252. > if { true } {
  253. set pre_asf ${LOGIC_DESIGN}.pre.asf
  254. set pre_fp [open $pre_asf r];
  255. set pre_lines {}
  256. set is_pio false
  257. while { [gets $pre_fp line] >= 0 } {
  258. if { [string first "db_io_name_priority" $line] >= 0 ||
  259. [string first "pio_begin" $line] >= 0 } {
  260. set is_pio true
  261. } elseif { [string first "pio_end" $line] >= 0 } {
  262. set is_pio false
  263. } elseif { ! $is_pio } {
  264. lappend pre_lines $line
  265. }
  266. }
  267. close $pre_fp
  268. set pre_fp [open $pre_asf w]
  269. foreach line $pre_lines {
  270. puts $pre_fp $line
  271. }
  272. puts $pre_fp "# pio_begin >>>>>> DO NOT MODIFY THIS SECTION! >>>>>>"
  273. if { "$LOGIC_PRE" != "" } {
  274. set logic_fp [open $LOGIC_PRE r]; set logic_data [read $logic_fp]; close $logic_fp
  275. puts -nonewline $pre_fp $logic_data
  276. }
  277. if { [info exists BOARD_PLL_CLKIN] } {
  278. puts $pre_fp "set BOARD_PLL_CLKIN $BOARD_PLL_CLKIN"
  279. }
  280. if { [info exists USB0_MODE] } {
  281. puts $pre_fp "set USB0_MODE $USB0_MODE"
  282. }
  283. puts $pre_fp "set db_io_name_priority true"
  284. puts $pre_fp "set ip_pll_vco_lowpower true"
  285. if { $LOGIC_COMPRESS } {
  286. puts $pre_fp "set_global_assignment -name ON_CHIP_BITSTREAM_DECOMPRESSION \"ON\""
  287. } else {
  288. puts $pre_fp "set_global_assignment -name ON_CHIP_BITSTREAM_DECOMPRESSION \"OFF\""
  289. }
  290. puts $pre_fp "# pio_end <<<<<< DO NOT MODIFY THIS SECTION! <<<<<<"
  291. close $pre_fp
  292. }
  293. >
  294. > if { true } {
  295. set asf_asf ${LOGIC_DESIGN}.asf
  296. set asf_fp [open $asf_asf r];
  297. set asf_lines {}
  298. set is_pio false
  299. while { [gets $asf_fp line] >= 0 } {
  300. if { [string first "db_io_name_priority" $line] >= 0 ||
  301. [string first "pio_begin" $line] >= 0 } {
  302. set is_pio true
  303. } elseif { [string first "pio_end" $line] >= 0 } {
  304. set is_pio false
  305. } elseif { ! $is_pio } {
  306. lappend asf_lines $line
  307. }
  308. }
  309. close $asf_fp
  310. set asf_fp [open $asf_asf w]
  311. foreach line $asf_lines {
  312. puts $asf_fp $line
  313. }
  314. puts $asf_fp "# pio_begin >>>>>> DO NOT MODIFY THIS SECTION! >>>>>>"
  315. if { "$LOGIC_ASF" != "" } {
  316. set logic_fp [open $LOGIC_ASF r]; set logic_data [read $logic_fp]; close $logic_fp
  317. puts -nonewline $asf_fp $logic_data
  318. }
  319. puts $asf_fp "# pio_end <<<<<< DO NOT MODIFY THIS SECTION! <<<<<<"
  320. close $asf_fp
  321. }
  322. >
  323. > if { true } {
  324. set post_asf ${LOGIC_DESIGN}.post.asf
  325. set post_fp [open $post_asf r];
  326. set post_lines {}
  327. set is_pio false
  328. while { [gets $post_fp line] >= 0 } {
  329. if { [string first "pio_begin" $line] >= 0 } {
  330. set is_pio true
  331. } elseif { [string first "pio_end" $line] >= 0 } {
  332. set is_pio false
  333. } elseif { ! $is_pio } {
  334. lappend post_lines $line
  335. }
  336. }
  337. close $post_fp
  338. set post_fp [open $post_asf w]
  339. foreach line $post_lines {
  340. puts $post_fp $line
  341. }
  342. puts $post_fp "# pio_begin >>>>>> DO NOT MODIFY THIS SECTION! >>>>>>"
  343. if { "$LOGIC_POST" != "" } {
  344. set logic_fp [open $LOGIC_POST r]; set logic_data [read $logic_fp]; close $logic_fp
  345. puts -nonewline $post_fp $logic_data
  346. }
  347. if { $logic_ip } {
  348. puts $post_fp "file mkdir $IP_INSTALL_DIR"
  349. puts $post_fp "if { ! \[file exists $IP_INSTALL_DIR/${LOGIC_DESIGN}.sdc\] } {"
  350. puts $post_fp " file copy -force ./${LOGIC_DESIGN}_.sdc $IP_INSTALL_DIR/${LOGIC_DESIGN}.sdc"
  351. puts $post_fp "}"
  352. puts $post_fp "file copy -force ./${LOGIC_DESIGN}_.ve $IP_INSTALL_DIR/${LOGIC_DESIGN}.ve"
  353. puts $post_fp "file copy -force ./alta_db/packed.vx $IP_INSTALL_DIR/${LOGIC_DESIGN}.vx"
  354. }
  355. puts $post_fp "# pio_end <<<<<< DO NOT MODIFY THIS SECTION! <<<<<<"
  356. close $post_fp
  357. }
  358. >
  359. > exit
  360. Total 0 fatals, 0 errors, 1 warnings, 0 infos.