在FPGA开发中,我们经常遇到因为管脚忘记约束,导致最后生成bit的时候报错
1.管脚电平未约束
![image-20211018181223102 图片[1]-FPGA管脚约束问题导致生成bit时报错 如何在不重新Implentation情况下生成bit?-Xilinx-AMD论坛-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2022/11/01668138487.png)
image-20211018181223102
![image-20211018181242070 图片[2]-FPGA管脚约束问题导致生成bit时报错 如何在不重新Implentation情况下生成bit?-Xilinx-AMD论坛-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2022/11/61668138488.png)
像上面这个图中,由于在约束中忘记指定mdc和mdio的电平,再经过了长时间的综合和实现后,最后的Generate Bitstream报错了。
这种情况下,如何才能不重新Implementation的情况下生成bit呢?
打开实现后的routed.dcp
文件:
open_checkpoint ./Work/eth_demo.runs/impl_1/top_routed.dcp
然后通过下面指令设置这两个管脚的电平:
set_property IOSTANDARD LVCMOS15 [get_ports mdc] set_property IOSTANDARD LVCMOS15 [get_ports mdio]
![image-20211018182928539 图片[3]-FPGA管脚约束问题导致生成bit时报错 如何在不重新Implentation情况下生成bit?-Xilinx-AMD论坛-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2022/11/71668138489.png)
设置完成后,可以在I/O Ports窗口中看到这两个管脚的电平已经改了过来
![image-20211018183134130 图片[4]-FPGA管脚约束问题导致生成bit时报错 如何在不重新Implentation情况下生成bit?-Xilinx-AMD论坛-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2022/11/31668138491.png)
然后再点左侧的生成bit:
![image-20211018175121801 图片[5]-FPGA管脚约束问题导致生成bit时报错 如何在不重新Implentation情况下生成bit?-Xilinx-AMD论坛-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2022/11/21668138491.png)
提示生成文件的位置和名字:
![image-20211018175200025 图片[6]-FPGA管脚约束问题导致生成bit时报错 如何在不重新Implentation情况下生成bit?-Xilinx-AMD论坛-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2022/11/61668138492.png)
在正确生成后,可以看到tcl中提示write_bitstream completed successfully
:
![image-20211018181921838 图片[7]-FPGA管脚约束问题导致生成bit时报错 如何在不重新Implentation情况下生成bit?-Xilinx-AMD论坛-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2022/11/41668138493.png)
管脚电平修改后由于跟布局布线都没有关系,因此直接生成bit是可以的。
2.管脚位置未约束
如果是管脚位置未约束,那我们就不能在dcp中修改位置然后直接生成bit了,因为位置变了,布局布线也需要改变。如果这个管脚的功能的需要的,那我们只能重新Implementation,如果这个管脚功能是不需要的,
那如果这个管脚的功能我们可以先不用,就想把经过了长时间的Synthsis和Implentation后的工程生成bit文件。
还是像上面一样,打开route.dcp
文件,然后点击坐标的Report DRC
![image-20211018175619699 图片[8]-FPGA管脚约束问题导致生成bit时报错 如何在不重新Implentation情况下生成bit?-Xilinx-AMD论坛-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2022/11/11668138493.png)
可以看到有两个问题,一个是NSTD-1
,一个是UCIO-1
![image-20211018194046725 图片[9]-FPGA管脚约束问题导致生成bit时报错 如何在不重新Implentation情况下生成bit?-Xilinx-AMD论坛-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2022/11/71668138494.png)
我们只需要把这两个DRC的问题设成warning,不让工具在生成bit的时候报错,也是可以生成bit的。执行tcl脚本如下:
set_property SEVERITY {Warning} [get_drc_checks UCIO-1] set_property SEVERITY {Warning} [get_drc_checks NSTD-1]
然后再Generate Bitstream.
没有回复内容