Skip to content

[Arch] Added Zero ASIC's Z1000 eFPGA Architecture #3158

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

Merged
merged 1 commit into from
Jun 21, 2025

Conversation

AlexandreSinger
Copy link
Contributor

Zero ASIC uses VPR as part of its open-source FPGA CAD flow (Logik). Because of this, its architecture XML file is also open-source.

This brings in Zero ASIC's Z1000 architecture. A 2048 4-LUT/FF architecture with 1024 GPIOs and can support up to 4 unique clock domains.

I had to slightly modify the architecture file since the Z1000 uses custom register primitives which its synthesis front-end can target instead of regular ".latch" primitives. To get around this, I added a custom mode to the BLE to use the ".latch" primitive instead of the register primitives. Since the pins for the ".latch" primitive and the register primitives have one-to-one correspondance, this should have no affect on VPR's execution.

In order for these circuits to route properly, the z1000 RR graph must also be provided. Included these as zip files and added a make command which will extract the RR graphs. Zipped, this file is around 2 MB, unzipped it is 90 MB.

Added a tasks to NightlyTest7 which runs the MCNC benchmarks that could fit on this device. There is currently an issue in the packer causing it to give up too early and not pack as much as it can; the circuits affected by this bug have been commented out and will be uncommented once that bug is fixed.

@github-actions github-actions bot added infra Project Infrastructure build Build system lang-python Python code lang-make CMake/Make code labels Jun 21, 2025
@AlexandreSinger
Copy link
Contributor Author

More details about the architecture can be found here: https://github.com/siliconcompiler/logiklib/tree/main/logiklib/zeroasic/z1000

image

image

@AlexandreSinger
Copy link
Contributor Author

The bug in the packer is described in issue #2729

Once that is resolved, much more circuits can be run on this architecture. The target external pin utilization of {0.8, 0.6} is far too strict for this architecture and causes it to be unable to pack more than around 50/60% of the device. The packer should relax the target pin utilization if it fails to pack, but it is currently not doing that correctly.

Zero ASIC uses VPR as part of its open-source FPGA CAD flow (Logik).
Because of this, its architecture XML file is also open-source.

This brings in Zero ASIC's Z1000 architecture. A 2048 4-LUT/FF
architecture with 1024 GPIOs and can support up to 4 unique clock
domains.

I had to slightly modify the architecture file since the Z1000 uses
custom register primitives which its synthesis front-end can target
instead of regular ".latch" primitives. To get around this, I added a
custom mode to the BLE to use the ".latch" primitive instead of the
register primitives. Since the pins for the ".latch" primitive and the
register primitives have one-to-one correspondance, this should have no
affect on VPR's execution.

In order for these circuits to route properly, the z1000 RR graph must
also be provided. Included these as zip files and added a make command
which will extract the RR graphs. Zipped, this file is around 2 MB,
unzipped it is 90 MB.

Added a tasks to NightlyTest7 which runs the MCNC benchmarks that could
fit on this device. There is currently an issue in the packer causing it
to give up too early and not pack as much as it can; the circuits
affected by this bug have been commented out and will be uncommented
once that bug is fixed.
Copy link
Contributor

@vaughnbetz vaughnbetz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great -- thanks for adding this arch and these tests!

@AlexandreSinger AlexandreSinger merged commit 8164e63 into master Jun 21, 2025
33 checks passed
@AlexandreSinger AlexandreSinger deleted the feature-arch-z1000 branch June 21, 2025 22:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
build Build system infra Project Infrastructure lang-make CMake/Make code lang-python Python code
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants