如何 锁定 布局布线

简单的就锁定几个FF 或者几个net,还是用 直接 enter assign routing mode 然后 拷贝到xdc里  更方便。(assign routing mode 的定义在 ug904: implement)

 (* IOB="true" *) 会让寄存器锁定在port自带的寄存器中,对于端口锁定比较有用

# report timing cmd:
# 
#for {set x 0} {$x<4} {incr x} {
#    for {set y 0} {$y<2} {incr y} {
#        for {set m 0} {$m<3} {incr m} {
#            for {set n 0} {$n<4} {incr n} {
#                report_timing -to [get_pins sqpg_top/u_exe_top/dual_pin_gen\[$x\].u_dual_pin_proc/perpin_gen\[$y\].per_pin_proc/symbol_generate\[$m\].u_symbol_gen/dlyline_gen\[$n\].dly_line/reg_out_reg/C] -name   $x\_$y\_$m\_$n
#                        
#            }
#        }
#    }
#}
#for {set x 0} {$x<4} {incr x} {
#    for {set y 0} {$y<2} {incr y} {
#        for {set m 0} {$m<3} {incr m} {
#            for {set n 0} {$n<4} {incr n} {
#                set gao [expr {$x*2+$y}]
#                report_timing -from [get_pins sqpg_top/u_exe_top/dual_pin_gen\[$x\].u_dual_pin_proc/perpin_gen\[$y\].per_pin_proc/symbol_generate\[$m\].u_symbol_gen/dlyline_gen\[$n\].dly_line/reg_out_reg/Q]  \
#                              -to [get_ports o_ate320_data_p\[$gao\]]  \
#                              -name  $x\_$y\_$m\_$n          
#            }
#        }
#    }
#}


#reg_loc
#tcl_cmd :
set_property is_bel_fixed true [get_cells [list {sqpg_top/u_exe_top/dual_pin_gen[*].u_dual_pin_proc/perpin_gen[*].per_pin_proc/symbol_generate[*].u_symbol_gen/dlyline_gen[*].dly_line/FDRE_inst0}]]
set_property is_loc_fixed true [get_cells [list {sqpg_top/u_exe_top/dual_pin_gen[*].u_dual_pin_proc/perpin_gen[*].per_pin_proc/symbol_generate[*].u_symbol_gen/dlyline_gen[*].dly_line/FDRE_inst0}]]

save_constraints -force
#

set_property BEL AFF [get_cells {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[0].u_symbol_gen/dlyline_gen[0].dly_line/FDRE_inst0}]
set_property BEL AFF [get_cells {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[0].u_symbol_gen/dlyline_gen[1].dly_line/FDRE_inst0}]

set_property LOC SLICE_X0Y291 [get_cells {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[0].u_symbol_gen/dlyline_gen[0].dly_line/FDRE_inst0}]
set_property LOC SLICE_X0Y297 [get_cells {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[0].u_symbol_gen/dlyline_gen[1].dly_line/FDRE_inst0}]



#reg_2_dly
#
#tcl_cmd :
#
set_property is_route_fixed 1 [get_nets {sqpg_top/u_exe_top/dual_pin_gen[*].u_dual_pin_proc/perpin_gen[*].per_pin_proc/symbol_generate[*].u_symbol_gen/dlyline_gen[*].dly_line/dlyin }]

save_constraints -force
#
set_property FIXED_ROUTE { { CLE_CLE_L_SITE_0_AQ INT_NODE_SINGLE_DOUBLE_0_INT_OUT NN1_E_BEG0 SDNDNW_E_0_FTS INT_INT_SINGLE_55_INT_OUT INT_NODE_GLOBAL_12_OUT1 INT_NODE_IMUX_45_INT_OUT IMUX_W8 IMUXOUT8 }  } [get_nets {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[0].u_symbol_gen/dlyline_gen[0].dly_line/dlyin}]
set_property FIXED_ROUTE { { CLE_CLE_L_SITE_0_AQ2 INT_NODE_SINGLE_DOUBLE_44_INT_OUT NN1_E_BEG2 INT_NODE_SINGLE_DOUBLE_42_INT_OUT NN2_E_BEG1 INT_NODE_SINGLE_DOUBLE_42_INT_OUT INT_INT_SINGLE_49_INT_OUT INT_NODE_IMUX_123_INT_OUT IMUX_W17 IMUXOUT17 }  } [get_nets {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[0].u_symbol_gen/dlyline_gen[1].dly_line/dlyin}]



# dly_2_skewdly
#
#tcl_cmd :
#
set_property is_route_fixed 1 [get_nets {sqpg_top/u_exe_top/dual_pin_gen[*].u_dual_pin_proc/perpin_gen[*].per_pin_proc/symbol_generate[*].u_symbol_gen/dlyline_gen[*].dly_line/dlyout }]

save_constraints -force
#
set_property FIXED_ROUTE { { XIPHY_BITSLICE_TILE_354_RX_Q5 LOGIC_OUTS_R10 INT_NODE_SINGLE_DOUBLE_59_INT_OUT NN2_W_BEG2 INT_NODE_IMUX_100_INT_OUT IMUX_W28 IMUXOUT28 }  } [get_nets {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[0].u_symbol_gen/dlyline_gen[0].dly_line/dlyout}]
set_property FIXED_ROUTE { { XIPHY_BITSLICE_TILE_364_RX_Q5 LOGIC_OUTS_R10 INT_NODE_SINGLE_DOUBLE_59_INT_OUT NN2_W_BEG2 INT_NODE_SINGLE_DOUBLE_60_INT_OUT WW2_W_BEG3 INT_NODE_IMUX_103_INT_OUT IMUX_W37 IMUXOUT37 }  } [get_nets {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[0].u_symbol_gen/dlyline_gen[1].dly_line/dlyout}]


# skewdly_2_reg
#
#tcl cmd :
for {set m 0} {$m<4} {incr m} {
   for {set n 0} {$n<2} {incr n} {
       for {set x 0} {$x<3} {incr x} {
           for {set y 0} {$y<4} {incr y} {
           
               set gao [get_nodes      -of  [get_nets -of [get_pins    sqpg_top/u_exe_top/dual_pin_gen\[$m\].u_dual_pin_proc/perpin_gen\[$n\].per_pin_proc/symbol_generate\[$x\].u_symbol_gen/dlyline_gen\[$y\].dly_line/reg_out_reg/C]] \
               -from   [get_site_pins  -of  [get_pins                  sqpg_top/u_exe_top/dual_pin_gen\[$m\].u_dual_pin_proc/perpin_gen\[$n\].per_pin_proc/symbol_generate\[$x\].u_symbol_gen/dlyline_gen\[$y\].dly_line/IDELAYE3_step2/DATAOUT]] \
               -to     [get_site_pins  -of  [get_pins                  sqpg_top/u_exe_top/dual_pin_gen\[$m\].u_dual_pin_proc/perpin_gen\[$n\].per_pin_proc/symbol_generate\[$x\].u_symbol_gen/dlyline_gen\[$y\].dly_line/reg_out_reg/C]]]
               
               
               set_property FIXED_ROUTE  $gao  [get_nets -of [get_pins sqpg_top/u_exe_top/dual_pin_gen\[$m\].u_dual_pin_proc/perpin_gen\[$n\].per_pin_proc/symbol_generate\[$x\].u_symbol_gen/dlyline_gen\[$y\].dly_line/reg_out_reg/C]]
           }
       }
   }
}   

save_constraints -force
#
set_property FIXED_ROUTE { { XIPHY_BITSLICE_TILE_359_RX_Q5 LOGIC_OUTS_R10 INT_NODE_QUAD_LONG_59_INT_OUT WW12_BEG1 INT_NODE_QUAD_LONG_72_INT_OUT SS16_BEG0 INT_NODE_QUAD_LONG_119_INT_OUT SS5_BEG0 INT_NODE_QUAD_LONG_119_INT_OUT SS5_BEG0 INT_NODE_QUAD_LONG_87_INT_OUT SS4_BEG0 INT_NODE_SINGLE_DOUBLE_71_INT_OUT EE2_E_BEG0 INT_NODE_QUAD_LONG_72_INT_OUT EE4_BEG2 INT_NODE_GLOBAL_14_OUT1 CTRL_W_B4 }  } [get_nets {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[0].u_symbol_gen/dlyline_gen[0].dly_line/reg_clk}]
set_property FIXED_ROUTE { { XIPHY_BITSLICE_TILE_369_RX_Q5 LOGIC_OUTS_R24 INT_NODE_QUAD_LONG_83_INT_OUT EE12_BEG6 INT_NODE_QUAD_LONG_67_INT_OUT SS12_BEG3 INT_NODE_QUAD_LONG_100_INT_OUT SS16_BEG3 QLNDSW_E_15_FTN SS4_BEG0 INT_NODE_SINGLE_DOUBLE_71_INT_OUT EE2_E_BEG0 INT_NODE_QUAD_LONG_72_INT_OUT EE4_BEG2 INT_NODE_GLOBAL_14_OUT1 CTRL_W_B5 }  } [get_nets {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[0].u_symbol_gen/dlyline_gen[1].dly_line/reg_clk}]


#reg_loc
#
#tcl cmd
#
set_property is_bel_fixed true [get_cells [list {sqpg_top/u_exe_top/dual_pin_gen[*].u_dual_pin_proc/perpin_gen[*].per_pin_proc/symbol_generate[*].u_symbol_gen/dlyline_gen[*].dly_line/reg_out_reg}]]
set_property is_loc_fixed true [get_cells [list {sqpg_top/u_exe_top/dual_pin_gen[*].u_dual_pin_proc/perpin_gen[*].per_pin_proc/symbol_generate[*].u_symbol_gen/dlyline_gen[*].dly_line/reg_out_reg}]]

save_constraints -force
#
set_property BEL DFF2 [get_cells {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[0].u_symbol_gen/dlyline_gen[0].dly_line/reg_out_reg}]
set_property BEL HFF2 [get_cells {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[0].u_symbol_gen/dlyline_gen[1].dly_line/reg_out_reg}]

set_property LOC SLICE_X11Y241 [get_cells {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[0].u_symbol_gen/dlyline_gen[0].dly_line/reg_out_reg}]
set_property LOC SLICE_X13Y242 [get_cells {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[0].u_symbol_gen/dlyline_gen[1].dly_line/reg_out_reg}]


#reg_2_lut1
#
#tcl cmd :
for {set m 0} {$m<4} {incr m} {
   for {set n 0} {$n<2} {incr n} {
       for {set x 0} {$x<3} {incr x} {
           for {set y 0} {$y<4} {incr y} {
           
               set gao [get_nodes      -of [get_nets -of [ get_pins    sqpg_top/u_exe_top/dual_pin_gen\[$m\].u_dual_pin_proc/perpin_gen\[$n\].per_pin_proc/symbol_generate\[$x\].u_symbol_gen/dlyline_gen\[$y\].dly_line/reg_out_reg/Q]] \
               -from   [get_site_pins  -of [get_pins                   sqpg_top/u_exe_top/dual_pin_gen\[$m\].u_dual_pin_proc/perpin_gen\[$n\].per_pin_proc/symbol_generate\[$x\].u_symbol_gen/dlyline_gen\[$y\].dly_line/reg_out_reg/Q]] \
               -to     [get_site_pins  -of [get_pins                   sqpg_top/u_exe_top/dual_pin_gen\[$m\].u_dual_pin_proc/perpin_gen\[$n\].per_pin_proc/symbol_generate\[$x\].u_symbol_gen/LUT5_inst/I$y]]]
               
               
               set_property FIXED_ROUTE  $gao  [get_nets -of [get_pins sqpg_top/u_exe_top/dual_pin_gen\[$m\].u_dual_pin_proc/perpin_gen\[$n\].per_pin_proc/symbol_generate\[$x\].u_symbol_gen/dlyline_gen\[$y\].dly_line/reg_out_reg/Q]]
           }
       }
   }
}    
save_constraints -force
#
set_property FIXED_ROUTE { { CLE_CLE_M_SITE_0_DQ2 SDNDNW_W_0_FTS WW2_W_BEG0 SDNDSW_W_0_FTS SS2_W_BEG0 INT_NODE_SINGLE_DOUBLE_87_INT_OUT SS2_W_BEG0 INT_NODE_QUAD_LONG_87_INT_OUT SS16_BEG0 INT_NODE_QUAD_LONG_73_INT_OUT SS5_BEG1 INT_NODE_QUAD_LONG_89_INT_OUT EE4_BEG2 INT_NODE_SINGLE_DOUBLE_72_INT_OUT SS1_E_BEG1 INODE_1_E_3_FTS BOUNCE_E_1_FTS INT_NODE_IMUX_9_INT_OUT IMUX_E11 }  }                                                                          [get_nets -of [get_pins sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[0].u_symbol_gen/dlyline_gen[0].dly_line/reg_out_reg/Q]]
set_property FIXED_ROUTE { { CLE_CLE_M_SITE_0_HQ2 INT_NODE_QUAD_LONG_95_INT_OUT SS16_BEG2 INT_NODE_QUAD_LONG_66_INT_OUT SS5_BEG5 INT_NODE_QUAD_LONG_82_INT_OUT SS4_BEG5 INT_NODE_SINGLE_DOUBLE_98_INT_OUT SS2_E_BEG6 INT_NODE_SINGLE_DOUBLE_100_INT_OUT SS1_E_BEG7 INT_NODE_IMUX_18_INT_OUT IMUX_E15 }  }                                                                                                                                                           [get_nets -of [get_pins sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[0].u_symbol_gen/dlyline_gen[1].dly_line/reg_out_reg/Q]]



#lut1_loc
#
#tcl_cmd :
#
set_property is_bel_fixed true [get_cells [list {sqpg_top/u_exe_top/dual_pin_gen[*].u_dual_pin_proc/perpin_gen[*].per_pin_proc/symbol_generate[*].u_symbol_gen/LUT5_inst}]]
set_property is_loc_fixed true [get_cells [list {sqpg_top/u_exe_top/dual_pin_gen[*].u_dual_pin_proc/perpin_gen[*].per_pin_proc/symbol_generate[*].u_symbol_gen/LUT5_inst}]]

save_constraints -force
#
set_property BEL G6LUT [get_cells {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[0].u_symbol_gen/LUT5_inst}]
set_property BEL F6LUT [get_cells {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[1].u_symbol_gen/LUT5_inst}]

set_property LOC SLICE_X14Y214 [get_cells {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[0].u_symbol_gen/LUT5_inst}]
set_property LOC SLICE_X14Y214 [get_cells {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[1].u_symbol_gen/LUT5_inst}]

#lut1_2_lut2
#
#tcl cmd :
for {set m 0} {$m<4} {incr m} {
   for {set n 0} {$n<2} {incr n} {
       for {set x 0} {$x<3} {incr x} {
           for {set y 0} {$y<4} {incr y} {
           
               set gao [get_nodes      -of  [get_nets -of [get_pins     sqpg_top/u_exe_top/dual_pin_gen\[$m\].u_dual_pin_proc/perpin_gen\[$n\].per_pin_proc/symbol_generate\[$x\].u_symbol_gen/LUT5_inst/O]] \
               -to     [get_site_pins  -of  [get_pins                   sqpg_top/u_exe_top/dual_pin_gen\[$m\].u_dual_pin_proc/perpin_gen\[$n\].per_pin_proc/LUT6_inst/I$x]]]
               
               
               set_property FIXED_ROUTE  $gao  [get_nets -of [get_pins sqpg_top/u_exe_top/dual_pin_gen\[$m\].u_dual_pin_proc/perpin_gen\[$n\].per_pin_proc/symbol_generate\[$x\].u_symbol_gen/LUT5_inst/O]]
           }
       }
   }
}   

save_constraints -force
#
set_property FIXED_ROUTE { { CLE_CLE_L_SITE_0_G_O INT_NODE_SINGLE_DOUBLE_35_INT_OUT INT_INT_SINGLE_53_INT_OUT INT_NODE_GLOBAL_7_OUT0 INT_NODE_IMUX_19_INT_OUT IMUX_E10 }  } [get_nets {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[0].u_symbol_gen/symb_out_0}]
set_property FIXED_ROUTE { { CLE_CLE_L_SITE_0_F_O INT_NODE_SINGLE_DOUBLE_33_INT_OUT NN1_E_BEG4 INT_NODE_IMUX_7_INT_OUT BOUNCE_E_11_FTS INT_NODE_IMUX_24_INT_OUT IMUX_E14 }  } [get_nets {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[1].u_symbol_gen/symb_out_1}]


#lut2_loc
#
#tcl cmd :
#
set_property is_bel_fixed true [get_cells [list {sqpg_top/u_exe_top/dual_pin_gen[*].u_dual_pin_proc/perpin_gen[*].per_pin_proc/LUT6_inst}]]
set_property is_loc_fixed true [get_cells [list {sqpg_top/u_exe_top/dual_pin_gen[*].u_dual_pin_proc/perpin_gen[*].per_pin_proc/LUT6_inst}]]

save_constraints -force
#
set_property BEL H6LUT 		[get_cells {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/LUT6_inst}]
set_property BEL H6LUT 		[get_cells {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[1].per_pin_proc/LUT6_inst}]

set_property LOC SLICE_X14Y214 [get_cells {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/LUT6_inst}]
set_property LOC SLICE_X7Y236  [get_cells {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[1].per_pin_proc/LUT6_inst}]


# lut2_2_otherpin




# per dlyline XOR Lut_loc  for DRC error
#
# tcl_cmd :
#
for {set m 0} {$m < 4} {incr m} { 
    for {set n 0} {$n < 2} {incr n} { 
        for {set x 0} {$x < 3} {incr x} { 
            for {set y 0} {$y < 4} {incr y} { 
                set_property is_bel_fixed true \
                [get_cells -of [lindex [get_pins -of [get_nets -of [get_pins \
                sqpg_top/u_exe_top/dual_pin_gen\[$m\].u_dual_pin_proc/perpin_gen\[$n\].per_pin_proc/symbol_generate\[$x\].u_symbol_gen/dlyline_gen\[$y\].dly_line/reg_out_reg/D]]] 1 ]]
            }
        }
    }
}
for {set m 0} {$m < 4} {incr m} { 
    for {set n 0} {$n < 2} {incr n} { 
        for {set x 0} {$x < 3} {incr x} { 
            for {set y 0} {$y < 4} {incr y} { 
                set_property is_loc_fixed true \
                [get_cells -of [lindex [get_pins -of [get_nets -of [get_pins \
                sqpg_top/u_exe_top/dual_pin_gen\[$m\].u_dual_pin_proc/perpin_gen\[$n\].per_pin_proc/symbol_generate\[$x\].u_symbol_gen/dlyline_gen\[$y\].dly_line/reg_out_reg/D]]] 1 ]]
             }
        }
    }
}

save_constraints -force
#
set_property BEL D5LUT [get_cells -of  [get_pins -filter {NAME !~ "*reg_out_reg*"} -of [get_nets -of [get_pins sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[0].u_symbol_gen/dlyline_gen[0].dly_line/reg_out_reg/D]] ]]
set_property BEL H5LUT [get_cells -of  [get_pins -filter {NAME !~ "*reg_out_reg*"} -of [get_nets -of [get_pins sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[0].u_symbol_gen/dlyline_gen[1].dly_line/reg_out_reg/D]] ]]

set_property LOC SLICE_X11Y241 [get_cells -filter {NAME !~ "*reg_out_reg*"} -of  [get_pins -of [get_nets -of [get_pins sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[0].u_symbol_gen/dlyline_gen[0].dly_line/reg_out_reg/D]] ]]
set_property LOC SLICE_X13Y242 [get_cells -filter {NAME !~ "*reg_out_reg*"} -of  [get_pins -of [get_nets -of [get_pins sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[0].per_pin_proc/symbol_generate[0].u_symbol_gen/dlyline_gen[1].dly_line/reg_out_reg/D]] ]]




# per dlyline XOR Lut to reg_out  
#
# tcl_cmd :
#
#for {set m 0} {$m<4} {incr m} {
#   for {set n 0} {$n<2} {incr n} {
#       for {set x 0} {$x<3} {incr x} {
#           for {set y 0} {$y<4} {incr y} {
#           
#               set gao [get_nodes      -of  [get_nets -of [get_pins sqpg_top/u_exe_top/dual_pin_gen\[$m\].u_dual_pin_proc/perpin_gen\[$n\].per_pin_proc/symbol_generate\[$x\].u_symbol_gen/dlyline_gen\[$y\].dly_line/reg_out_reg/D]] 
#               
#               
#               set_property FIXED_ROUTE  $gao  [get_nets -of [get_pins sqpg_top/u_exe_top/dual_pin_gen\[$m\].u_dual_pin_proc/perpin_gen\[$n\].per_pin_proc/symbol_generate\[$x\].u_symbol_gen/dlyline_gen\[$y\].dly_line/reg_out_reg/D]]
#           }
#       }
#   }
#}   
#
#save_constraints -force
#
# nothing  for this version ,because they are always in same slice


#  evenpin_lut2_to_odd_pin_lut2 routing fix for pmux
#
#tcl cmd :
#
for {set m 0} {$m<4} {incr m} {
           
    set gao [get_nodes      -of  [get_nets -of [get_pins     sqpg_top/u_exe_top/dual_pin_gen\[$m\].u_dual_pin_proc/perpin_gen[1].per_pin_proc/LUT6_inst/O]] \
    -to     [get_site_pins  -of  [get_pins                   sqpg_top/u_exe_top/dual_pin_gen\[$m\].u_dual_pin_proc/perpin_gen[0].per_pin_proc/LUT6_inst/I4]]]
    
    set_property FIXED_ROUTE  $gao  [get_nets -of [get_pins sqpg_top/u_exe_top/dual_pin_gen\[$m\].u_dual_pin_proc/perpin_gen[1].per_pin_proc/LUT6_inst/O]]
}   

save_constraints -force
#
set_property FIXED_ROUTE { { CLE_CLE_M_SITE_0_H_O INT_NODE_QUAD_LONG_117_INT_OUT SS16_BEG3 INT_NODE_QUAD_LONG_84_INT_OUT EE4_BEG12 INT_NODE_QUAD_LONG_2_INT_OUT EE4_BEG10 INT_NODE_QUAD_LONG_65_INT_OUT SS4_BEG5 INT_NODE_SINGLE_DOUBLE_66_INT_OUT SS2_E_BEG5 INT_NODE_IMUX_79_INT_OUT IMUX_E39 }  } 																																					[get_nets {sqpg_top/u_exe_top/dual_pin_gen[0].u_dual_pin_proc/perpin_gen[1].per_pin_proc/o_pin_dout[0]}]
set_property FIXED_ROUTE { { CLE_CLE_M_SITE_0_HMUX INT_NODE_QUAD_LONG_62_INT_OUT NN5_BEG3 INT_NODE_QUAD_LONG_46_INT_OUT NN4_BEG4 INT_NODE_QUAD_LONG_62_INT_OUT NN16_BEG1 INT_NODE_QUAD_LONG_14_INT_OUT NN12_BEG2 INT_NODE_QUAD_LONG_1_INT_OUT NN5_BEG5 INT_NODE_SINGLE_DOUBLE_3_INT_OUT NN1_E_BEG6 INT_NODE_SINGLE_DOUBLE_35_INT_OUT NN2_E_BEG5 INT_NODE_SINGLE_DOUBLE_35_INT_OUT NN2_E_BEG5 INT_NODE_IMUX_81_INT_OUT IMUX_E39 }  } 					[get_nets {sqpg_top/u_exe_top/dual_pin_gen[1].u_dual_pin_proc/perpin_gen[1].per_pin_proc/o_pin_dout[0]}]
set_property FIXED_ROUTE { { CLE_CLE_L_SITE_0_H_O INT_NODE_QUAD_LONG_5_INT_OUT NN16_BEG3 INT_NODE_QUAD_LONG_53_INT_OUT NN12_BEG3 INT_NODE_QUAD_LONG_19_INT_OUT EE4_BEG12 INT_NODE_QUAD_LONG_2_INT_OUT EE4_BEG10 INT_NODE_SINGLE_DOUBLE_15_INT_OUT NN2_E_BEG4 INT_NODE_SINGLE_DOUBLE_1_INT_OUT NN1_E_BEG5 INT_NODE_IMUX_76_INT_OUT IMUX_E39 }  } 																										[get_nets {sqpg_top/u_exe_top/dual_pin_gen[2].u_dual_pin_proc/perpin_gen[1].per_pin_proc/o_pin_dout[0]}]
set_property FIXED_ROUTE { { CLE_CLE_M_SITE_0_HMUX INT_NODE_SINGLE_DOUBLE_94_INT_OUT EE2_W_BEG4 INT_NODE_QUAD_LONG_81_INT_OUT SS5_BEG5 INT_NODE_QUAD_LONG_82_INT_OUT SS4_BEG5 INT_NODE_SINGLE_DOUBLE_98_INT_OUT SS1_E_BEG6 INT_NODE_IMUX_79_INT_OUT IMUX_E39 }  } 																																														[get_nets {sqpg_top/u_exe_top/dual_pin_gen[3].u_dual_pin_proc/perpin_gen[1].per_pin_proc/o_pin_dout[0]}]



# fixed routing used bels
set_property prohibit 1 [get_bels SLICE_X7Y237/CFF2]
set_property prohibit 1 [get_bels SLICE_X9Y144/HFF2]

如果要约束的 driver node 在第一个slice 里就分叉,如下图所示

那么,在 enter assign routing mode 模式中会提示 右下角的 Unable assign routing 告警 ,点击此告警会提示如下信息,表示驱动端分叉了

此时 点击 Assign routing 按钮会提示如下错误,不能生成约束路径。

如果下面的命令自动获取驱动端分叉了的的路径 ,则 结果 会添加额外的 GAP 描述

需要 筛选出 想要的路径后删除此 GAP 标志。如果未删除此 GAP 标值,在routing 阶段会报错如下并中断 routing:

大批量锁定参考以下

Vivado设计锁定与增量编译(附工程)

先打开用 vivado 直接打开 implement.dcp , 然后在tcl中输入以下指令:

lock_design  -level  routing  xxx_module

如果是模块就直接写模块名字,会直接锁定整个模块

如果是线或者原件,就 [get_cells xxx] 或者 [get_nets xxx],每次只能约束一个寄存器或者一条线

此时 lock_design 结果暂存在电脑内存里,然后点击保存,约束后的内容将会保存在dcp文件中,然后用增量编译调用此 dcp文件。不过这样用增量编译很有可能会报布线冲突,不是 lock_design 设计的用法,不推荐。

lock_design 命令本来是在 hierarchy design 设计方法中用到的,此方法的具体介绍为 UG835 的 P059和 ug905,即 ooc 方法,先把各个子模块 implement完成,然后读入到总工程中,在读入后用 lock_design 指定读入的 各个 dcp 需要保留的范围, - level logical 即布局和布线都不保留,-level placement 是默认选项,只保留dcp里的布局, -level routing 是布局和布线都保留,但是布线在大工程中可能会和其他 dcp 的连接线冲突,合在一起后可能会打架,所以在使用 -level routing时要求之前生成dcp要包含 pblock约束,并且添加 contain_routing 约束(其他模块的布线不能进来此pblock)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值