Process for adjusting data structures of a floorplan upon changes occurring
AssigneeXilinx, Inc.
InventorsDavid A. Knol, Salil Ravindra Raje
Life of this patent
Estimating the term…
Abstract
A floor planner tool for integrated circuit design which provides tools and displays for a designer to create a floor plan to define desired placement of circuits defined in a logical netlist by creating a physical hierarchy comprised of nested pblocks. Each pblock is a data structure which contains data which defines which circuits from the logical netlist are assigned to it. Each pblock stands alone and can be input to a place and route tool without the rest of the physical hierarchy. Each pblock data structure contains pointers to the circuits on the netlist assigned to that plbock, identifies other pblocks nested within it and contains at least a list of boundary pins for that pblock.
Claims12
A process for processing one or more data structures which define a physical hierarchy of pblocks that contain all instances from a logical netlist and which together comprise a floorplan when an instance from a logical netlist is moved from one pblock to another, comprising the following steps:
- automatically updating one or more data structures which define a physical hierarchy as instances are moved from one pblock of said physical hierarchy to another pblock so as to create a data structure which accurately reflects which instances of a logical netlist are assigned to which pblocks of said physical hierarchy;
- automatically making sure that all instances from said logical netlist are included in some pblock of said physical hierarchy;
- automatically creating or updating one or more data structures which define said physical hierarchy so as to delete conductive paths (hereafter referred to as nets) on said integrated circuit to which said floorplan pertains to eliminate predetermined nets and, create new boundary pins on said pblocks and create new nets which make appropriate connections so as to maintain the same connectivity in said physical hierarchy as is defined in said logical netlist to replace the connectivity of nets which have been eliminated or modified.
A process for modifying one or more data structures which define a physical hierarchy to properly reflect the assignment of instances to pblocks as the physical hierarchy is defined and changed and to properly define the functionality of pblocks and connectivity there between, comprising:
- A) making an entry for each logical instToAppend instance which has been assigned to a pblock (hereafter the origin pblock) in an m_instanceAssignments array so as to associate the instance with the pblock to which it is being assigned;
- B) marking all child instances of instToAppend to point to the same pblock and following pointers in cellview data objects owned by a data object of said instToAppend instance and its child instances down through a logical hierarchy to locate all the child instance's children until all primitives underneath instToAppend in said logical hierarchy are marked as belonging to said origin pblock;
- C) doing upward recursion by following pointers up said logical hierarchy to locate all parent instances of instToAppend until a “rooted parent” is found, where a “rooted parent” is defined as an instance which has been directly assigned to a pblock hereafter referred to as rootedPBlock;
- D) doing downward recursion by following pointers downward in said logical hierarchy from said rooted parent, so as to locate and mark each parent as 0 in said m_instanceAssignments array and marking all siblings for that parent as belonging to said rootedPBlock so as to ensure that no primitive instance is left behind;
- E) checking whether all siblings of said instToAppend instance are also assigned to the same pblock as said instToAppend instance, and, if so, executing a collapse operation whereby a parent instance of said siblings all of which have been assigned to the same pblock is resurrected and marked as being assigned (and rooted) within said pblock;
- F) following pointers up said physical hierarchy from said pblock to which said instToAppend instance is assigned and performing the collapse operation of step E until this is no longer possible;
- G) detecting when an instance has been reassigned from one pblock to another, and when this happens, determining which pins owned by the instance which has been reassigned will move with the instance;
- H) remove the pins from a pblock data object corresponding to the pblock from which said instance has been removed by accessing a cellview data object of said instance which was removed and determining which pins are associated with said instance and removing said pins from a list of pins in a data object representing said pblock from which said instance has been removed;
- I) removing all or a predetermined portion of nets coupled to moved pins by accessing net data objects of nets which are connected to the moved pins and removing all the moved pins from the list of pins in each said net object;
- J) perform a root-level traversal or said logical hierarchy to learn the nets connected in said logical hierarchy to each instance that has been moved;
- K) determine which nets would cross a pblock boundary when an instance is moved to another pblock;
- L) create a map of the nets which still exist after the disconnect process of steps H and I;
- and
- M) recreate the nets which have been removed in the data structures representing the physical hierarchy.
A process for adjusting one or more data structures of a physical hierarchy defining a floorplan of an integrated circuit when changes occur on said floorplan, comprising the steps:
- A) marking instToAppend entries designating instances from said logical netlist which have been moved to a pblock with a pointer associating said instance with the pblock to which said instance has been moved, said pointer being in an array m_instanceAssignments (hereafter referred to as the array) which defines which instances are assigned to each pblock;
- B) marking all child instances in said logical hierarchy of each said instToAppend in said array to point to the same pblock to which said instToAppend was assigned;
- C) recursing up the logical hierarchy from instToAppend until a rooted parent is found which has been assigned to a pblock (hereafter called rootedPBlock) and marking said rooted parent as zero in said array, where a rooted parent is an instance which is defined by a data object in said physical hierarchy which has a flag set which indicated said rooted parent has been assigned to a pblock and where marking an instance to zero in said array causes said instance to disappear from the physical hierarchy, where disappear from the physical hierarchy means the instance is not assigned to a particular pblock;
- D) unwinding the recursion from said rooted parent along a line of said physical hierarchy toward said instToAppend and mark as zero in said array all ancestor instances in said physical hierarchy on a line of descendancy in said physical hierarchy between said instToAppend and said rooted parent, where an ancestor instance is any instance in said physical hierarchy on a line of ancestral heritage upward from said instToAppend to said rooted parent not including either said rooted parent nor said instToAppend;
- E) marking all siblings of any ancestor instance in said array as assigned to said rooted pblock if not already so marked by setting a flag in a data structure representing said instance in said physical hierarchy to a “rooted” state and making sure a pointer to said sibling is present in a data structure representing said rooted pblock in said physical hierarchy;
- F) determining if all sibling instances of said instToAppend in said physical hierarchy are marked as belonging to the same pblock as said instToAppend, and, if so, performing a collapse operation to resurrect a parent instance of said siblings in said physical hierarchy by removing or setting to zero entries in said array for all said sibling instances which are components of said parent instance and adding an entry to said array for said parent instance and data indicating said parent instance is assigned to the same pblock as said sibling instances which were component instances of said parent instance;
- G) responding to assignments of instance to pblocks by determining which instances have been moved from one pblock to another;
- H) further responding to such assignment of instances by determining the original connectivity between instances defined in said logical netlist and automatically changing data in predetermined data objects of said physical hierarchy so as to update said physical hierarchy to correctly represent which instances from said logical netlist are assigned to which pblocks, and to recreate said original connectivity defined in said logical netlist by creating new nets and new pins as necessary which recreate said original connectivity.
An apparatus comprising:
- a computer including a computer readable medium programmed to carry out the following process to adjust the data objects that define a physical hierarchy which defines a floorplan layout of an integrated circuit when changes in said floorplan occur, comprising the following steps:
- automatically updating one or more data structures which define a physical hierarchy as instances are moved from one pblock of said physical hierarchy to another pblock so as to create a data structure which accurately reflects which instances of a logical netlist are assigned to which pblocks of said physical hierarchy;
- automatically making sure that all instances from said logical netlist are included in some pblock of said physical hierarchy;
- automatically creating or updating one or more data structures which define said physical hierarchy so as to delete conductive paths (hereafter referred to as nets) on said integrated circuit to which said floorplan pertains to eliminate predetermined nets and, create new boundary pins on said pblocks and create new nets which make appropriate connections so as to maintain the same connectivity in said physical hierarchy as is defined in said logical netlist to replace the connectivity of nets which have been eliminated or modified.
An apparatus comprising:
- a computer including a computer readable medium programmed to carry out the following process:
- A) making an entry for each logical instToAppend instance which has been assigned to a pblock (hereafter the origin pblock) in an m_instanceAssignments array so as to associate the instance with the pblock to which it is being assigned;
- B) marking all child instances of instToAppend to point to the same pblock and following pointers in cellview data objects owned by a data object of said instToAppend instance and its child instances down through a logical hierarchy to locate all the child instance's children until all primitives underneath instToAppend in said logical hierarchy are marked as belonging to said origin pblock;
- C) doing upward recursion by following pointers up said logical hierarchy to locate all parent instances of instToAppend until a “rooted parent” is found, where a “rooted parent” is defined as an instance which has been directly assigned to a pblock hereafter referred to as rootedPBlock;
- D) doing downward recursion by following pointers downward in said logical hierarchy from said rooted parent, so as to locate and mark each parent as 0 in said m_instanceAssignments array and marking all siblings for that parent as belonging to said rootedPBlock so as to ensure that no primitive instance is left behind;
- E) checking whether all siblings of said instToAppend instance are also assigned to the same pblock as said instToAppend instance, and, if so, executing a collapse operation whereby a parent instance of said siblings all of which have been assigned to the same pblock is resurrected and marked as being assigned (and rooted) within said pblock;
- F) following pointers up said physical hierarchy from said pblock to which said instToAppend instance is assigned and performing the collapse operation of step E until this is no longer possible;
- G) detecting when an instance has been reassigned from one pblock to another, and when this happens, determining which pins owned by the instance which has been reassigned will move with the instance;
- H) remove the pins from a pblock data object corresponding to the pblock from which said instance has been removed by accessing a cellview data object of said instance which was removed and determining which pins are associated with said instance and removing said pins from a list of pins in a data object representing said pblock from which said instance has been removed;
- I) removing all or a predetermined portion of nets coupled to moved pins by accessing net data objects of nets which are connected to the moved pins and removing all the moved pins from the list of pins in each said net object;
- J) perform a root-level traversal or said logical hierarchy to learn the nets connected in said logical hierarchy to each instance that has been moved;
- K) determine which nets would cross a pblock boundary when an instance is moved to another pblock;
- L) create a map of the nets which still exist after the disconnect process of steps H and I;
- and
- M) recreate the nets which have been removed in the data structures representing the physical hierarchy in a way that causes each pblock to be a stand alone entity in that no net crosses a pblock boundary.
A computer-readable medium storing computer-executable instructions for controlling a computer to perform the following method:
- A) making an entry for each logical instToAppend instance which has been assigned to a pblock (hereafter the origin pblock) in an m_instanceAssignments array so as to associate the instance with the pblock to which it is being assigned;
- B) marking all child instances of instToAppend to point to the same pblock and following pointers in cellview data objects owned by a data object of said instToAppend instance and its child instances down through a logical hierarchy to locate all the child instance's children until all primitives underneath instToAppend in said logical hierarchy are marked as belonging to said origin pblock;
- C) doing upward recursion by following pointers up said logical hierarchy to locate all parent instances of instToAppend until a “rooted parent” is found, where a “rooted parent” is defined as an instance which has been directly assigned to a pblock hereafter referred to as rootedPBlock;
- D) doing downward recursion by following pointers downward in said logical hierarchy from said rooted parent, so as to locate and mark each parent as 0 in said m_instanceAssignments array and marking all siblings for that parent as belonging to said rootedPBlock so as to ensure that no primitive instance is left behind;
- E) checking whether all siblings of said instToAppend instance are also assigned to the same pblock as said instToAppend instance, and, if so, executing a collapse operation whereby a parent instance of said siblings all of which have been assigned to the same pblock is resurrected and marked as being assigned (and rooted) within said pblock;
- F) following pointers up said physical hierarchy from said pblock to which said instToAppend instance is assigned and performing the collapse operation of step E until this is no longer possible;
- G) detecting when an instance has been reassigned from one pblock to another, and when this happens, determining which pins owned by the instance which has been reassigned will move with the instance;
- H) remove the pins from a pblock data object corresponding to the pblock from which said instance has been removed by accessing a cellview data object of said instance which was removed and determining which pins are associated with said instance and removing said pins from a list of pins in a data object representing said pblock from which said instance has been removed;
- I) removing all or a predetermined portion of nets coupled to moved pins by accessing net data objects of nets which are connected to the moved pins and removing all the moved pins from the list of pins in each said net object;
- J) perform a root-level traversal or said logical hierarchy to learn the nets connected in said logical hierarchy to each instance that has been moved;
- K) determine which nets would cross a pblock boundary when an instance is moved to another pblock;
- L) create a map of the nets which still exist after the disconnect process of steps H and I;
- and
- M) recreate the nets which have been removed in the data structures representing the physical hierarchy in a manner such that each pblock is self contained and no net crosses a pblock boundary.
A computer-readable medium having stored thereon computer-executable instructions which control a computer to carry out the following process:
- A) marking instToAppend entries designating instances from said logical netlist which have been moved to a pblock with a pointer associating said instance with the pblock to which said instance has been moved, said pointer being in an array m_instanceAssignments (hereafter referred to as the array) which defines which instances are assigned to each pblock;
- B) marking all child instances in said logical hierarchy of each said instToAppend in said array to point to the same pblock to which said instToAppend was assigned;
- C) recursing up the logical hierarchy from instToAppend until a rooted parent is found which has been assigned to a pblock (hereafter called rootedPBlock) and marking said rooted parent as zero in said array, where a rooted parent is an instance which is defined by a data object in said physical hierarchy which has a flag set which indicated said rooted parent has been assigned to a pblock and where marking an instance to zero in said array causes said instance to disappear from the physical hierarchy, where disappear from the physical hierarchy means the instance is not assigned to a particular pblock;
- D) unwinding the recursion from said rooted parent along a line of said physical hierarchy toward said instToAppend and mark as zero in said array all ancestor instances in said physical hierarchy on a line of descendancy in said physical hierarchy between said instToAppend and said rooted parent, where an ancestor instance is any instance in said physical hierarchy on a line of ancestral heritage upward from said instToAppend to said rooted parent not including either said rooted parent nor said instToAppend;
- E) marking all siblings of any ancestor instance in said array as assigned to said rooted pblock if not already so marked by setting a flag in a data structure representing said instance in said physical hierarchy to a “rooted” state and making sure a pointer to said sibling is present in a data structure representing said rooted pblock in said physical hierarchy;
- F) determining if all sibling instances of said instToAppend in said physical hierarchy are marked as belonging to the same pblock as said instToAppend, and, if so, performing a collapse operation to resurrect a parent instance of said siblings in said physical hierarchy by removing or setting to zero entries in said array for all said sibling instances which are components of said parent instance and adding an entry to said array for said parent instance and data indicating said parent instance is assigned to the same pblock as said sibling instances which were component instances of said parent instance;
- G) responding to assignments of instance to pblocks by determining which instances have been moved from one pblock to another;
- H) further responding to such assignment of instances by determining the original connectivity between instances defined in said logical netlist and automatically changing data in predetermined data objects of said physical hierarchy so as to update said physical hierarchy to correctly represent which instances from said logical netlist are assigned to which pblocks, and to recreate said original connectivity defined in said logical netlist by creating new nets and new pins as necessary which recreate said original connectivity.
Dependencies are inferred from the claim text.