ucb-bar / hammer

Hammer: Highly Agile Masks Made Effortlessly from RTL
BSD 3-Clause "New" or "Revised" License
255 stars 59 forks source link

Add top_layer/pg_pins_layers/stripe_pins flags to write_ilm for hierarchical flows #819

Closed jerryz123 closed 1 year ago

jerryz123 commented 1 year ago

Related PRs / Issues

Type of change:

Impact:

Contributor Checklist:

harrisonliew commented 1 year ago

Hm, can't we just set the stripe pins and top layer arguments based on the power straps pin_layer field?

jerryz123 commented 1 year ago

Is that general enough though for all use cases? For instance, If you have a power island in a block that instantiates its own bump, what would the flags to this command need to be?

I figured there will frequently be cases where you'll need some specialized settings to achieve what you want.

harrisonliew commented 1 year ago

In the user guide:

In a bottom-up flow (where the block was not created using the create_partition command), you normally create a simple LEF abstract that contains:

So, it seems like -stripe_pins and -pg_pin_layers is sufficient. If you want more options, that's what a replacement hook is for. Otherwise adding all these keys for command options gets unwieldy.

jerryz123 commented 1 year ago

Ok, I'll change this then.

jerryz123 commented 1 year ago

Should we at least handle the case where manual power straps are used, in which case the by_tracks.pin_layers option is unset?

harrisonliew commented 1 year ago

No, I think if you're doing manual straps, you're already using hooks and being mindful of stripe pin layers. At most, add an additional comment for the by_tracks.pin_layers key to note that this is used when writing out LEF/DEF of the layout (user can always set this key even if they're using manual straps).