Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Setting bits for IOB tiles not used by a design #1169

Open
mkurc-ant opened this issue Nov 22, 2019 · 6 comments
Open

Setting bits for IOB tiles not used by a design #1169

mkurc-ant opened this issue Nov 22, 2019 · 6 comments

Comments

@mkurc-ant
Copy link
Collaborator

During initial playing with IOSTANDARD different than LVCMOS33 in #1162 I discovered the following:

When selecting a differential IOSTANDARD for a pair of IOBs that conflicts with eg. LVCMOS33 Vivado sets/clears some bits in all iobs in a given bank. It does it regardless whether they are used by the design or not.

Right now we do not have a mechanism in SymbiFlow which would implement a similar behavior. This also poses an issue with comparing bitstreams generated using SymbiFlow and Vivado.

@litghost
Copy link
Contributor

This kind of change probably belongs in fasm2frames. Can you write up a detailed example of the behavior? I don't think I understand what you are proposing is happening here.

@mkurc-ant
Copy link
Collaborator Author

I've done some minitesting today. I've found that the following features are enabled for unused IOB sites when given IOSTANDARD+DRIVE+SLEW is set on the used ones from the same bank. I haven't enforced pullup/pulldown:

LVCMOS12_LVCMOS15_LVCMOS18_SSTL135.STEPDOWN
LVCMOS12_LVCMOS15_LVCMOS18_LVCMOS25_LVCMOS33_LVTTL.SLEW.FAST
PULLTYPE.PULLDOWN

for

  • LVCMOS12
  • LVCMOS18
  • SSTL135

I haven't played with setting pullup/pulldown for all unused IOBs in the design as the result is pretty obvious.

The question is whether we should set the eg. STEPDOWN feature for unused IOBs in SymbiFlow and how not doing it will affect the design operation in hardware.

@litghost
Copy link
Contributor

litghost commented Nov 27, 2019

FYI, SLEW.FAST and PULLTYPE.PULLDOWN are both NULL features (e.g. no bits are set). So only LVCMOS12_LVCMOS15_LVCMOS18_SSTL135.STEPDOWN needs to be propigated to the entire IO bank. I believe the logic is something akin to:

  • If STEPDOWN is used anywhere in the bank, all IOB's need to have STEPDOWN set
  • If the IOSTANDARD of any IOB requires that STEPDOWN is not set, that is an error (e.g. incompatible IOSTANDARD).

This change should live in fasm2frames.py and/or prjxray/fasm_assembler.py.

@litghost
Copy link
Contributor

I believe STEPDOWN needs to be set for LVCMOS15 too?

@mkurc-ant
Copy link
Collaborator Author

Uh, I forgot to use LVCMOS15 in the minitest... I'll check that.

@mkurc-ant
Copy link
Collaborator Author

I checked more IOSTANDARDs and the feature LVCMOS12_LVCMOS15_LVCMOS18_SSTL135.STEPDOWN is set for unused IOBs of the same bank when using one of:

  • LVCMOS12
  • LVCMOS15
  • LCVMOS18
  • MOBILE_DDR (?)
  • SSTL135
  • SSTL135_R
  • SSTL15
  • SSTL15_R
  • SSTL18_II
  • HSUL_12

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants