llvm / llvm/circt

[ImportVerilog] Support Delay control

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

Description

The [chipsalliance tests for delay control](https://chipsalliance.github.io/sv-tests-results/?v=circt_verilog+9.4.1+always) currently fail. For instance:
```systemverilog
module always_tb ();
logic a = 0;
always #5 a = ~a;
endmodule
```

It should be possible to support SystemVerilog delay controls by lowering `slang::ast::DelayControl` to `llhd::WaitOp` right?

Edit: Realised that it would have to go through Moore dialect first. Not sure what to use there; is it currently doable in Moore?

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reproducing the chipsalliance delay-control failures, including the shown always-block example, and inspect the ImportVerilog path for slang::ast::DelayControl. Determine how the Moore dialect should represent the control before lowering it to llhd::WaitOp. Done means the relevant chipsalliance tests pass.

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
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.