Skip to content

Algorithms

Radhakrishna Sanka edited this page Feb 14, 2018 · 6 revisions

GRID Connections

Example is for horizontalConnect, if its verticalConnect everything will still be similar. This algorithm generates enough connections to minimally

algorithm automatic horizontal connections for grid:

input: Left Component - lc, Right Component - rc

output: Connection List - connlist

lcts <- find terminals on the right side of lc
rcts <- find terminal on the left side of rc

n_lcts <- size of lcts collection
n_rcts <- size of rcts collection

if n_lcts < n_rcts then
   small <- lcts
   big <- rcts
   smalln <- n_lcts
else
   small <- rcts
   big <- lcts
   smalln <- n_rcts
endif

loop i = 1 .. smalln

   add new connection between lc and rc into connlist

end loop


2.5D Design File Generation

This algorithm specifies how the design files should be generated by going through the different features and depth it will be.

NOTE - This algorithm only works for XY_NEGATIVE features.

foreach logical_layer:

   create hashmap<depth, [features]>

   foreach component in logical_layer:
      put features into hashmap based on depth
   end

   foreach connection in logical_layer:
      put feature into bashmap based on depth
   end

   foreach depth in hashmap:
      create n output svg/eps/DXF
   end

end

Nodepath Orthogonal Layout

There are couple of constraints that need to be taken into account when doing this layout:

  1. No non-planar connections with these designs
  2. Connections limited to a max of 4 per component

We also need to figure out how to account for fixed (multi-terminals) from a single component, that will happen in the cases where a tree might span out components to a nodepath. That means that some destinations would be fixed and we need to figure out a decent way to account for those paths. The question sort of becomes, how do we account for these 2 cases:

  1. Fixed target points
  2. How expand/compact the layouts

The orthogonal layout algorithm will have to do these two things based on how we decide to do layouts.

NOTE: This also means that we need to persist the layout constraints throughout the physical design algorithm and even beyond (Serialization is necessary).

Clone this wiki locally