??在FPGA設計過程中,合理的引腳分配是確保硬件功能正確實現的關鍵步驟之一。Quartus II 提供了通過 TCL(Tool Command Language)腳本自動化引腳分配的功能,這不僅可以大大提高設計效率,還能夠確保引腳分配的精確性和可重復性。本文將詳細介紹如何在 Quartus II 中使用 TCL 文件進行引腳一鍵分配,提高設計流程的自動化程度。
1 導出tcl文件
1.1 查看要導出的引腳
如下圖所示,導出的引腳為下圖所示的引腳:
1.2 導出tcl文件步驟
這里選擇tcl保存位置:
導出成功應該是這樣的:
其實我們只需要自己需要的配置文件就可以了,比如只取set_location_assignment和set_instance_assignment:
set_location_assignment PIN_P3 -to EnPrintset_location_assignment PIN_L7 -to PowerOnset_location_assignment PIN_E1 -to in_clkset_location_assignment PIN_M16 -to in_rstset_location_assignment PIN_D3 -to inkjet_A1set_location_assignment PIN_D1 -to inkjet_A2set_location_assignment PIN_F5 -to inkjet_A3set_location_assignment PIN_G2 -to inkjet_A4set_location_assignment PIN_F3 -to inkjet_A5set_location_assignment PIN_J6 -to inkjet_A6set_location_assignment PIN_L4 -to inkjet_A7set_location_assignment PIN_C2 -to inkjet_CEset_location_assignment PIN_D5 -to inkjet_CKset_location_assignment PIN_J1 -to inkjet_D1set_location_assignment PIN_K1 -to inkjet_D2set_location_assignment PIN_L1 -to inkjet_D3set_location_assignment PIN_P2 -to inkjet_D4set_location_assignment PIN_K2 -to inkjet_S1set_location_assignment PIN_L2 -to inkjet_S2set_location_assignment PIN_N2 -to inkjet_S3set_location_assignment PIN_R1 -to inkjet_S4set_location_assignment PIN_C3 -to inkjet_SHset_location_assignment PIN_G1 -to inkjet_VLset_location_assignment PIN_G5 -to inkjet_VPCset_location_assignment PIN_K6 -to inkjet_VPKset_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to EnPrintset_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to PowerOnset_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to in_clkset_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to in_rstset_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to inkjet_A1set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to inkjet_A2set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to inkjet_A3set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to inkjet_A4set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to inkjet_A5set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to inkjet_A6set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to inkjet_A7set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to inkjet_CEset_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to inkjet_CKset_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to inkjet_D1set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to inkjet_D2set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to inkjet_D3set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to inkjet_D4set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to inkjet_S1set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to inkjet_S2set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to inkjet_S3set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to inkjet_S4set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to inkjet_SHset_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to inkjet_VLset_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to inkjet_VPCset_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to inkjet_VPKset_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to temp_clk
1.3 tcl語法介紹
-
set_location_assignment
功能:該命令用于將特定的邏輯元素(如FPGA中的輸入/輸出引腳、存儲器塊等)分配到特定的物理位置(引腳、塊)上。
語法:
set_location_assignment location -to instance
location: 指定要分配的物理位置(例如,具體的引腳編號)。
instance: 指定要進行位置分配的設計實例或信號。
用途:通常用于在FPGA設計中強制特定的模塊或引腳占用特定的硬件位置,確保信號的正確路由和時序要求。通過合理的引腳分配,可以減少信號延遲和電路擁塞。 -
set_instance_assignment
功能:該命令用于設置特定實例的屬性或約束,可能包括配置信息、實現方式或特定的制造工藝選擇。
語法:
set_instance_assignment property value -to instance
property: 指定要設置的屬性,例如速度等級、功耗模式等。
value: 給定屬性的值,例如可以是“FAST”或“SLOW”等。
instance: 指定要更改屬性的設計實例。
2 導入tcl文件
2.1 將tcl文件添加到項目里
這里右鍵添加tcl文件到項目里面
這里選擇tcl所在位置
這里一定要選add,不然添加不進去。
2.2 運行tcl文件
這里就表示已經將tcl文件設置完成,可以直接查看:
總結
??在FPGA設計過程中,合理的引腳分配至關重要,它確保了硬件功能的正確實現。使用TCL腳本進行引腳分配不僅節省了手動配置的時間,還減少了人為錯誤的風險,使得設計流程更加流暢。通過設置具體的引腳位置和實例屬性,可以快速實現符合設計需求的配置。組合set_location_assignment和set_instance_assignment等命令,我可以有條不紊地管理引腳和實例,確保邏輯與物理的有效匹配。