Get email delivery of the Cadence blog featured here
One of the longest standing capabilities in SoC-Encounter is its ability to partition a design- the process by which a design is broken up for hierarchical implementation. I remember seeing "Big Chip? Go Hierarchical!" in marketing material for Silicon Perspective Corporation before I joined the company back in 2001 (Cadence acquired Silicon Perspective later that year), but it wasn't immediately obvious to me how the tool went about enabling hierarchical design. I hope this quick demo gives you a feel for how partitioning occurs in SoC-Encounter:
If the video doesn’t automatically embed, please click here.
TCL commands used in this video:
Question of the Day: Have you used SoC-Encounter's partitioning capabilities? If so, I'd like to hear about the scenarios where you've found it useful. If not, I'd also be interested in hearing about any issues blocking you from using partitioning on your designs.
@shivaraj - I'd recommend looking at loadPtnPin, using assembleDesign for just one partition, relative floorplanning, and resizeFPlan for your needs. Tough topics to address quickly but great ideas for future blog posts and discussion.
Hi Joe! If the modules have less than 100 instances you might need to set the parameter described in this blog post: www.cadence.com/.../encounter-puzzler-solution-where-did-my-fences-go.aspx Hope this helps!
im facing a rather minor problem. Once i select my module and do "ungroup" (heirarchy down), i do not see my sub modules!!
Please note that they are really small modules (mostly some sort of shift registers! that i must palce all over my NOC).
Any ideas as to how i could view them?
Thanks for the reply,
But assembledesign will not keep the pins info.
1. After partitioning the top level design, if i want to change the location of pins in a partition .How can i change the pin locations in the particular block(partition) and the blocks which have interaction with this block. and how can i bring this change in to the top level design which has only lef views of blocks(partitions) without affecting the other blocks in the design/with out repartitioning.
2.If any block need to be resized then how it can be done with out affecting the other blocks and how it can be pulled in to the toplevel.
3.If the die size is changed after power planning and partition,How can i increase the die size without restarting the partitioning.
Have a look at the "assembleDesign" command. It provides a way to pull together partitions after block-level implementation.
Can you please addressthis, if the design is partitioned,If there is a change in one partition how it can be reflected in the top level after committing the partition.
with Best Regards
The default behavior is to snap modules to rows vertically. This preference can be changed via File->Preferences->Floorplan. Change the "Snap Guides/Regions/Fences to:" from Std Row/M2 pitch to Manufacture Grid, User-defined Grid, or Placement Grid.
Is it possible to run cmds setObjFPlanBox/Ploygon or definePartition -corespacing XY coordinates with noninteger multiples of row height..When i ran these cmds with nonint multiples,They are rounded off to int multiples.
Bob Thanks alot for the comments...
Yes, it is possible to specify a module that has no hard macros within as a partition. In fact, you can specify an empty module as a partition and I see designers effectively leveraging this approach quite frequently.
A tip in this area: By default the tool doesn't display modules with less than 100 instances. Try setting this threshold to 0 by going to Tools->Preferences->Display->Min Floorplan Module Size to make empty modules visible.
Hi,Is this possible to specify a module as partition,which contains only standard cells inside it(i,e there are no hard macros)
There are a couple of different ways the tool gives feedback relative to a module as it's being resized or rectilinear cuts are being introduced. The first is a "TU%" number that changes as you resize the module. The second is via the "queryPlaceDensity" command. For example, in my design I have a partition called 'DTMF_INST/RESULTS_CONV_INST'. As I resize this partition or introduce rectilinear cuts, the allocated area changes. It is 62,450 square microns when I ran the command:
encounter 13> queryPlaceDensity
Average module density = 0.593.
Density for module 'DTMF_INST/RESULTS_CONV_INST' = 0.589.
= stdcell_area 11065 (36807 um^2) / alloc_area 18774 (62450 um^2).
Density for the rest of the design = 0.593.
= (stdcell_area 29171 (97034 um^2) + block_area 88390 (294019 um^2)) / alloc_area 198114 (659006 um^2).
Pin Density = 0.173.
= total # of pins 22189 / total Instance area 128626.
Once you've partitioned the design (and the module becomes an instance instead of a hierarchical instance) the area of that partition is best queried by descending and running queryPlaceDensity.
Hope this helps,
nice demo.... is it possible to measure the area inside a module and cutset after partitoning
Hello BobD! I just want to say thank you and have I nice week! I Will try it out.