0% found this document useful (0 votes)
15 views5 pages

Pin Spacing and Blockage Commands

The document outlines a procedure for calculating pin spacing and length for blockages in a metal layer design. It includes commands for managing pin constraints, adjusting port spacing, and placing pin and routing blockages. Additionally, it provides steps for saving the block, initiating a GDS workflow, and performing timing information analysis.

Uploaded by

ahsan raza
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views5 pages

Pin Spacing and Blockage Commands

The document outlines a procedure for calculating pin spacing and length for blockages in a metal layer design. It includes commands for managing pin constraints, adjusting port spacing, and placing pin and routing blockages. Additionally, it provides steps for saving the block, initiating a GDS workflow, and performing timing information analysis.

Uploaded by

ahsan raza
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Command:

To calculate pin spacing & length for blockages(to be placed)

Layer "M8" {
layerNumber = 38
maskName = "metal8"
isDefaultLayer =1
visible =1
selectable =1
blink =0
color = "purple"
lineStyle = "solid"
pattern = "blank"
pitch = 0.126
defaultWidth = 0.062

minWidth = 0.062
minSpacing = 0.064
set_app_options -name [Link].collection_result_display_limit -value 10000
get_port -filter "physical_status==unplaced"

remove_pin_constraints * (remove all pin constraints)


remove_routing_blockages * (remove all routine blockages)
remove_pin_blockages *

Set pin spacing 1:


(select port first & remove any blockages including pin/routing blockages before respacing)

Unfix first:
set_fixed_objects [get_ports [get_selection ]] -unfix
set_fixed_objects [get_ports *] -unfix

“set_fixed_objects [get_terminals [get_ports [get_selection ]] -unfix” (unfix port to be


respace between them)
“set_fixed_objects [get_terminals -of_objects [get_ports [get_selection ]]] -unfix” (unfix
terminal to be respace between them)
set_fixed_objects [get_terminals -of_objects [get_ports *]] -unfix

(port space port)


Set port space on metal layers:

“set_individual_pin_constraints -allowed_layers {M4 M6 M8} -side 1 -ports [get_ports


[get_selection ]] -pin_spacing 1”

“place_pins -ports [get_selection]”

Remember to resize port height or width using following command:

“resize_objects -height 0.775 [get_terminals -of_objects [get_ports *]] -quiet”

Now start placing pin blockages & routing blockages from


Go to gui ——> create ——> add pin blockages (select all metal layers) ——> start selecting &
adding blockages on side except port placed area

Go to gui ——> create ——> add routing blockages (select all metal layers)
Now fix all ports:
“set_fixed_objects [get_terminals -of_objects [get_ports [get_selection ]]]”

Now go to script editor in fusion compiler is write three command form following

“create_placement -floorplan
legalize_placement
compile_fusion -from final_place -to final_opto”

Once the pin placement & write_data completed

Save the block using following command in console:

“save_block”
“Stop_gui;exit”

Now run these lines on terminal to start GDS workflow:

make gds START=clock_opt_cts END=route_opt


To copy paste the whole floorplan macros
Select the macros from gui(from where you wanted to copy) & run below command:

write_def -objects [get_selection ] /home/shared/t_araza/[Link]


(save the macros placements in a def file)

get_sel
(check if macros are in correct name hierarchy)

Rename if needed in the [Link] file

Read the def file from where you wanted the floorplan to be

read_def /home/shared/t_araza/[Link]

Timing info analyis:

First source the script


“source /home/t_mrafay/scripts/timing_info_proc.tcl”
[reg to reg worse path]

timing_info [get_timing_paths -from [get_flat_cells -hier * -f "full_name


=~*u_fifo_req/data_out_reg*"] -to [get_flat_cells -hier * -f "full_name
=~*u_mshr/u_wr_req/pipe_reg*"]]

Common questions

Powered by AI

After placing pin and routing blockages, fix ports using 'set_fixed_objects [get_terminals -of_objects [get_ports [get_selection ]]]'. This command resets ports to a fixed state, preventing further movement .

Saving macro placements in a DEF file involves selecting the macros from the GUI and executing 'write_def -objects [get_selection ] /home/shared/t_araza/macros.def'. This saves the current macro placements to '/home/shared/t_araza/macros.def'. Ensure correctness by checking the macro name hierarchy using 'get_sel' and renaming as necessary in the DEF file .

To resize port dimensions, utilize the command 'resize_objects -height 0.775 [get_terminals -of_objects [get_ports *]] -quiet'. This command adjusts the height (or width, if specified) of all terminals associated with ports to 0.775 units while operating silently to avoid console output .

The command 'set_individual_pin_constraints -allowed_layers {M4 M6 M8} -side 1 -ports [get_ports [get_selection ]] -pin_spacing 1' sets individual pin constraints on layers M4, M6, and M8 with a specified pin spacing of 1 .

Execute the full floorplan process in Fusion Compiler by using 'create_placement -floorplan', followed by 'legalize_placement' and 'compile_fusion -from final_place -to final_opto'. These steps are scripted and run in sequence for comprehensive floorplan execution .

To initiate the GDS workflow, run 'make gds START=clock_opt_cts END=route_opt'. This command starts the GDS process from clock optimization (CTS) to route optimization .

To use the script editor effectively, write the commands 'create_placement -floorplan legalize_placement compile_fusion -from final_place -to final_opto'. This sequence finalizes pin placement and optimizes circuits. Once processes are complete, save the block with 'save_block', exit the GUI, and proceed to GDS workflow .

To remove all pin and routing blockages before calculating pin spacing on layer M8, the following steps must be taken: First, use the command 'remove_pin_constraints *' to remove all pin constraints. Then, execute 'remove_routing_blockages *' to remove all routine blockages and 'remove_pin_blockages *' for pin blockages. These commands ensure a clean state before adjusting pin spacing .

Timing paths from specific registers are specified using the command 'timing_info [get_timing_paths -from [get_flat_cells -hier * -f "full_name =~*u_fifo_req/data_out_reg*"] -to [get_flat_cells -hier * -f "full_name =~*u_mshr/u_wr_req/pipe_reg*"]]', which extracts timing paths from 'u_fifo_req/data_out_reg' to 'u_mshr/u_wr_req/pipe_reg' .

To unfix ports and terminals for respacing on metal layers, use the command 'set_fixed_objects [get_ports [get_selection ]] -unfix' to unfix selected ports. For terminals associated with ports, apply 'set_fixed_objects [get_terminals -of_objects [get_ports [get_selection ]]] -unfix'. This sequence ensures both ports and their terminals are unfixed, allowing for adjustment of spacing on specified metal layers .

You might also like