Skip to content

Extract Capacitor Arrary Generation to Earlier in the Flow #661

@stevenmburns

Description

@stevenmburns

@kkunal1408 @parijatm @soneryaldiz @Lastdayends This issue it to track progress on moving the capacitor array generation from the pnr phase to the primitive phase.
Here are some things to do:

  • Understand the differences between the current instantiation model and the typical folded model used in primitives. It seems that the capacitor array template names can be associated with different instance names without the same layout (even bounding box) being generated. We need to work out what we want to do. This is what happens now when we run switched_capacitor_filter through the flow now with -n 10. The first two error messages show where capacitor templates are instantiated more than once. The remaining error messages shows that we are not following the folding model (each instantiation of a particular template has the same bounding box/layout.)
align.pnr.main ERROR : CC Capacitor with template_name Cap_cc_3_3 instantiated more than once: [('switched_capacitor_filter', 'c5_c2'), ('switched_capacitor_filter', 'c7_c1')]
align.pnr.main ERROR : CC Capacitor with template_name Cap_cc_5_5 instantiated more than once: [('switched_capacitor_filter', 'c0_c4'), ('switched_capacitor_filter', 'c6_c3'), ('switched_capacitor_filter', 'c9_c8')]
PnR.PnRDB.PnRdatabase._ReadLEF INFO : PnRDB-Info: reading LEF file <string>
align.pnr.build_pnr_model INFO : Finished reading contraint json file switched_capacitor_filter.pnr.const.json
align.pnr.build_pnr_model INFO : Finished reading contraint json file telescopic_ota.pnr.const.json
align.pnr.build_pnr_model INFO : Finished reading contraint json file CMC_S_PMOS.pnr.const.json
PnR.PnRDB.PnRdatabase.MergeLEFMapData INFO : merge LEF/map data on node switched_capacitor_filter
PnR.PnRDB.PnRdatabase.MergeLEFMapData INFO : merge LEF/map data on node telescopic_ota
PnR.PnRDB.PnRdatabase.MergeLEFMapData INFO : merge LEF/map data on node CMC_S_PMOS
align.pnr.toplevel INFO : Starting bottom-up placement on CMC_S_PMOS 2
PnR.placer.SeqPair.SetEnumerate INFO : Enumerated search
PnR.placer.Placer.PlacementCoreAspectRatio_ILP INFO : Exhausted all permutations of sequence pairs
align.pnr.toplevel WARNING : Placer did not provide numLayout (10 > 2) layouts
PnR.PnRDB.PnRdatabase.CheckinHierNode INFO : CheckinHierNode
PnR.PnRDB.PnRdatabase.CheckinHierNode INFO : CheckinHierNode
align.pnr.toplevel INFO : Starting bottom-up placement on telescopic_ota 1
PnR.PnRDB.PnRdatabase.CheckinHierNode INFO : CheckinHierNode
PnR.PnRDB.PnRdatabase.CheckinHierNode INFO : CheckinHierNode
PnR.PnRDB.PnRdatabase.CheckinHierNode INFO : CheckinHierNode
PnR.PnRDB.PnRdatabase.CheckinHierNode INFO : CheckinHierNode
PnR.PnRDB.PnRdatabase.CheckinHierNode INFO : CheckinHierNode
PnR.PnRDB.PnRdatabase.CheckinHierNode INFO : CheckinHierNode
PnR.PnRDB.PnRdatabase.CheckinHierNode INFO : CheckinHierNode
PnR.PnRDB.PnRdatabase.CheckinHierNode INFO : CheckinHierNode
PnR.PnRDB.PnRdatabase.CheckinHierNode INFO : CheckinHierNode
PnR.PnRDB.PnRdatabase.CheckinHierNode INFO : CheckinHierNode
align.pnr.toplevel INFO : Starting bottom-up placement on switched_capacitor_filter 0
PnR.cap_placer.Placer_Router_Cap.Common_centroid_capacitor_aspect_ratio INFO : CC Capacitor Placement and Router : switched_capacitor_filter c0_c4
PnR.cap_placer.Placer_Router_Cap.Common_centroid_capacitor_aspect_ratio INFO : CC Capacitor Placement and Router : switched_capacitor_filter c5_c2
PnR.cap_placer.Placer_Router_Cap.Common_centroid_capacitor_aspect_ratio INFO : CC Capacitor Placement and Router : switched_capacitor_filter c6_c3
PnR.cap_placer.Placer_Router_Cap.Common_centroid_capacitor_aspect_ratio INFO : CC Capacitor Placement and Router : switched_capacitor_filter c7_c1
PnR.cap_placer.Placer_Router_Cap.Common_centroid_capacitor_aspect_ratio INFO : CC Capacitor Placement and Router : switched_capacitor_filter c9_c8
PnR.PnRDB.PnRdatabase.CheckinHierNode INFO : CheckinHierNode
PnR.PnRDB.PnRdatabase.CheckinHierNode INFO : CheckinHierNode
PnR.PnRDB.PnRdatabase.CheckinHierNode INFO : CheckinHierNode
PnR.PnRDB.PnRdatabase.CheckinHierNode INFO : CheckinHierNode
PnR.PnRDB.PnRdatabase.CheckinHierNode INFO : CheckinHierNode
PnR.PnRDB.PnRdatabase.CheckinHierNode INFO : CheckinHierNode
PnR.PnRDB.PnRdatabase.CheckinHierNode INFO : CheckinHierNode
PnR.PnRDB.PnRdatabase.CheckinHierNode INFO : CheckinHierNode
PnR.PnRDB.PnRdatabase.CheckinHierNode INFO : CheckinHierNode
PnR.PnRDB.PnRdatabase.CheckinHierNode INFO : CheckinHierNode
align.pnr.render_placement ERROR : Different leaf bboxes for Cap_cc_5_5: [(0, 0, 24960, 20328), (0, 0, 19200, 26208), (0, 0, 24960, 20328)]
align.pnr.render_placement INFO : Drawing switched_capacitor_filter_0...
align.pnr.render_placement ERROR : Different leaf bboxes for Cap_cc_5_5: [(0, 0, 24960, 20328), (0, 0, 19200, 26208), (0, 0, 24960, 20328)]
align.pnr.render_placement INFO : Drawing switched_capacitor_filter_1...
align.pnr.render_placement ERROR : Different leaf bboxes for Cap_cc_5_5: [(0, 0, 24960, 20328), (0, 0, 19200, 26208), (0, 0, 24960, 20328)]
align.pnr.render_placement INFO : Drawing switched_capacitor_filter_2...
align.pnr.render_placement ERROR : Different leaf bboxes for Cap_cc_5_5: [(0, 0, 24960, 20328), (0, 0, 19200, 26208), (0, 0, 24960, 20328)]
align.pnr.render_placement INFO : Drawing switched_capacitor_filter_3...
align.pnr.render_placement ERROR : Different leaf bboxes for Cap_cc_5_5: [(0, 0, 24960, 20328), (0, 0, 19200, 26208), (0, 0, 24960, 20328)]
align.pnr.render_placement INFO : Drawing switched_capacitor_filter_4...
align.pnr.render_placement ERROR : Different leaf bboxes for Cap_cc_5_5: [(0, 0, 24960, 20328), (0, 0, 19200, 26208), (0, 0, 24960, 20328)]
align.pnr.render_placement INFO : Drawing switched_capacitor_filter_5...
align.pnr.render_placement ERROR : Different leaf bboxes for Cap_cc_5_5: [(0, 0, 24960, 20328), (0, 0, 19200, 26208), (0, 0, 24960, 20328)]
align.pnr.render_placement INFO : Drawing switched_capacitor_filter_6...
align.pnr.render_placement ERROR : Different leaf bboxes for Cap_cc_5_5: [(0, 0, 24960, 20328), (0, 0, 19200, 26208), (0, 0, 24960, 20328)]
align.pnr.render_placement INFO : Drawing switched_capacitor_filter_7...
align.pnr.render_placement ERROR : Different leaf bboxes for Cap_cc_5_5: [(0, 0, 24960, 20328), (0, 0, 19200, 26208), (0, 0, 24960, 20328)]
align.pnr.render_placement INFO : Drawing switched_capacitor_filter_8...
align.pnr.render_placement INFO : Drawing switched_capacitor_filter_9...
  • Once we figure out the semantics of these placement variants (and probably routing variants as well), we will want normal primitives to have variants as well (different aspect ratios.)
  • Then we can move the CC code to before the place and route loop

We could do some simple things first like make sure that we have different template names when we want to allow different layouts.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions