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

ASIC support tracking issue #184

Open
1 of 4 tasks
whitequark opened this issue Aug 22, 2019 · 3 comments
Open
1 of 4 tasks

ASIC support tracking issue #184

whitequark opened this issue Aug 22, 2019 · 3 comments

Comments

@whitequark
Copy link
Contributor

whitequark commented Aug 22, 2019

A number of people have expressed a desire to use nMigen for ASIC design. This issue tracks missing aspects of that workflow.

  • On FPGAs, asynchronous resets inhibit inference of BRAMs, DSPs, etc. On ASICs, asynchronous resets are required to make sure the chip is reset properly even with no clock.
  • On FPGAs, resets are generally positive polarity, and using the wrong polarity can have severe consequences for timing. On ASICs, resets are generally negative polarity, such that the chip is held in reset during power rail ramp-up.
  • On ASICs and in some cases on FPGAs, memories may not be initialized.
  • On ASICs, reset_less signals are not initialized at power-on.

(There are likely more.)

@programmerjake
Copy link
Contributor

I would think that most SRAMs don't get reset on ASICs either, so that shouldn't interfere with BRAM inference.

@whitequark
Copy link
Contributor Author

whitequark commented Aug 23, 2019

I would think that most SRAMs don't get reset on ASICs either, so that shouldn't interfere with BRAM inference.

The problem isn't that the SRAM itself gets reset, but that you might want to fold address or data registers into an SRAM core. This is less of a problem in nMigen than in Verilog because some registers are implicit in the read port, but it's still a problem if a few of them are pipelined; e.g. Xilinx offers this as an option on BRAMs.

Of course if you're making an ASIC you can just make those registers with an asynchronous reset, so asynchronous reset isn't a problem there, but I didn't say it is.

@programmerjake
Copy link
Contributor

Ah, missed that.

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

No branches or pull requests

2 participants