使用 TCL 腳本添加 ip
以 BRAM 為例定制化 ip
以下為 tcl 腳本代碼示例,用前需要刪除注釋
create_ip \
-name blk_mem_gen \ # 這里指定的是要加入的 ip 的類型名
-vendor xilinx.com -library ip \
-module_name blkm \ # 這里指定的是定制化 ip 后,類似於 verilog 中 module 的名字
-dir $ipdir -force
set_property -dict [list \
CONFIG.Interface_Type {Native} \ # 對應上圖中的 A
CONFIG.Memory_Type {True_Dual_Port_RAM} \ # 對應上圖中的 B
CONFIG.ecctype {No_ECC} \ # 對應上圖中的 C
CONFIG.Algorithm {Minimum_Area} \ # 對應上圖中的 D
CONFIG.Primitive {8kx2} \ # 對應上圖中的 E
CONFIG.Write_Width_A {34} \ # 對應上圖中的 F
CONFIG.Read_Width_A {34} \ # 對應上圖中的 G
CONFIG.Write_Depth_A {10081} \ # 對應上圖中的 H ## 此屬性只用配置這一個 則 A 的讀深度和 B 的讀寫深度都確定了
CONFIG.Operating_Mode_A {READ_FIRST} \ # 對應上圖中的 I
CONFIG.Enable_A {Use_ENA_Pin} \ # 對應上圖中的 J
CONFIG.Register_PortA_Output_of_Memory_Core {false} \ # 對應上圖中的 K
CONFIG.Register_PortA_Output_of_Memory_Primitives {false} \ # 對應上圖中的 L
CONFIG.Use_RSTA_Pin {false} \ # 對應上圖中的 M
CONFIG.Output_Reset_Value_A {0} \ # 對應上圖中的 N
# B 端口的配置與 A 類似 故不贅述
CONFIG.Load_Init_File {true} \ # 對應上圖中的 O
CONFIG.Coe_File {/home/rv/riscv/test/test1/test1.srcs/sources_1/ip/blk_mem_gen_0/TEST.coe} \ # 對應上圖中的 P
] [get_ips blkm] # 這里要和上面的
如何尋找 tcl 中 ip 定制化所需要的屬性名
建議新建一個小工程,然后通過定制化特定的 ip 的屬性值,然后在形如下圖的路徑下找到 ip 的 xci 文件
然后,根據特定的值,找到 ip 定制化所需要的屬性名