The-OpenROAD-Project / OpenROAD

OpenROAD's unified application implementing an RTL-to-GDS Flow. Documentation at https://openroad.readthedocs.io/en/latest/
https://theopenroadproject.org/
BSD 3-Clause "New" or "Revised" License
1.41k stars 494 forks source link

Spell out ITerms/BTerms and improve visual clues #5229

Open oharboe opened 2 weeks ago

oharboe commented 2 weeks ago

Description

What is an ITerm and BTerm, can this be spelled out in the GUI?

ChatGPT says Internal Terminator and Boundary Terminator.

Why a net only has Internal termainls and not boundary terminals is a bit mystical to me.... Pick one?

In this net there is no clear indication of what is input to(driving) the net and what are outputs(reading).

I happen to know that the last ITerm here is what is driving the net. If this is always true for the net can a visual clue be added to that effect?

image

Suggested Solution

Some small changes will make it easier to learn what is happening in the GUI here.

Additional Context

No response

maliberty commented 2 weeks ago

bterms are top level terminals where the signal leaves or enters the block. iterms are terminals on instances. I didn't invent these but I would guess bterm = BlockTERMinal and iterm = InstanceTERMinal. There are many synonyms for these two but the ideas are core to netlist representation. The terminology does match odb.

The particular net you selected is internal to the block and has no bterms.

We could do something to indicate a driver though there are a few corner cases that need resolving

  1. a net can have more than one driver (in parallel or as tristate)
  2. a net can be driven by a bterm
  3. bidirection pins (inout) can act either as a driver or a receiver