llvm / llvm/circt

Support Verilog Implementation Limits

Open
#808 3 comments 0 reactions 0 assignees View on GitHub
enhancement ExportVerilog
Dominant language
C++
Stars
2.2k
Forks
524
Avg merge
3d 2h
Merged PRs (30d)
46

Description

The Verilog spec (1364-2005 was what I looked at) lets tools define limits on what they will accept. This issue covers building in the minimum limits as defaults with the ability to exceed them optionally. A user should be able to set a specific limit if they want.

The limits that I am aware of are:

- [ ] Implementations may set a limit on the maximum length of a vector, but the limit shall be at least
65,536 (2^16) bits.
- [ ] Implementations may limit the maximum size of an array, but they shall allow at least
16,777,216 (2^24) elements.
- [ ] Implementations may limit the maximum number of ports in a module definition, but the limit shall be at least 256.
- [ ] Implementations may set a limit on the maximum length of identifiers, but the limit shall be at least
1024 characters.

Identifiers is the easy one.

The others require changes to the actual circuit, e.g., if a module has too many ports, then you could combine ports.

Contributor guide

No contributing guide indexed for this repository

Research direction

No files, tests, or entry points are named. Start by reviewing the Verilog 1364-2005 implementation-limit requirements and how CIRCT represents vectors, arrays, module ports, and identifiers; done means configurable limits with at least the listed minimum defaults and an option to exceed them.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
compilers
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.