Urukul firmware port to iCE40 #3

Merged
sb10q merged 39 commits from occheung/urukul-pld:urukul-ice into master 2025-08-06 10:13:22 +08:00
Member

Supersedes #1. No prerequisite PRs. Here are some few key points:

  • Only the rev 9 variant is part of this port.
  • EEM pin ordering is preserved.
  • SU-Servo variant is now a build configuration instead of a DIP-switch flip since bi-directional LVDS is not supported by iCE40.
  • Experimental features are not yet supported as of this PR. The urukul firmware is being worked on my experimental branch.
Supersedes #1. No prerequisite PRs. Here are some few key points: - Only the rev 9 variant is part of this port. - EEM pin ordering is preserved. - SU-Servo variant is now a build configuration instead of a DIP-switch flip since bi-directional LVDS is not supported by iCE40. - Experimental features are not yet supported as of this PR. The urukul firmware is being worked on my [experimental branch](https://git.m-labs.hk/occheung/urukul-pld/src/branch/experimental).
occheung added 31 commits 2025-07-09 10:47:38 +08:00
There are no documentations on how to specify a LVDS tristate.
- MOSI is always DIFF out on EEM[0].2
- NU_CLK now share EEM[0] with CS[2]
- CS[2] is replaced by IO_UPDATE_N in servo mode
icetime does not understand its timing characteristics for some nu_clk uses.
So we get to keep the same pin arrangement in Kasli across versions.
LVDS tristate seems not supported according to project Icestorm's bitstream descriptions.
I/O standard is not settable. It is fixed by VCCIO*.
Pull up should be configured by PULLUP parameter of SB_IO.

You can observe specifying PULLUP in I/O does nothing according to the generated bitstream. It is already set by default.
See this: https://prjicestorm.readthedocs.io/en/latest/_static/bitdocs-8k/tile_33_2.html
... so SYNC_IN would be an input to Urukul, SYNC_OUT would be an output from Urukul.
There are no changes to routing nor logic.
sb10q reviewed 2025-07-22 13:39:24 +08:00
@@ -0,0 +1,158 @@
from migen.build.generic_platform import *
Owner

This file should be renamed, ICE40 is FPGA, not CPLD.

This file should be renamed, ICE40 is FPGA, not CPLD.
Owner

I think that generally the *.py files in this repos should be renamed.

I think that generally the *.py files in this repos should be renamed.
sb10q reviewed 2025-07-22 13:41:01 +08:00
README.md Outdated
@@ -35,6 +35,39 @@ With Digilent [JTAG HS2](https://store.digilentinc.com/jtag-hs2-programming-cabl
- look for ``Verify: Success``
## Building (Urukul DIOT, ICE40)
Owner

I think it's 1.6? Which can also be used with EEM, so it shouldn't be called DIOT.

I think it's 1.6? Which can also be used with EEM, so it shouldn't be called DIOT.
sb10q reviewed 2025-07-22 13:45:33 +08:00
urukul_ice.py Outdated
@@ -0,0 +561,4 @@
raise ValueError("Expected one optional argument [standalone | suservo]")
elif len(sys.argv) == 2:
if sys.argv[1] not in ["standalone", "suservo"]:
raise ValueError("Expected one optional argument [standalone | suservo]")
Owner

Just use argparse, and default to non-suservo.

Also, "standalone" conflicts with the DRTIO role of the same name and also isn't accurate (it still needs a core device for example). Please find a better name.

Just use argparse, and default to non-suservo. Also, "standalone" conflicts with the DRTIO role of the same name and also isn't accurate (it still needs a core device for example). Please find a better name.
occheung added 6 commits 2025-07-30 11:43:53 +08:00
occheung added 1 commit 2025-07-30 11:46:06 +08:00
occheung added 1 commit 2025-07-30 11:46:55 +08:00
sb10q reviewed 2025-08-06 10:12:12 +08:00
@@ -38,0 +67,4 @@
### Flashing
Use [kasli-i2c](https://github.com/Spaqin/kasli-i2c/tree/flash_urukul).
Owner

Please move this to git.m-labs.hk/m-labs
https://github.com/Spaqin is not backed up.

Please move this to git.m-labs.hk/m-labs https://github.com/Spaqin is not backed up.
sb10q merged commit fc355398c0 into master 2025-08-06 10:13:22 +08:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: M-Labs/urukul-pld#3