[ExportVerilog] `disallowPackedStructAssignments` also needs to consider `hw.aggregate_constant`
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 2.2k
- Forks
- 524
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 46
Description
Currently, the following:
```mlir
%16 = hw.aggregate_constant [0 : i32, 0 : i32, 0 : i32] : !hw.struct
```
emits as
```sv
wire struct packed {logic [31:0] field0; logic [31:0] field1; logic [31:0] field2; }
_GEN_1 = '{field0: 32'h0, field1: 32'h0, field2: 32'h0};
```
that is, emits a packed struct assignment, which should be disallowed when setting the `disallowPackedStructAssignments` flag.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in the ExportVerilog handling for hw.aggregate_constant and search for disallowPackedStructAssignments. Reproduce the MLIR example from the issue, then trace how it becomes a packed struct assignment. Done means the flag also covers this operation and a regression test verifies the emitted SystemVerilog.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100