| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523 |
- > set sh_continue_on_error false
- > set sh_echo_on_source true
- > set sh_quiet_on_source true
- > set cc_critical_as_fatal true
- >
- > set_seed_rand 10
- > if { ! [info exists LOGIC_DEVICE] } {
- set LOGIC_DEVICE AGRV2KL100
- }
- > if { ! [info exists LOGIC_DESIGN] } {
- set LOGIC_DESIGN top
- }
- > if { ! [info exists LOGIC_MODULE] } {
- set LOGIC_MODULE "$LOGIC_DESIGN"
- }
- > if { ! [info exists LOGIC_FORCE] } {
- set LOGIC_FORCE false
- }
- > if { ! [info exists IP_INSTALL_DIR] } {
- set IP_INSTALL_DIR ""
- }
- > if { ! [info exists LOGIC_TOPPIN] } {
- set LOGIC_TOPPIN false
- }
- > if { ! [info exists LOGIC_DIR] } {
- set LOGIC_DIR .
- }
- > if { ! [info exists LOGIC_VV] } {
- set LOGIC_VV "${LOGIC_DESIGN}.v"
- }
- > if { ! [info exists IP_VV] } {
- set IP_VV ""
- }
- > if { ! [info exists LIB_DIRS] } {
- set LIB_DIRS {.}
- }
- > if { ! [info exists LOGIC_ASF] } {
- set LOGIC_ASF ""
- }
- > if { ! [info exists LOGIC_PRE] } {
- set LOGIC_PRE ""
- }
- > if { ! [info exists LOGIC_POST] } {
- set LOGIC_POST ""
- }
- > if { ! [info exists DESIGN_ASF] } {
- set DESIGN_ASF ""
- }
- > if { ! [info exists DESIGN_PRE] } {
- set DESIGN_PRE ""
- }
- > if { ! [info exists DESIGN_POST] } {
- set DESIGN_POST ""
- }
- > if { ! [info exists SDC_FILE] } {
- set SDC_FILE ""
- }
- > if { ! [info exists VE_FILE] } {
- set VE_FILE ""
- }
- > if { ! [info exists VEX_FILE] } {
- set VEX_FILE ""
- }
- > if { ! [info exists AGF_FILE] } {
- set AGF_FILE ""
- }
- > if { ! [info exists LOGIC_COMPRESS] } {
- set LOGIC_COMPRESS false
- }
- >
- > cd $LOGIC_DIR
- >
- > alta::set_verbose_cmd false
- > set logic_ip false
- > if { $IP_INSTALL_DIR != "" } {
- set logic_ip true
- }
- >
- > set ETC_DIR [file join [alta::prog_home] "etc"]
- > set IP_FILES ""
- > set VERILOG_FILES $LOGIC_VV
- > if { $IP_VV != "" } {
- set VERILOG_FILES "$VERILOG_FILES $IP_VV"
- }
- > set VQM_FILES ""
- > set VHDL_FILES ""
- > set AF_QUARTUS_TEMPL [file join $ETC_DIR "af_quartus.tcl"]
- > set AF_QUARTUS "af_quartus.tcl"
- > set AF_IP_TEMPL [file join $ETC_DIR "af_ip.tcl"]
- > set AF_IP "af_ip.tcl"
- > set AF_MAP_TEMPL [file join $ETC_DIR "af_map.tcl"]
- > set AF_MAP "af_map.tcl"
- > set AF_RUN_TEMPL [file join $ETC_DIR "af_run.tcl"]
- > set AF_RUN "af_run.tcl"
- > set AF_BATCH_TEMPL [file join $ETC_DIR "af_batch.tcl"]
- > set AF_BATCH "af_batch.tcl"
- >
- > if { ! [info exists ORIGINAL_DIR] } {
- set ORIGINAL_DIR ""
- }
- > if { ! [info exists ORIGINAL_OUTPUT] } {
- set ORIGINAL_OUTPUT ""
- }
- > if { ! [info exists ORIGINAL_QSF] } {
- set ORIGINAL_QSF ""
- }
- > if { ! [info exists ORIGINAL_PIN] } {
- set ORIGINAL_PIN ""
- }
- >
- > set GCLK_CNT -1; # Allow an extra gclk for GCLKSW
- > set USE_DESIGN_TEMPL true
- >
- > proc print_fdata { fp data } {
- if { [string index $data end] == "\n" } {
- puts -nonewline $fp $data
- } else {
- puts $fp $data
- }
- }
- >
- > proc backup_files { fnames } {
- foreach fname $fnames {
- if { $fname != "" } {
- set new_fname ".__${fname}__"
- if { [file exists $fname] } {
- catch "file delete -force $new_fname"
- catch "file rename -force $fname $new_fname"
- }
- }
- }
- }
- >
- > proc restore_files { fnames } {
- foreach fname $fnames {
- if { $fname != "" } {
- set new_fname ".__${fname}__"
- if { [file exists $new_fname] } {
- catch "file delete -force $fname"
- catch "file rename -force $new_fname $fname"
- }
- }
- }
- }
- >
- > proc read_file { fname } {
- set lines {}
- if { ! [file exists $fname] } {
- return $lines
- }
- set fp [open $fname]
- set is_pio false
- set skip_empty false
- while { [gets $fp line] >= 0 } {
- if { [string first "pio_begin" $line] >= 0 } {
- set is_pio true
- } elseif { [string first "pio_end" $line] >= 0 } {
- set is_pio false
- set skip_empty true
- } elseif { ! $is_pio } {
- if { ! ($skip_empty && [regexp -expanded {^[ #]*$} $line]) } {
- lappend lines $line
- set skip_empty false
- }
- }
- }
- close $fp
- return $lines
- }
- >
- > set logic_hx ${LOGIC_DESIGN}.hx
- > set hx_fp [open $logic_hx r]
- > set hsi_freq 0
- > set hse_freq 0
- > set sys_freq 0
- > set bus_freq 0
- > while { [gets $hx_fp line] >= 0 } {
- set words [split $line]
- if { [lindex $words 0] == "#define" } {
- if { [lindex $words 1] == "BOARD_HSI_FREQUENCY" } {
- set hsi_freq [lindex $words 2]
- } elseif { [lindex $words 1] == "BOARD_HSE_FREQUENCY" } {
- set hse_freq [lindex $words 2]
- } elseif { [lindex $words 1] == "BOARD_PLL_FREQUENCY" } {
- set sys_freq [lindex $words 2]
- } elseif { [lindex $words 1] == "BOARD_BUS_FREQUENCY" } {
- set bus_freq [lindex $words 2]
- }
- if { [lindex $words 1] == "BOARD_PLL_CLKIN" } {
- set BOARD_PLL_CLKIN [lindex $words 2]
- }
- if { [lindex $words 1] == "USB0_MODE" } {
- set USB0_MODE [lindex $words 2]
- }
- }
- }
- > close $hx_fp
- >
- > if { ! $logic_ip } {
- set sdc_file ${LOGIC_DESIGN}.sdc
- set sdc_ip ""
- } else {
- set sdc_file ${LOGIC_DESIGN}_.sdc
- set sdc_ip ${LOGIC_DESIGN}.sdc
- }
- >
- > set logic_qsf ${LOGIC_DESIGN}.qsf
- > set logic_qpf ${LOGIC_DESIGN}.qpf
- > set supra_proj ${LOGIC_DESIGN}.proj
- > set keep_files [list $sdc_file $sdc_ip]
- > set skip_setup 0
- > if { [file exists $logic_qsf] || [file exists $logic_qpf] } {
- if { $LOGIC_FORCE } {
- alta::tcl_info "Overwrite existing LOGIC preparation files in $LOGIC_DIR"
- set skip_setup 1
- } else {
- alta::tcl_warn "Files for LOGIC preparation already exist in $LOGIC_DIR"
- set skip_setup 2
- alta::lconcat keep_files [list $logic_qsf $logic_qpf $supra_proj]
- }
- }
- Warn: Files for LOGIC preparation already exist in logic.
- >
- > if { $skip_setup < 3 } {
- backup_files $keep_files
- load_architect -no_work -no_route -type $LOGIC_DEVICE
- if { ${SDC_FILE} == "" && ${AGF_FILE} == "" && ${VEX_FILE} == "" } {
- alta::setupRun ${LOGIC_DESIGN} ${LOGIC_MODULE} \
- "${IP_FILES}" \
- "${VERILOG_FILES}" \
- "${VQM_FILES}" \
- "${VHDL_FILES}" \
- "${LIB_DIRS}" \
- "${AF_QUARTUS_TEMPL}" "${AF_QUARTUS}" \
- "${AF_IP_TEMPL}" "${AF_IP}" \
- "${AF_MAP_TEMPL}" "${AF_MAP}" \
- "${AF_RUN_TEMPL}" "${AF_RUN}" \
- "${AF_BATCH_TEMPL}" "${AF_BATCH}" \
- "${VE_FILE}" \
- "." "${ORIGINAL_DIR}" "${ORIGINAL_OUTPUT}"\
- "${ORIGINAL_QSF}" "${ORIGINAL_PIN}" \
- "${GCLK_CNT}" "${USE_DESIGN_TEMPL}"
- } else {
- alta::setupRun ${LOGIC_DESIGN} ${LOGIC_MODULE} \
- "${IP_FILES}" \
- "${VERILOG_FILES}" \
- "${VQM_FILES}" \
- "${VHDL_FILES}" \
- "${LIB_DIRS}" \
- "${AF_QUARTUS_TEMPL}" "${AF_QUARTUS}" \
- "${AF_IP_TEMPL}" "${AF_IP}" \
- "${AF_MAP_TEMPL}" "${AF_MAP}" \
- "${AF_RUN_TEMPL}" "${AF_RUN}" \
- "${AF_BATCH_TEMPL}" "${AF_BATCH}" \
- "${VE_FILE}" \
- "." "${ORIGINAL_DIR}" "${ORIGINAL_OUTPUT}"\
- "${ORIGINAL_QSF}" "${ORIGINAL_PIN}" \
- "${GCLK_CNT}" "${USE_DESIGN_TEMPL}" \
- "${SDC_FILE}" "${AGF_FILE}" "${VEX_FILE}"
- }
- if { true } {
- set proj_fp [open $supra_proj w]
- puts $proj_fp {[GuiMigrateSetupPage]}
- puts $proj_fp "design=$LOGIC_DESIGN"
- puts $proj_fp "device=$LOGIC_DEVICE"
- puts $proj_fp "flowInline=true"
- puts $proj_fp ""
- puts $proj_fp {[GuiMigrateRunPage]}
- puts $proj_fp "fitting=1"
- puts $proj_fp "fitter=5"
- puts $proj_fp "effort=2"
- puts $proj_fp "skew=2"
- if { $logic_ip } {
- puts $proj_fp "flow=0"
- }
- close $proj_fp
- }
- restore_files $keep_files
- if { true } {
- set proj_lines [read_file $supra_proj]
- set proj_fp [open $supra_proj w]
- set flow_inline false
- foreach line $proj_lines {
- if { [string first "flowInline" $line] >= 0 } {
- puts $proj_fp "flowInline=force"
- set flow_inline true
- } else {
- puts $proj_fp $line
- }
- }
- if { ! $flow_inline } {
- puts $proj_fp "\n\[GuiMigrateSetupPage\]"
- puts $proj_fp "flowInline=force"
- }
- close $proj_fp
- }
- if { $sdc_file != "" } {
- set sdc_lines [read_file $sdc_file]
- set sdc_fp [open $sdc_file w]
- puts $sdc_fp "# pio_begin"
- if { $hsi_freq != 0 } {
- set hsi_period [expr 1000000000.0/$hsi_freq]
- puts $sdc_fp "if { ! \[info exists ::HSI_PERIOD\] } {"
- puts $sdc_fp " set ::HSI_PERIOD $hsi_period"
- puts $sdc_fp "}"
- puts $sdc_fp "create_clock -name PIN_HSI -period \$::HSI_PERIOD \[get_ports PIN_HSI\]"
- puts $sdc_fp "set_clock_groups -asynchronous -group PIN_HSI"
- }
- if { $hse_freq != 0 } {
- set hse_period [expr 1000000000.0/$hse_freq]
- puts $sdc_fp "if { ! \[info exists ::HSE_PERIOD\] } {"
- puts $sdc_fp " set ::HSE_PERIOD $hse_period"
- puts $sdc_fp "}"
- puts $sdc_fp "create_clock -name PIN_HSE -period \$::HSE_PERIOD \[get_ports PIN_HSE\]"
- puts $sdc_fp "set_clock_groups -asynchronous -group PIN_HSE"
- }
- puts $sdc_fp "derive_pll_clocks -create_base_clocks"
- puts $sdc_fp "set_false_path -from rv32|resetn_out"
- puts $sdc_fp "# pio_end"
- puts $sdc_fp "##\n"
- foreach line $sdc_lines {
- puts $sdc_fp $line
- }
- close $sdc_fp
- }
- if { $sdc_ip != "" } {
- set sdc_lines [read_file $sdc_ip]
- set sdc_fp [open $sdc_ip w]
- puts $sdc_fp "# pio_begin"
- if { $sys_freq != 0 } {
- set sys_period [expr 1000000000.0/$sys_freq]
- puts $sdc_fp "create_clock -name sys_clock -period $sys_period \[get_ports sys_clock\]"
- }
- if { $bus_freq != 0 } {
- set bus_period [expr 1000000000.0/$bus_freq]
- puts $sdc_fp "create_clock -name bus_clock -period $bus_period \[get_ports bus_clock\]"
- }
- puts $sdc_fp "set_false_path -from resetn"
- puts $sdc_fp "# pio_end"
- puts $sdc_fp "##\n"
- foreach line $sdc_lines {
- puts $sdc_fp $line
- }
- close $sdc_fp
- }
- if { $logic_ip } {
- set qsf_lines [read_file $logic_qsf]
- set qsf_fp [open $logic_qsf w]
- puts $qsf_fp "# pio_begin >>>>>> DO NOT MODIFY THIS SECTION! >>>>>>"
- puts $qsf_fp "set_instance_assignment -name VIRTUAL_PIN ON -to *"
- puts $qsf_fp "# pio_end <<<<<< DO NOT MODIFY THIS SECTION! <<<<<<"
- puts $qsf_fp "##\n"
- foreach line $qsf_lines {
- puts $qsf_fp $line
- }
- close $qsf_fp
- set run_lines [read_file $AF_RUN]
- set run_fp [open $AF_RUN w]
- puts $run_fp "# pio_begin >>>>>> DO NOT MODIFY THIS SECTION! >>>>>>"
- puts $run_fp "if { [info exists MODE] && (\$MODE == \"SYNPLICITY\" || \$MODE == \"NATIVE\") } {"
- puts $run_fp " set FLOW SKIP"
- puts $run_fp "} else {"
- puts $run_fp " set FLOW PACK"
- puts $run_fp "}"
- puts $run_fp "# pio_end <<<<<< DO NOT MODIFY THIS SECTION! <<<<<<"
- puts $run_fp "##\n"
- foreach line $run_lines {
- puts $run_fp $line
- }
- close $run_fp
- set map_lines [read_file $AF_MAP]
- set map_fp [open $AF_MAP w]
- puts $map_fp "# pio_begin >>>>>> DO NOT MODIFY THIS SECTION! >>>>>>"
- if { $logic_ip } {
- puts $map_fp "set IOPAD false"
- } else {
- puts $map_fp "set IOPAD true"
- }
- puts $map_fp "# pio_end <<<<<< DO NOT MODIFY THIS SECTION! <<<<<<"
- puts $map_fp "##\n"
- foreach line $map_lines {
- puts $map_fp $line
- }
- close $map_fp
- }
- if { true } {
- set pre_asf ${LOGIC_DESIGN}.pre.asf
- set pre_lines [read_file $pre_asf]
- set pre_fp [open $pre_asf w]
- puts $pre_fp "# pio_begin >>>>>> DO NOT MODIFY THIS SECTION! >>>>>>"
- if { "$LOGIC_PRE" != "" } {
- set logic_fp [open $LOGIC_PRE r]; set logic_data [read $logic_fp]; close $logic_fp
- print_fdata $pre_fp $logic_data
- }
- if { !$logic_ip } {
- if { [info exists BOARD_PLL_CLKIN] } {
- puts $pre_fp "set BOARD_PLL_CLKIN $BOARD_PLL_CLKIN"
- }
- if { [info exists USB0_MODE] } {
- puts $pre_fp "set USB0_MODE $USB0_MODE"
- }
- puts $pre_fp "set db_io_name_priority $LOGIC_TOPPIN"
- puts $pre_fp "set ip_pll_vco_lowpower true"
- if { $LOGIC_COMPRESS } {
- puts $pre_fp "set_global_assignment -name ON_CHIP_BITSTREAM_DECOMPRESSION \"ON\""
- } else {
- puts $pre_fp "set_global_assignment -name ON_CHIP_BITSTREAM_DECOMPRESSION \"OFF\""
- }
- }
- if { "$DESIGN_PRE" != "" } {
- set design_fp [open $DESIGN_PRE r]; set design_data [read $design_fp]; close $design_fp
- print_fdata $pre_fp $design_data
- }
- puts $pre_fp "# pio_end <<<<<< DO NOT MODIFY THIS SECTION! <<<<<<"
- puts $pre_fp "##\n"
- foreach line $pre_lines {
- puts $pre_fp $line
- }
- close $pre_fp
- }
-
- if { true } {
- set asf_asf ${LOGIC_DESIGN}.asf
- set asf_lines [read_file $asf_asf]
- set asf_fp [open $asf_asf w]
- puts $asf_fp "# pio_begin >>>>>> DO NOT MODIFY THIS SECTION! >>>>>>"
- if { "$LOGIC_ASF" != "" } {
- set logic_fp [open $LOGIC_ASF r]; set logic_data [read $logic_fp]; close $logic_fp
- print_fdata $asf_fp $logic_data
- }
- if { "$DESIGN_ASF" != "" } {
- set design_fp [open $DESIGN_ASF r]; set design_data [read $design_fp]; close $design_fp
- print_fdata $asf_fp $design_data
- }
- puts $asf_fp "# pio_end <<<<<< DO NOT MODIFY THIS SECTION! <<<<<<"
- puts $asf_fp "##\n"
- foreach line $asf_lines {
- puts $asf_fp $line
- }
- close $asf_fp
- }
- if { true } {
- set post_asf ${LOGIC_DESIGN}.post.asf
- set post_lines [read_file $post_asf]
- set post_fp [open $post_asf w]
- puts $post_fp "# pio_begin >>>>>> DO NOT MODIFY THIS SECTION! >>>>>>"
- if { "$LOGIC_POST" != "" } {
- set logic_fp [open $LOGIC_POST r]; set logic_data [read $logic_fp]; close $logic_fp
- print_fdata $post_fp $logic_data
- }
- if { $logic_ip } {
- puts $post_fp "file mkdir $IP_INSTALL_DIR"
- puts $post_fp "if { ! \[file exists ${IP_INSTALL_DIR}/${LOGIC_DESIGN}.sdc\] } {"
- puts $post_fp " file copy -force ./${LOGIC_DESIGN}_.sdc ${IP_INSTALL_DIR}/${LOGIC_DESIGN}.sdc"
- puts $post_fp "}"
- puts $post_fp "file copy -force ./${LOGIC_DESIGN}_.ve ${IP_INSTALL_DIR}/${LOGIC_DESIGN}.ve"
- puts $post_fp "if { \$MODE == \"SYNPLICITY\" || \$MODE == \"NATIVE\" } {"
- puts $post_fp " file copy -force ${LOGIC_DESIGN}.vqm ${IP_INSTALL_DIR}/${LOGIC_DESIGN}.vq"
- puts $post_fp "} else {"
- puts $post_fp " file copy -force ./alta_db/packed.vx ${IP_INSTALL_DIR}/${LOGIC_DESIGN}.vx"
- puts $post_fp "}"
- }
- if { "$DESIGN_POST" != "" } {
- set design_fp [open $DESIGN_POST r]; set design_data [read $design_fp]; close $design_fp
- print_fdata $post_fp $design_data
- }
- puts $post_fp "# pio_end <<<<<< DO NOT MODIFY THIS SECTION! <<<<<<"
- puts $post_fp "##\n"
- foreach line $post_lines {
- puts $post_fp $line
- }
- close $post_fp
- }
- if { true } {
- set pre_asf ${LOGIC_DESIGN}.pre_map.asf
- set pre_lines [read_file $pre_asf]
- set pre_fp [open $pre_asf w]
- puts $pre_fp "# pio_begin >>>>>> DO NOT MODIFY THIS SECTION! >>>>>>"
- puts $pre_fp "# pio_end <<<<<< DO NOT MODIFY THIS SECTION! <<<<<<"
- puts $pre_fp "##\n"
- foreach line $pre_lines {
- puts $pre_fp $line
- }
- close $pre_fp
- }
-
- if { true } {
- set post_asf ${LOGIC_DESIGN}.post_map.asf
- set post_lines [read_file $post_asf]
- set post_fp [open $post_asf w]
- puts $post_fp "# pio_begin >>>>>> DO NOT MODIFY THIS SECTION! >>>>>>"
- puts $post_fp "# pio_end <<<<<< DO NOT MODIFY THIS SECTION! <<<<<<"
- puts $post_fp "##\n"
- foreach line $post_lines {
- puts $post_fp $line
- }
- close $post_fp
- }
-
- }
- Total IO : 150
- Total Pin : 128/17
- Top array is built.
- Loading architect libraries...
- ## CPU time: 0:0:0, REAL time: 0:0:0
- ## Memory Usage: 52MB (52MB)
- Warn: Can not find SDC file .\\fpga_boot.sdc, create a empty one.
- Info: Using device QSF template file C:/Users/zzz17/.platformio/packages/tool-agrv_logic/etc/AGRV2K_templ.qsf.
- Info: Can not find pre_map-ASF file ./fpga_boot.pre_map.asf, create a empty one.
- Info: Can not find post_map-ASF file ./fpga_boot.post_map.asf, create a empty one.
- >
- > exit
- Total 0 fatals, 0 errors, 2 warnings, 3 infos.
|