run.log 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857
  1. > alta::tcl_whisper "Cmd : [alta::prog_path] [alta::prog_version]([alta::prog_subversion])\n"
  2. Cmd : C:/Users/zzz17/AgRV_pio/packages/tool-agrv_logic/bin/af.exe 2025.06.b0(3f05be1c)
  3. > alta::tcl_whisper "Args : [string map {\{ \" \} \"} $tcl_cmd_args]\n"
  4. Args : -X "set QUARTUS_SDC true" -X "set FITTING Auto" -X "set FITTER full" -X "set EFFORT high" -X "set HOLDX default" -X "set SKEW basic" -X "set MODE QUARTUS" -X "set FLOW ALL" -F ./af_run.tcl
  5. >
  6. > set_seed_rand $SEED
  7. > set ar_timing_derate ${TIMING_DERATE}
  8. >
  9. > date_time
  10. Sat May 09 14:19:31 2026
  11. > if { [file exists [file join . ${DESIGN}.pre.asf]] } {
  12. alta::tcl_highlight "Using pre-ASF file ${DESIGN}.pre.asf.\n"
  13. source [file join . ${DESIGN}.pre.asf]
  14. }
  15. Using pre-ASF file example_board.pre.asf.
  16. > # pio_begin >>>>>> DO NOT MODIFY THIS SECTION! >>>>>>
  17. > set BOARD_PLL_CLKIN PIN_OSC
  18. > set db_io_name_priority False
  19. > set ip_pll_vco_lowpower true
  20. > set_global_assignment -name ON_CHIP_BITSTREAM_DECOMPRESSION "ON"
  21. > # pio_end <<<<<< DO NOT MODIFY THIS SECTION! <<<<<<
  22. > ##
  23. >
  24. >
  25. > set LOAD_DB false
  26. > set LOAD_PLACE false
  27. > set LOAD_ROUTE false
  28. > set LOAD_PACK false
  29. > if { $FLOW == "LOAD" || $FLOW == "CHECK" || $FLOW == "PROBE" } {
  30. set LOAD_DB true
  31. set LOAD_PLACE true
  32. set LOAD_ROUTE true
  33. } elseif { $FLOW == "R" || $FLOW == "ROUTE" } {
  34. set LOAD_DB true
  35. set LOAD_PLACE true
  36. } elseif { $FLOW == "PR" || $FLOW == "PLACE_AND_ROUTE" } {
  37. set LOAD_DB false
  38. set LOAD_PACK true
  39. }
  40. >
  41. > set ORIGINAL_QSF "./example_board.qsf"
  42. > set ORIGINAL_PIN ""
  43. >
  44. > #################################################################################
  45. >
  46. > # The default SDC file is ${DESIGN}.sdc
  47. > set sdc_file $SDC_FILE
  48. > if { $sdc_file == "" } {
  49. set sdc_file [file join . ${DESIGN}.adc]
  50. if { ! [file exists $sdc_file] } { set sdc_file [file join . ${DESIGN}.sdc]; }
  51. }
  52. > # No default VE file is not specified
  53. > set ve_file $VEX_FILE
  54. >
  55. > while (1) {
  56. if { $FLOW == "SKIP" } { break }
  57. if { [info exists CORNER] } { set_mode -corner $CORNER; }
  58. eval "load_architect ${no_route} -type ${DEVICE} 1 1 1000 1000"
  59. foreach ip_file $IP_FILES { read_ip $ip_file; }
  60. if { $FLOW == "GEN" } {
  61. if { ! [info exists CONFIG_BITS] } {
  62. set CONFIG_BITS [file join ${RESULT_DIR} ${DESIGN}.bin]
  63. }
  64. if { [llength $CONFIG_BITS] > 1 } {
  65. if { ! [info exists BOOT_BINARY] } {
  66. set BOOT_BINARY [file join ${RESULT_DIR} ${DESIGN}_boot.bin]
  67. }
  68. if { ! [info exists CONFIG_ADDRESSES] } {
  69. set CONFIG_ADDRESSES ""
  70. }
  71. generate_binary -master $BOOT_BINARY -inputs $CONFIG_BITS -address $CONFIG_ADDRESSES
  72. } else {
  73. set CONFIG_ROOT [file rootname [lindex $CONFIG_BITS 0]]
  74. set SLAVE_RBF "${CONFIG_ROOT}_slave.rbf"
  75. set MASTER_BINARY "${CONFIG_ROOT}_master.bin"
  76. if { [file exists [lindex $CONFIG_BITS 0]] } {
  77. generate_binary -slave $SLAVE_RBF -inputs [lindex $CONFIG_BITS 0] -reverse
  78. generate_binary -master $MASTER_BINARY -inputs [lindex $CONFIG_BITS 0]
  79. }
  80. if { ! [info exists BOOT_BINARY] } {
  81. set BOOT_BINARY $MASTER_BINARY
  82. }
  83. }
  84. set PRG_FILE [file rootname $BOOT_BINARY].prg
  85. set AS_FILE [file rootname $BOOT_BINARY]_as.prg
  86. generate_programming_file $BOOT_BINARY -erase $ERASE \
  87. -program $PROGRAM -verify $VERIFY -offset $OFFSET \
  88. -prg $PRG_FILE -as $AS_FILE
  89. break
  90. }
  91. if { $LOAD_DB } {
  92. load_db -top ${TOP_MODULE}
  93. if { [file exists $sdc_file] } { read_sdc $sdc_file; }
  94. } elseif { $MODE == "QUARTUS" } {
  95. set verilog ${DESIGN}.vo
  96. set is_migrated false
  97. if { ! [file exists $verilog] } {
  98. set verilog [file join . simulation modelsim ${DESIGN}.vo]
  99. set is_migrated true
  100. }
  101. if { ! [file exists $verilog] } {
  102. error "Can not find design verilog file $verilog"
  103. }
  104. alta::tcl_highlight "Using design verilog file $verilog.\n"
  105. if { $ve_file != "" && ! [file exists $ve_file] } {
  106. alta::tcl_warn "Can not find design VE file $ve_file"
  107. set ve_file ""
  108. } else {
  109. alta::tcl_highlight "Using design VE file $ve_file.\n"
  110. }
  111. set ret [read_design -top ${TOP_MODULE} -ve $ve_file -qsf $ORIGINAL_QSF $verilog -hierachy 1]
  112. if { !$ret } { exit -1; }
  113. if { $sdc_file != "" && ! [file exists $sdc_file] } {
  114. alta::tcl_warn "Can not find design SDC file $sdc_file"
  115. set sdc_file ""
  116. } else {
  117. alta::tcl_highlight "Using design SDC file $sdc_file.\n"
  118. read_sdc $sdc_file
  119. }
  120. } elseif { $MODE == "SYNPLICITY" || $MODE == "NATIVE" } {
  121. set_hierarchy_separator .
  122. set db_gclk_assignment_level 2
  123. set verilog ${DESIGN}.vqm
  124. set is_migrated false
  125. if { ! [file exists $verilog] } {
  126. error "Can not find design verilog file $verilog"
  127. }
  128. if { $VEX_FILE != "" } {
  129. if { $VEX_FILE == "-" } {
  130. set VEX_FILE ""
  131. } elseif { ! [file exists $VEX_FILE] } {
  132. error "Can not find design VE file $VEX_FILE"
  133. }
  134. }
  135. if { $AGF_FILE != "" } {
  136. if { $AGF_FILE == "-" } {
  137. set AGF_FILE ""
  138. } elseif { ! [file exists $AGF_FILE] } {
  139. error "Can not find design AGF file $AGF_FILE"
  140. }
  141. }
  142. set alta0_asf [file join $::alta_work alta0.asf]
  143. set alta0_apf [file join $::alta_work alta0.apf]
  144. file delete -force $alta0_asf
  145. file delete -force $alta0_apf
  146. if { $AGF_FILE != "" || $VEX_FILE != "" } {
  147. alta::convert_pio_settings_cmd $VEX_FILE $AGF_FILE $alta0_asf $alta0_apf
  148. }
  149. alta::tcl_highlight "Using design verilog file $verilog.\n"
  150. if { $sdc_file != "" && ! [file exists $sdc_file] } {
  151. alta::tcl_warn "Can not find design SDC file $sdc_file"
  152. set sdc_file ""
  153. } else {
  154. alta::tcl_highlight "Using design SDC file $sdc_file.\n"
  155. }
  156. set load_pack ""
  157. if { $LOAD_PACK } { set load_pack "-load_pack"; }
  158. set ret [eval "read_design_and_pack $load_pack -sdc {$sdc_file} -top ${TOP_MODULE} -type vqm -gclk_level 2 $verilog"]
  159. set FITTER "full"
  160. if { !$ret } { exit -1; }
  161. } else {
  162. error "Unsupported mode $MODE"
  163. }
  164. if { $FLOW == "PACK" } { break }
  165. if { [info exists FITTING] } {
  166. if { $FITTING == "Auto" } { set FITTING auto; }
  167. set_mode -fitting $FITTING
  168. }
  169. if { [info exists FITTER] } {
  170. if { $FITTER == "Auto" } {
  171. if { $MODE == "QUARTUS" } { set FITTER hybrid; } else { set FITTER full; }
  172. }
  173. if { $MODE == "SYNPLICITY" || $MODE == "NATIVE" } { set FITTER full; }
  174. set_mode -fitter $FITTER
  175. }
  176. if { [info exists EFFORT] } { set_mode -effort $EFFORT; }
  177. if { [info exists SKEW ] } { set_mode -skew $SKEW ; }
  178. if { [info exists SKOPE ] } { set_mode -skope $SKOPE ; }
  179. if { [info exists HOLDX ] } { set_mode -holdx $HOLDX; }
  180. if { [info exists TUNING] } { set_mode -tuning $TUNING; }
  181. if { [info exists TARGET] } { set_mode -target $TARGET; }
  182. if { [info exists PRESET] } { set_mode -preset $PRESET; }
  183. if { [info exists ADJUST] } { set pl_criticality_wadjust $ADJUST; }
  184. set alta_aqf [file join $::alta_work alta.aqf]
  185. if { $LOAD_DB } {
  186. # Empty
  187. } else {
  188. file delete -force $alta_aqf
  189. if { true } {
  190. if { $ORIGINAL_PIN != "" } {
  191. if { [file exists $VE_FILE] } {
  192. set ORIGINAL_PIN ""
  193. } elseif { $ORIGINAL_PIN == "-" } {
  194. set ORIGINAL_PIN ""
  195. } elseif { ! [file exists $ORIGINAL_PIN] } {
  196. if { $is_migrated } {
  197. error "Can not find design PIN file $ORIGINAL_PIN, please compile design first"
  198. }
  199. set ORIGINAL_PIN ""
  200. }
  201. }
  202. if { $ORIGINAL_QSF != "" } {
  203. if { $ORIGINAL_QSF == "-" } {
  204. set ORIGINAL_QSF ""
  205. } elseif { ! [file exists $ORIGINAL_QSF] } {
  206. if { $is_migrated } {
  207. error "Can not find design exported QSF file $ORIGINAL_QSF, please export assigments first"
  208. }
  209. }
  210. }
  211. if { $ORIGINAL_QSF != "" || $ORIGINAL_PIN != "" } {
  212. alta::convert_quartus_settings_cmd $ORIGINAL_QSF $ORIGINAL_PIN $alta_aqf
  213. }
  214. }
  215. }
  216. if { [file exists "$alta_aqf"] } {
  217. alta::tcl_highlight "Using AQF file $alta_aqf.\n"
  218. source "$alta_aqf"
  219. }
  220. if { [file exists [file join . ${DESIGN}.asf]] } {
  221. alta::tcl_highlight "Using ASF file ${DESIGN}.asf.\n"
  222. source [file join . ${DESIGN}.asf]
  223. }
  224. if { $FLOW == "PROBE" } {
  225. set ret [eval "place_pseudo ${user_io} -place_io -place_pll -place_gclk"]
  226. if { !$ret } { exit -1 }
  227. set force ""
  228. if { [info exists PROBE_FORCE] && $PROBE_FORCE } { set force "-force" }
  229. eval "probe_design -froms {${PROBE_FROMS}} -tos {${PROBE_TOS}} ${force}"
  230. } elseif { $FLOW == "CHECK" } {
  231. set ret [eval "place_pseudo ${user_io} -place_io -place_pll -place_gclk"]
  232. if { !$ret } { exit -1 }
  233. if { [file exists [file join . ${DESIGN}.chk]] } {
  234. alta::tcl_highlight "Using CHK file ${DESIGN}.chk.\n"
  235. source [file join . ${DESIGN}.chk]
  236. place_design -dry
  237. check_design -rule led_guide
  238. } else {
  239. error "Can not find design CHECK file ${DESIGN}.chk"
  240. }
  241. } else {
  242. set ret [eval "place_pseudo ${user_io} -place_io -place_pll -place_gclk -warn_io"]
  243. if { !$ret } { exit -1 }
  244. set org_place ""
  245. set load_place ""
  246. set load_route ""
  247. set quiet ""
  248. if { $ORG_PLACE } { set org_place "-org_place" ; }
  249. if { $LOAD_PLACE } { set load_place "-load_place"; }
  250. if { $LOAD_ROUTE } { set load_route "-load_route"; }
  251. eval "place_and_route_design $org_place $load_place $load_route \
  252. -retry $RETRY $seed_rand $quiet"
  253. }
  254. date_time
  255. if { $FLOW != "CHECK" } {
  256. if { $FLOW != "PROBE" } {
  257. report_timing -verbose 2 -setup -file $::alta_work/setup.rpt.gz
  258. report_timing -verbose 1 -setup -file $::alta_work/setup_summary.rpt
  259. report_timing -verbose 2 -hold -file $::alta_work/hold.rpt.gz
  260. report_timing -verbose 1 -hold -file $::alta_work/hold_summary.rpt
  261. set ta_report_auto_constraints 0
  262. report_timing -fmax -file $::alta_work/fmax.rpt
  263. report_timing -xfer -file $::alta_work/xfer.rpt
  264. set ta_report_auto_constraints $ta_report_auto
  265. set ta_dump_uncovered 1
  266. report_timing -verbose 1 -coverage >! $::alta_work/coverage.rpt.gz
  267. set ta_dump_uncovered -1
  268. if { ! [info exists rt_report_timing_fast] } {
  269. set rt_report_timing_fast false
  270. }
  271. if { $rt_report_timing_fast } {
  272. set_timing_corner fast
  273. route_delay -quiet
  274. report_timing -verbose 2 -setup -file $::alta_work/setup_fast.rpt.gz
  275. report_timing -verbose 1 -setup -file $::alta_work/setup_fast_summary.rpt
  276. report_timing -verbose 2 -hold -file $::alta_work/hold_fast.rpt.gz
  277. report_timing -verbose 1 -hold -file $::alta_work/hold_fast_summary.rpt
  278. set ta_report_auto_constraints 0
  279. report_timing -fmax -file $::alta_work/fmax_fast.rpt
  280. report_timing -xfer -file $::alta_work/xfer_fast.rpt
  281. set ta_report_auto_constraints $ta_report_auto
  282. }
  283. write_routed_design "${RESULT_DIR}/${RESULT}_routed.v"
  284. }
  285. bitgen normal -prg "${RESULT_DIR}/${RESULT}.prg" -bin "${RESULT_DIR}/${RESULT}.bin"
  286. if { true } {
  287. alta::bin_to_asc "${RESULT_DIR}/${RESULT}.bin" "${RESULT_DIR}/${RESULT}.inc"
  288. set python_exe [expr {$tcl_platform(platform) eq "unix" ? "python3" : "python.exe"}]
  289. if { ! [ info exist BATCH_ARG ] } {
  290. set BATCH_ARG ""
  291. }
  292. set LOGIC_COMPRESS [alta::get_global_assignment_cmd ON_CHIP_BITSTREAM_DECOMPRESSION false]
  293. if { [string toupper $LOGIC_COMPRESS] != "OFF" } {
  294. set BATCH_ARG "$BATCH_ARG --logic-compress"
  295. }
  296. set BATCH_MCU 0xbff5105000730062aa234371030002b7
  297. if { [info exists BATCH_HSE] } {
  298. set BATCH_MCU 0xbff5105000730062a62343110062aa234371030002b7
  299. }
  300. set GEN_BATCH "{[alta::prog_home]/python_dist/$python_exe} {[alta::prog_home]/pio/gen_batch}\
  301. -d [[alta::get_device_info_cmd $DEVICE] device_id]\
  302. -i $BATCH_MCU\
  303. -o ${RESULT_DIR}/${RESULT}_batch.bin\
  304. --logic-config ${RESULT_DIR}/${RESULT}.bin\
  305. --logic-address 0x80007000\
  306. $BATCH_ARG"
  307. alta::tcl_highlight "Generating batch file: $GEN_BATCH\n"
  308. eval "exec $GEN_BATCH"
  309. } else {
  310. bitgen sram -prg "${RESULT_DIR}/${RESULT}_sram.prg"
  311. bitgen download -bin "${RESULT_DIR}/${RESULT}.bin" -svf "${RESULT_DIR}/${RESULT}_download.svf"
  312. generate_binary -slave "${RESULT_DIR}/${RESULT}_slave.rbf" \
  313. -inputs "${RESULT_DIR}/${RESULT}.bin" -reverse
  314. generate_binary -master "${RESULT_DIR}/${RESULT}_master.bin" \
  315. -inputs "${RESULT_DIR}/${RESULT}.bin"
  316. generate_programming_file "${RESULT_DIR}/${RESULT}_master.bin" -prg "${RESULT_DIR}/${RESULT}_master.prg" \
  317. -as "${RESULT_DIR}/${RESULT}_master_as.prg" -hybrid "${RESULT_DIR}/${RESULT}_hybrid.prg"
  318. }
  319. }
  320. break
  321. }
  322. Total IO : 150
  323. Total Pin : 128/17
  324. Top array is built.
  325. Loading architect libraries...
  326. ## CPU time: 0:0:0, REAL time: 0:0:0
  327. ## Memory Usage: 52MB (52MB)
  328. Loading route table...
  329. ## CPU time: 0:0:2, REAL time: 0:0:3
  330. ## Memory Usage: 317MB (317MB)
  331. Using design verilog file ./simulation/modelsim/example_board.vo.
  332. Using design VE file example_board.vex.
  333. Preparing design...
  334. Info: Rename duplicated module cell alta_adc to alta_adc_duplicated at ./alta_db/flatten.vx:1.
  335. Info: Rename duplicated module cell alta_dac to alta_dac_duplicated at ./alta_db/flatten.vx:62.
  336. Info: Rename duplicated module cell alta_rv32 to alta_rv32_duplicated at ./alta_db/flatten.vx:97.
  337. Info: Removing bbox feeder slice gpio0_io_in[0] driving BBOX rv32|gpio0_io_in[0].
  338. Info: Removing bbox feeder slice gpio0_io_out_data[0] driven by BBOX rv32|gpio0_io_out_data[0].
  339. Info: Removing bbox feeder slice gpio0_io_out_en[0] driven by BBOX rv32|gpio0_io_out_en[0].
  340. Info: Removing bbox feeder slice gpio4_io_in[1] driving BBOX rv32|gpio4_io_in[1].
  341. Info: Removing bbox feeder slice gpio4_io_in[2] driving BBOX rv32|gpio4_io_in[2].
  342. Info: Removing bbox feeder slice gpio4_io_out_data[1] driven by BBOX rv32|gpio4_io_out_data[1].
  343. Info: Removing bbox feeder slice gpio4_io_out_data[2] driven by BBOX rv32|gpio4_io_out_data[2].
  344. Info: Removing bbox feeder slice gpio4_io_out_data[5] driven by BBOX rv32|gpio4_io_out_data[5].
  345. Info: Removing bbox feeder slice gpio4_io_out_data[6] driven by BBOX rv32|gpio4_io_out_data[6].
  346. Info: Removing bbox feeder slice gpio4_io_out_en[1] driven by BBOX rv32|gpio4_io_out_en[1].
  347. Info: Removing bbox feeder slice gpio4_io_out_en[2] driven by BBOX rv32|gpio4_io_out_en[2].
  348. Info: Removing bbox feeder slice gpio4_io_out_en[5] driven by BBOX rv32|gpio4_io_out_en[5].
  349. Info: Removing bbox feeder slice gpio4_io_out_en[6] driven by BBOX rv32|gpio4_io_out_en[6].
  350. Info: Removing bbox feeder slice gpio6_io_in[1] driving BBOX rv32|gpio6_io_in[1].
  351. Info: Removing bbox feeder slice gpio6_io_in[3] driving BBOX rv32|gpio6_io_in[3].
  352. Info: Removing bbox feeder slice gpio7_io_out_data[6] driven by BBOX rv32|gpio7_io_out_data[6].
  353. Info: Removing bbox feeder slice gpio7_io_out_en[6] driven by BBOX rv32|gpio7_io_out_en[6].
  354. Info: Removing bbox feeder slice gpio8_io_out_data[0] driven by BBOX rv32|gpio8_io_out_data[0].
  355. Info: Removing bbox feeder slice gpio8_io_out_en[0] driven by BBOX rv32|gpio8_io_out_en[0].
  356. Info: Removing bbox feeder slice macro_inst|ahb2apb_inst|haddr[0]~feeder driven by BBOX rv32|mem_ahb_haddr[0].
  357. Info: Removing bbox feeder slice macro_inst|ahb2apb_inst|haddr[10]~feeder driven by BBOX rv32|mem_ahb_haddr[10].
  358. Info: Removing bbox feeder slice macro_inst|ahb2apb_inst|haddr[11]~feeder driven by BBOX rv32|mem_ahb_haddr[11].
  359. Info: Removing bbox feeder slice macro_inst|ahb2apb_inst|haddr[12]~feeder driven by BBOX rv32|mem_ahb_haddr[12].
  360. Info: Removing bbox feeder slice macro_inst|ahb2apb_inst|haddr[13]~feeder driven by BBOX rv32|mem_ahb_haddr[13].
  361. Info: Removing bbox feeder slice macro_inst|ahb2apb_inst|haddr[15]~feeder driven by BBOX rv32|mem_ahb_haddr[15].
  362. Info: Removing bbox feeder slice macro_inst|ahb2apb_inst|haddr[1]~feeder driven by BBOX rv32|mem_ahb_haddr[1].
  363. Info: Removing bbox feeder slice macro_inst|ahb2apb_inst|haddr[6]~feeder driven by BBOX rv32|mem_ahb_haddr[6].
  364. Info: Removing bbox feeder slice macro_inst|ahb2apb_inst|haddr[7]~feeder driven by BBOX rv32|mem_ahb_haddr[7].
  365. Info: Removing bbox feeder slice macro_inst|ahb2apb_inst|haddr[8]~feeder driven by BBOX rv32|mem_ahb_haddr[8].
  366. Info: Removing bbox feeder slice macro_inst|ahb2apb_inst|haddr[9]~feeder driven by BBOX rv32|mem_ahb_haddr[9].
  367. Info: Removing bbox feeder slice macro_inst|ahb2apb_inst|hreadyout~_wirecell driving BBOX rv32|mem_ahb_hreadyout inverted.
  368. Info: Removing bbox feeder slice macro_inst|apb_adc0_inst|apb_db[0]~feeder driven by BBOX macro_inst|apb_adc0_inst|adc_inst|db[0].
  369. Info: Removing bbox feeder slice macro_inst|apb_adc0_inst|apb_db[2]~feeder driven by BBOX macro_inst|apb_adc0_inst|adc_inst|db[2].
  370. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|adc_chnl_sel[0]~_wirecell driving BBOX macro_inst|apb_adc0_inst|adc_inst|insel[0] inverted.
  371. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|adc_chnl_sel[2]~_wirecell driving BBOX macro_inst|apb_adc0_inst|adc_inst|insel[2] inverted.
  372. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|adc_chnl_sel[3]~_wirecell driving BBOX macro_inst|apb_adc0_inst|adc_inst|insel[3] inverted.
  373. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|adc_clk_div[3]~feeder driven by BBOX rv32|mem_ahb_hwdata[3].
  374. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|adc_clk_div[4]~feeder driven by BBOX rv32|mem_ahb_hwdata[4].
  375. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|adc_clk_div[5]~feeder driven by BBOX rv32|mem_ahb_hwdata[5].
  376. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|adc_clk_div[6]~feeder driven by BBOX rv32|mem_ahb_hwdata[6].
  377. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|adc_clk_div[7]~feeder driven by BBOX rv32|mem_ahb_hwdata[7].
  378. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|adc_en~_wirecell driving BBOX macro_inst|apb_adc0_inst|adc_inst|enb inverted.
  379. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|adc_restart~feeder driven by BBOX rv32|mem_ahb_hwdata[1].
  380. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|dac_run~feeder driven by BBOX rv32|mem_ahb_hwdata[1].
  381. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[0]~feeder driven by BBOX rv32|mem_ahb_hwdata[0].
  382. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[10]~feeder driven by BBOX rv32|mem_ahb_hwdata[10].
  383. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[11]~feeder driven by BBOX rv32|mem_ahb_hwdata[11].
  384. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[12]~feeder driven by BBOX rv32|mem_ahb_hwdata[12].
  385. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[13]~feeder driven by BBOX rv32|mem_ahb_hwdata[13].
  386. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[14]~feeder driven by BBOX rv32|mem_ahb_hwdata[14].
  387. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[15]~feeder driven by BBOX rv32|mem_ahb_hwdata[15].
  388. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[16]~feeder driven by BBOX rv32|mem_ahb_hwdata[16].
  389. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[17]~feeder driven by BBOX rv32|mem_ahb_hwdata[17].
  390. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[18]~feeder driven by BBOX rv32|mem_ahb_hwdata[18].
  391. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[19]~feeder driven by BBOX rv32|mem_ahb_hwdata[19].
  392. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[1]~feeder driven by BBOX rv32|mem_ahb_hwdata[1].
  393. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[20]~feeder driven by BBOX rv32|mem_ahb_hwdata[20].
  394. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[21]~feeder driven by BBOX rv32|mem_ahb_hwdata[21].
  395. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[22]~feeder driven by BBOX rv32|mem_ahb_hwdata[22].
  396. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[23]~feeder driven by BBOX rv32|mem_ahb_hwdata[23].
  397. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[24]~feeder driven by BBOX rv32|mem_ahb_hwdata[24].
  398. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[25]~feeder driven by BBOX rv32|mem_ahb_hwdata[25].
  399. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[26]~feeder driven by BBOX rv32|mem_ahb_hwdata[26].
  400. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[27]~feeder driven by BBOX rv32|mem_ahb_hwdata[27].
  401. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[28]~feeder driven by BBOX rv32|mem_ahb_hwdata[28].
  402. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[29]~feeder driven by BBOX rv32|mem_ahb_hwdata[29].
  403. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[2]~feeder driven by BBOX rv32|mem_ahb_hwdata[2].
  404. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[30]~feeder driven by BBOX rv32|mem_ahb_hwdata[30].
  405. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[31]~feeder driven by BBOX rv32|mem_ahb_hwdata[31].
  406. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|frequency[4]~feeder driven by BBOX rv32|mem_ahb_hwdata[4].
  407. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|max_vol[1]~feeder driven by BBOX rv32|mem_ahb_hwdata[1].
  408. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|min_vol[0]~feeder driven by BBOX rv32|mem_ahb_hwdata[16].
  409. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|min_vol[1]~feeder driven by BBOX rv32|mem_ahb_hwdata[17].
  410. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|min_vol[3]~feeder driven by BBOX rv32|mem_ahb_hwdata[19].
  411. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|min_vol[7]~feeder driven by BBOX rv32|mem_ahb_hwdata[23].
  412. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|min_vol[8]~feeder driven by BBOX rv32|mem_ahb_hwdata[24].
  413. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|min_vol[9]~feeder driven by BBOX rv32|mem_ahb_hwdata[25].
  414. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|trig_mode[0]~feeder driven by BBOX rv32|mem_ahb_hwdata[2].
  415. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|trig_mode[1]~feeder driven by BBOX rv32|mem_ahb_hwdata[3].
  416. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|trig_threshold[0]~feeder driven by BBOX rv32|mem_ahb_hwdata[0].
  417. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|trig_threshold[1]~feeder driven by BBOX rv32|mem_ahb_hwdata[1].
  418. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|trig_threshold[2]~feeder driven by BBOX rv32|mem_ahb_hwdata[2].
  419. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|trig_threshold[4]~feeder driven by BBOX rv32|mem_ahb_hwdata[4].
  420. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|trig_threshold[6]~feeder driven by BBOX rv32|mem_ahb_hwdata[6].
  421. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|trig_time_slot[1]~feeder driven by BBOX rv32|mem_ahb_hwdata[5].
  422. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|trig_time_slot[2]~feeder driven by BBOX rv32|mem_ahb_hwdata[6].
  423. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|trig_time_slot[3]~feeder driven by BBOX rv32|mem_ahb_hwdata[7].
  424. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|trig_time_slot[4]~feeder driven by BBOX rv32|mem_ahb_hwdata[8].
  425. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|wave_type[0]~feeder driven by BBOX rv32|mem_ahb_hwdata[0].
  426. Info: Removing bbox feeder slice macro_inst|cfg_reg_inst|wave_type[1]~feeder driven by BBOX rv32|mem_ahb_hwdata[1].
  427. Info: Removing bbox feeder slice sys_ctrl_clkSource[0] driven by BBOX rv32|sys_ctrl_clkSource[0].
  428. Info: Removing bbox feeder slice sys_ctrl_clkSource[1] driven by BBOX rv32|sys_ctrl_clkSource[1].
  429. Info: Removing bbox feeder slice sys_ctrl_stop driven by BBOX rv32|sys_ctrl_stop.
  430. ## CPU time: 0:0:0, REAL time: 0:0:1
  431. ## Memory Usage: 337MB (337MB)
  432. Pseudo pack design...
  433. Using location file example_board.vex
  434. VCO frequency: 416.000 Mhz
  435. clkout0: Enabled , 104.000 Mhz
  436. clkout1: Disabled, 0.812 Mhz
  437. clkout2: Disabled, 0.812 Mhz
  438. clkout3: Disabled, 0.812 Mhz
  439. clkout4: Disabled, 0.812 Mhz
  440. Info: Instance gclksw_inst|gclk_switch is identified as a clock switch.
  441. Packing Statistics
  442. Total Logics : 1603/2112 ( 75%)
  443. Total LUTs : 1527/2112 ( 72%)
  444. Total Registers : 484/2112 ( 22%)
  445. Total Block Rams : 2/ 4 ( 50%)
  446. Total PLLs : 1/ 1 (100%)
  447. Total Pins : 15/ 128 ( 11%)
  448. Global Signals : 3/ 5 ( 60%)
  449. PLL_ENABLE~clkctrl_outclk (from: PLL_ENABLE~combout)
  450. auto_generated_inst.hbo_22_f9ff3d300b43c0f2_bp (from: auto_generated_inst.hbo_22_f9ff3d300b43c0f2_bp)
  451. sys_resetn~clkctrl_outclk (from: sys_resetn~combout)
  452. Total Lonely Datain : 90
  453. Total Lonely Register : 10
  454. Total LUT-FF Pairs : 275
  455. Total Register Packings : 109
  456. Registers with synchronous reset : 0
  457. Registers with asynchronous reset : 323
  458. Registers with sync and async reset : 131
  459. ## CPU time: 0:0:0, REAL time: 0:0:0
  460. ## Memory Usage: 335MB (337MB)
  461. Filter verilog...
  462. ## CPU time: 0:0:0, REAL time: 0:0:0
  463. ## Memory Usage: 335MB (337MB)
  464. Reading DB design...
  465. ## CPU time: 0:0:0, REAL time: 0:0:1
  466. ## Memory Usage: 337MB (337MB)
  467. Processing design...
  468. > set_instance_assignment -name ENABLE_OPEN_DRAIN -to SPI0_CSN~output false
  469. > set_instance_assignment -name ENABLE_OPEN_DRAIN -to GPIO4_1~output false
  470. > set_instance_assignment -name ENABLE_OPEN_DRAIN -to SPI0_SCK~output false
  471. > set_instance_assignment -name ENABLE_OPEN_DRAIN -to GPIO4_2~output false
  472. > set_instance_assignment -name ENABLE_OPEN_DRAIN -to UART1_RX~output false
  473. > set_instance_assignment -name ENABLE_OPEN_DRAIN -to UART0_UARTTXD~output false
  474. > set_instance_assignment -name ENABLE_OPEN_DRAIN -to UART1_TX~output false
  475. > set_instance_assignment -name ENABLE_OPEN_DRAIN -to SPI0_SI_IO0~output false
  476. > set_instance_assignment -name ENABLE_OPEN_DRAIN -to BAUD_RATE~output false
  477. > set_instance_assignment -name ENABLE_OPEN_DRAIN -to TEST_SINGLE~output false
  478. > set_instance_assignment -name ENABLE_OPEN_DRAIN -to so_io1~output false
  479. > set_instance_assignment -extension -name CLKIN_FREQ -to pll_inst|auto_generated|pll1 8
  480. > set_instance_assignment -extension -name FIXED_COORD -to gclksw_inst|gclk_switch__alta_gclksw {22 4 0}
  481. > set_instance_assignment -extension -name FIXED_COORD -to gclksw_inst|gclk_switch {22 4 5}
  482. > set_location_assignment -to BAUD_RATE PIN_18
  483. > set_location_assignment -to GPIO4_1 PIN_29
  484. > set_location_assignment -to GPIO4_2 PIN_10
  485. > set_location_assignment -to PIN_HSE PIN_HSE
  486. > set_location_assignment -to PIN_HSI PIN_HSI
  487. > set_location_assignment -to PLL_CLKIN PIN_OSC
  488. > set_location_assignment -to SPI0_CSN PIN_3
  489. > set_location_assignment -to SPI0_SCK PIN_2
  490. > set_location_assignment -to SPI0_SI_IO0 PIN_31
  491. > set_location_assignment -to TEST_SINGLE PIN_13
  492. > set_location_assignment -to UART0_UARTRXD PIN_21
  493. > set_location_assignment -to UART0_UARTTXD PIN_20
  494. > set_location_assignment -to UART1_RX PIN_9
  495. > set_location_assignment -to UART1_TX PIN_8
  496. > set_location_assignment -to so_io1 PIN_1
  497. Info: Found GCLK net PLL_ENABLE~clkctrl_outclk (1).
  498. Info: Found GCLK net sys_resetn~clkctrl_outclk (50).
  499. Info: Found GCLK net auto_generated_inst.hbo_22_f9ff3d300b43c0f2_bp (92).
  500. Info: Fixing net rv32.resetn_out, from rv32|resetn_out to gclksw_inst|gclk_switch__alta_gclksw|resetn.
  501. Info: Fixing net PIN_HSE~input_o, from PIN_HSE~input|combout to gclksw_inst|gclk_switch__alta_gclksw|clkin1.
  502. Info: Fixing net gclksw_inst|gclk_switch__alta_gclksw__clkout, from gclksw_inst|gclk_switch__alta_gclksw|clkout to rv32|sys_clk.
  503. Info: Fixing net auto_generated_inst.hbo_13_a8f89aa4d95b80e7_bp, from pll_inst|auto_generated|pll1|lock to rv32|sys_ctrl_pllReady.
  504. Info: Slice gpio6_io_in[5] is removed.
  505. Info: Slice gpio6_io_in[6] is removed.
  506. Info: Slice gpio6_io_in[0] is removed.
  507. Info: Slice gpio4_io_in[3] is removed.
  508. Info: Slice gpio4_io_in[6] is removed.
  509. Info: Slice gpio4_io_in[7] is removed.
  510. Info: Slice gpio4_io_in[4] is removed.
  511. Info: Slice gpio6_io_in[7] is removed.
  512. Info: Slice gpio6_io_in[2] is removed.
  513. Info: Slice gpio6_io_in[4] is removed.
  514. Info: Slice ~VCC is removed.
  515. Info: Slice gpio4_io_in[5] is removed.
  516. Info: Slice gpio4_io_in[0] is removed.
  517. Info: Slice gpio0_io_in[5] is removed.
  518. Info: Slice gpio0_io_in[6] is removed.
  519. Info: Slice gpio0_io_in[7] is removed.
  520. Info: Slice gpio0_io_in[1] is removed.
  521. Info: Slice gpio0_io_in[2] is removed.
  522. Info: Slice gpio0_io_in[3] is removed.
  523. Info: Slice gpio0_io_in[4] is removed.
  524. Info: The input of IO BAUD_RATE is disabled since all input pins are unused.
  525. Info: The input of IO TEST_SINGLE is disabled since all input pins are unused.
  526. Info: The input of IO UART1_TX is disabled since all input pins are unused.
  527. Info: The input of IO so_io1 is disabled since all input pins are unused.
  528. ## CPU time: 0:0:0, REAL time: 0:0:0
  529. ## Memory Usage: 337MB (337MB)
  530. Using design SDC file ./example_board.sdc.
  531. # pio_begin
  532. if { ! [info exists ::HSI_PERIOD] } {
  533. set ::HSI_PERIOD 100.0
  534. }
  535. create_clock -name PIN_HSI -period $::HSI_PERIOD [get_ports PIN_HSI]
  536. set_clock_groups -asynchronous -group PIN_HSI
  537. if { ! [info exists ::HSE_PERIOD] } {
  538. set ::HSE_PERIOD 125.0
  539. }
  540. create_clock -name PIN_HSE -period $::HSE_PERIOD [get_ports PIN_HSE]
  541. set_clock_groups -asynchronous -group PIN_HSE
  542. derive_pll_clocks -create_base_clocks
  543. Info: Auto constraint PLL: create_clock -name PLL_CLKIN -period 125.000 PLL_CLKIN.
  544. Info: Auto constraint PLL: create_generated_clock -name pll_inst|auto_generated|pll1|clk[0] -multiply_by 13 -add -source PLL_CLKIN -master_clock PLL_CLKIN pll_inst|auto_generated|pll1|clkout0.
  545. set_false_path -from rv32|resetn_out
  546. # pio_end
  547. ##
  548. derive_pll_clocks -create_base_clocks
  549. > #set pl_criticality_wratio "1.00 1.00 1.00 1.00"
  550. > #set pl_max_iter_eco "10 20 300 40 3 100 100 1"
  551. > #set pl_eco_slack_crit "99999. 1.00 0.10 5 0.03 20 0.01 100"
  552. >
  553. > #set pl_priority_compare "2 2 2 3"
  554. > #set pl_priority_result "2 1 1 0"
  555. > #set pl_priority_pass "2 1 1 0"
  556. > #set pl_swap_cost_margin "200.0 0.0 200.0 0.0 200.0 0.0 0.00 0.0"
  557. > #set pl_swap_wirelength_margin "200.0 0.0 200.0 0.0 200.0 0.0 020.0 -0.3 2000. 1.30"
  558. > #set pl_swap_congestion_margin "100.0 0.0 100.0 0.0 100.0 0.0 010.0 -0.3 1000. 1.15"
  559. > #set pl_criticality_beta "1.0 3.0 1.0 1.0 3.0 1.0 1.0 3.0 1.0 99999 3.0 3.0"
  560. > #set pl_oci_iter "1 1 100 1"
  561. >
  562. > set rt_retiming_idx 5
  563. > #set rt_converge_accelerator "2 2 0 3"
  564. > #set rt_pres_cost_ratio "1.00 1.50 2.00 2.50"
  565. > #set rt_dly_ratio "0.50 0.30 0.30 0.50 0.50 0.30"
  566. > #set rt_reroute_max_iter "6 6 6 7 9 12"
  567. > #set rt_reroute_start_iter "0 2 2 2 4 0 "
  568. > #set rt_quick_converge_ratio 0.50
  569. > set pl_reuse_existing_placement false
  570. > set pl_fix_bram_cells 0
  571. > set pl_fix_mult_cells 0
  572. > set pl_neighbor_swap_range "3 6 6 3 "
  573. > set pl_pass_result "1 1 1 1"
  574. > set pl_max_pass "1 1 1 1 1"
  575. > set pl_max_iter 10
  576. > set pl_max_iter_part 20
  577. > set pl_max_iter_final 20
  578. > set pl_max_iter_legal 10
  579. > set pl_max_iter_touch 00
  580. > #set pl_neighbor_swap_range "2 6 6 3 "
  581. > #set pl_spread_swap_max_iter "3 5 5 4"
  582. > #set pl_use_initial_place_once 0
  583. > set rt_min_converge "5"
  584. > set rt_optimize_max "3"
  585. > set pl_useful_skew_level -1
  586. > set rt_useful_skew_level 0
  587. > set rt_useful_skew_bram true
  588. > set rt_useful_skew_io false
  589. > set rt_useful_skew_io_ireg false
  590. > set rt_useful_skew_io_oreg false
  591. > set rt_useful_skew_output_io false
  592. > set rt_useful_skew_input_io false
  593. > set rt_useful_skew_unconstraint "false false"
  594. > set rt_useful_skew_max "0 100"
  595. > set rt_skew_crit_minmax "0.00 1.00"
  596. > #set rt_useful_skew_setup_slac_margin "1.00 1.00 1.00 1.00 1.00 0.10 0.50 0.10 0.70 0.10 1.00"
  597. > #set rt_useful_skew_hold_slack_margin "0.10 0.10 0.30 0.30 0.30 0.30"
  598. > #set rt_useful_skew_hold_slack_ratio "0.05 0.05 0.10 0.10 0.10 0.10"
  599. > # Minimal logical slice hold fix, only by routing to bram/mult, no IO delay
  600. >
  601. > set ta_cross_clock_slack "2 0"
  602. >
  603. > #set pl_max_iter_hold_fix "30 1 3"
  604. > #set pl_hold_slack_margin 0.2
  605. > #set pl_setup_slack_margin "0.5 -1000."
  606. > #set pl_net_hold_fix_target "alta_bram alta_bram9k alta_mult"
  607. >
  608. > set rt_hold_slack_margin "0.2 0.2 0.2 0.2 0.2 0.7 -1000. 0.0"
  609. > set rt_setup_slack_margin "0.5 -1000. 0.5 -1000. 0.0 -1000."
  610. > #set rt_net_hold_crit_minmax "0.5 0.5"
  611. > set rt_net_hold_budget_method 0
  612. > set rt_net_hold_fix_target "alta_bram alta_bram9k alta_mult"
  613. >
  614. > #set pl_net_hold_fix_clock false
  615. > #set pl_net_hold_fix_auto false
  616. > #set pl_net_hold_fix_io false
  617. > #set rt_net_hold_fix_start false
  618. > #set rt_net_hold_fix_clock false
  619. > #set rt_net_hold_fix_auto false
  620. > #set rt_net_hold_fix_io false
  621. Using AQF file ./alta_db/alta.aqf.
  622. > set_global_assignment -name DEVICE_IO_STANDARD "3.3-V LVTTL"
  623. Using ASF file example_board.asf.
  624. > # pio_begin >>>>>> DO NOT MODIFY THIS SECTION! >>>>>>
  625. > if { [info exists BOARD_PLL_CLKIN] } {
  626. if { $BOARD_PLL_CLKIN == "PIN_OSC" } {
  627. set_config -loc 18 0 0 CFG_RCOSC_EN 1'b1
  628. }
  629. }
  630. > if { [info exists USB0_MODE] } {
  631. alta::tcl_info "USB0_MODE = $USB0_MODE"
  632. set_config -loc 0 1 3 CFG_PULLUP_ENB 1'b0
  633. set_config -loc 0 1 3 CFG_PULLDN_ENB 1'b0
  634. }
  635. > puts "************ DESIGN ASF ************"
  636. ************ DESIGN ASF ************
  637. >
  638. > # Enable PIN_23 (WKUP pin) to wake up device from standby. This function is not available on other pins.
  639. > #set_config -pin PIN_23 CFG_WKUP_EN 1'b1
  640. > # Use falling edge of the WKUP pin. By default rising edge is used.
  641. > #set_config -pin PIN_23 CFG_WKUP_INV 1'b1
  642. > # pio_end <<<<<< DO NOT MODIFY THIS SECTION! <<<<<<
  643. > ##
  644. >
  645. Info: The input of IO BAUD_RATE is disabled since all input pins are unused.
  646. Info: The input of IO TEST_SINGLE is disabled since all input pins are unused.
  647. Info: The input of IO UART1_TX is disabled since all input pins are unused.
  648. Info: The input of IO so_io1 is disabled since all input pins are unused.
  649. Warn: Slice macro_inst|apb_adc0_inst|adc_inst is auto placed at location (22,7).
  650. Warn: Slice macro_inst|apb_dac0_inst|dac_inst is auto placed at location (22,11).
  651. Info: The input of IO BAUD_RATE is disabled since all input pins are unused.
  652. Info: The input of IO TEST_SINGLE is disabled since all input pins are unused.
  653. Info: The input of IO UART1_TX is disabled since all input pins are unused.
  654. Info: The input of IO so_io1 is disabled since all input pins are unused.
  655. Placement Statistics
  656. Total Logic Counts : 1583/2112 (75.0%)
  657. Total Logic Tiles : 109/132 (82.6%)
  658. Total Other Tiles : 2/4 (50.0%)
  659. Total Valid Nets : 1889 (1104+785)
  660. Total Valid Fanouts : 8298 (5371+2927)
  661. Total Tile Fanouts : 2301
  662. Tile Zip Fanins : 17 (1:33)
  663. Tile Zip Fanouts : 31 (0:516)
  664. Total Ignored Nets : 1157
  665. Total Valid Blocks : 114 (102/8)
  666. Total Ignored Blocks : 2
  667. Total Zip Complexities : 640/3691 2.41/1540.71
  668. Avg Zip Bottleneck : 3.98 30.31
  669. Avg Net Bottleneck : 15.18 449.50
  670. Iter #1/1 ...
  671. Pass 1 #1/1 ...
  672. Partitioning...
  673. step = 0, partition : 20,12
  674. step = 1, partition : 10,7
  675. ....................
  676. step = 2, partition : 5,3
  677. ....................
  678. step = 3, partition : 2,2
  679. ....................
  680. step = 4, partition : 2,2
  681. ....................
  682. ## CPU time: 0:0:4, REAL time: 0:0:6
  683. Pass 2 #1/1 ...
  684. Legalization and Swapping...
  685. ..........
  686. ## CPU time: 0:0:2, REAL time: 0:0:3
  687. Pass 3 #1/1 ...
  688. Touchup...
  689. ## CPU time: 0:0:0, REAL time: 0:0:0
  690. Pass 4 #1/1 ...
  691. Optimization...
  692. ............................................................
  693. Finishing...
  694. ## CPU time: 0:0:3, REAL time: 0:0:4
  695. Total wire cost after placement: 0.827384:0.0860479:0.285(0.827384:0.0860479) 5430.29(617.123)+18707(0)+4924.13 4537.95(1278.2)+1119.25
  696. *** Post Placement Timing Report ***
  697. === User constraints ===
  698. Fmax report
  699. User constraint: 8.000MHz, Fmax: 115.167MHz, Clock: PIN_HSE
  700. User constraint: 10.000MHz, Fmax: 115.168MHz, Clock: PIN_HSI
  701. User constraint: 104.000MHz, Fmax: 115.168MHz, Clock: pll_inst|auto_generated|pll1|clk[0]
  702. Clock transfer report:
  703. Worst setup: 116.317, with clock PIN_HSE
  704. Worst setup: 91.317, with clock PIN_HSI
  705. Worst setup: 0.932, with clock pll_inst|auto_generated|pll1|clk[0]
  706. Worst hold: 0.285, with clock PIN_HSE
  707. Worst hold: 0.285, with clock PIN_HSI
  708. Worst hold: 0.285, with clock pll_inst|auto_generated|pll1|clk[0]
  709. === Auto constraints ===
  710. Coverage report
  711. User constraints covered 3450 connections out of 6471 total, coverage: 53.3%
  712. Auto constraints covered 3450 connections out of 6471 total, coverage: 53.3%
  713. Setup from macro_inst|trig_ctrl_inst|trigger_ptr[0] to clken_ctrl_X61_Y5_N0, clock pll_inst|auto_generated|pll1|clk[0], constraint 9.615, skew -0.332, data 8.261
  714. Slack: 0.932
  715. Arrival Time: 9.198
  716. Required Time: 10.130
  717. *** End Timing Report ***
  718. route_design -dump ./alta_db/route.tx -replace ./alta_db/replace.tx
  719. Route Design Statistics
  720. Total Routing Nets : 1890
  721. Fanout Average : 3.39 (1..150)
  722. Max Fanout Net : macro_inst|apb_dac0_inst|phase_r[1]
  723. Logic Slices : 1583/2112 (75.0%)
  724. Routing...
  725. Budget Useful Skew...
  726. ## CPU time: 0:0:0, REAL time: 0:0:0
  727. iter = 1/1, route#: 1890, violation# : 971, overflow# : 922, conflict# : 865, node#: 11996
  728. ## CPU time: 0:0:0, REAL time: 0:0:1
  729. iter = 2/2, route#: 1890, violation# : 744, overflow# : 738, conflict# : 683, node#: 12518
  730. ## CPU time: 0:0:1, REAL time: 0:0:1
  731. iter = 3/3, route#: 1890, violation# : 295, overflow# : 295, conflict# : 290, node#: 13104
  732. ## CPU time: 0:0:1, REAL time: 0:0:1
  733. iter = 4/4, route#: 1890, violation# : 59, overflow# : 59, conflict# : 79, node#: 13443
  734. ## CPU time: 0:0:1, REAL time: 0:0:2
  735. iter = 5/5, route#: 1890, violation# : 2, overflow# : 2, conflict# : 4, node#: 13540
  736. ## CPU time: 0:0:2, REAL time: 0:0:2
  737. iter = 6/6, route#: 1890, violation# : 0, overflow# : 0, conflict# : 0, node#: 13529
  738. ## CPU time: 0:0:2, REAL time: 0:0:2
  739. iter = 7/3, route#: 38, violation# : 10, overflow# : 10, conflict# : 17, node#: 13509
  740. ## CPU time: 0:0:2, REAL time: 0:0:3
  741. iter = 8/4, route#: 10, violation# : 0, overflow# : 0, conflict# : 0, node#: 13524
  742. ## CPU time: 0:0:2, REAL time: 0:0:3
  743. iter = 9/3, route#: 36, violation# : 10, overflow# : 10, conflict# : 17, node#: 13509
  744. ## CPU time: 0:0:2, REAL time: 0:0:3
  745. iter = 10/4, route#: 13, violation# : 0, overflow# : 0, conflict# : 0, node#: 13520
  746. ## CPU time: 0:0:2, REAL time: 0:0:3
  747. iter = 11/3, route#: 46, violation# : 12, overflow# : 12, conflict# : 21, node#: 13505
  748. ## CPU time: 0:0:2, REAL time: 0:0:3
  749. iter = 12/4, route#: 14, violation# : 2, overflow# : 2, conflict# : 3, node#: 13519
  750. ## CPU time: 0:0:2, REAL time: 0:0:3
  751. iter = 13/5, route#: 25, violation# : 0, overflow# : 0, conflict# : 0, node#: 13523
  752. ## CPU time: 0:0:2, REAL time: 0:0:3
  753. iter = 14/3, route#: 30, violation# : 4, overflow# : 4, conflict# : 8, node#: 13520
  754. ## CPU time: 0:0:3, REAL time: 0:0:3
  755. iter = 15/4, route#: 4, violation# : 0, overflow# : 0, conflict# : 0, node#: 13528
  756. Optimizing...
  757. ...
  758. Done
  759. *** Post Routing Timing Report ***
  760. === User constraints ===
  761. Fmax report
  762. User constraint: 8.000MHz, Fmax: 118.329MHz, Clock: PIN_HSE
  763. User constraint: 10.000MHz, Fmax: 118.329MHz, Clock: PIN_HSI
  764. User constraint: 104.000MHz, Fmax: 118.329MHz, Clock: pll_inst|auto_generated|pll1|clk[0]
  765. Clock transfer report:
  766. Worst setup: 116.549, with clock PIN_HSE
  767. Worst setup: 91.549, with clock PIN_HSI
  768. Worst setup: 1.164, with clock pll_inst|auto_generated|pll1|clk[0]
  769. Worst hold: 0.543, with clock PIN_HSE
  770. Worst hold: 0.543, with clock PIN_HSI
  771. Worst hold: 0.543, with clock pll_inst|auto_generated|pll1|clk[0]
  772. === Auto constraints ===
  773. Coverage report
  774. User constraints covered 3450 connections out of 6471 total, coverage: 53.3%
  775. Auto constraints covered 3450 connections out of 6471 total, coverage: 53.3%
  776. Setup from macro_inst|cfg_reg_inst|trig_threshold[0] to clken_ctrl_X58_Y6_N1, clock pll_inst|auto_generated|pll1|clk[0], constraint 9.615, skew -0.332, data 8.029
  777. Slack: 1.164
  778. Arrival Time: 8.966
  779. Required Time: 10.130
  780. *** End Timing Report ***
  781. Sat May 09 14:19:58 2026
  782. Warn: User constraints coverage is too low at 53.3%.
  783. Generating batch file: {C:/Users/zzz17/AgRV_pio/packages/tool-agrv_logic/python_dist/python.exe} {C:/Users/zzz17/AgRV_pio/packages/tool-agrv_logic/pio/gen_batch} -d 1075838977 -i 0xbff5105000730062aa234371030002b7 -o ./example_board_batch.bin --logic-config ./example_board.bin --logic-address 0x80007000 --logic-compress
  784. >
  785. > if { [file exists "./${DESIGN}.post.asf"] } {
  786. alta::tcl_highlight "Using post-ASF file ${DESIGN}.post.asf.\n"
  787. source "./${DESIGN}.post.asf"
  788. }
  789. Using post-ASF file example_board.post.asf.
  790. > # pio_begin >>>>>> DO NOT MODIFY THIS SECTION! >>>>>>
  791. > # pio_end <<<<<< DO NOT MODIFY THIS SECTION! <<<<<<
  792. > ##
  793. >
  794. > date_time
  795. Sat May 09 14:19:59 2026
  796. > exit
  797. Total 0 fatals, 0 errors, 3 warnings, 138 infos.