Skip to content

Commit

Permalink
Merge pull request #3 from rameloni/tywaves-annotations
Browse files Browse the repository at this point in the history
Tywaves annotations
  • Loading branch information
rameloni authored Jun 7, 2024
2 parents 28a70fc + 546b371 commit 01492c0
Show file tree
Hide file tree
Showing 44 changed files with 4,313 additions and 146 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/backport-fixup.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
original_pr: ${{ steps.original.outputs.pr }}

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Figure out backport PR number
id: backport
run: |
Expand Down Expand Up @@ -57,7 +57,7 @@ jobs:
if: ${{ needs.resolve_prs.outputs.original_pr }}

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Copy over labels
env:
GH_TOKEN: ${{ github.token }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build-scala-cli-example.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
# Need to fetch full history for deriving version
with:
fetch-depth: 0
Expand Down Expand Up @@ -57,7 +57,7 @@ jobs:
shell: bash
run: scala-cli chisel-example.scala
- name: Upload Example
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: chisel-example.scala
path: chisel-example.scala
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Cache Scala
Expand Down Expand Up @@ -105,13 +105,13 @@ jobs:
if: (github.event_name == 'push') && (github.ref_name == 'main')
steps:
- name: Download built website
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: website
- name: Untar built website
run: tar zxf website.tar.gz
- name: Deploy Website to GitHub Pages (From Main Branch)
uses: peaceiris/actions-gh-pages@v3
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: website/build
6 changes: 3 additions & 3 deletions .github/workflows/enable-bincompat-checking.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
branches: ${{ steps.determine-branches.outputs.branches }}

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check Valid
Expand Down Expand Up @@ -70,14 +70,14 @@ jobs:
branch: ${{ fromJson(needs.determine_branches.outputs.branches) }}

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Create file
run: |
VERSION=${{ needs.determine_version.outputs.version }}
VERSION_NO_V=${VERSION#v}
echo $VERSION_NO_V >> project/previous-versions.txt
- name: Open PR
uses: peter-evans/create-pull-request@v5
uses: peter-evans/create-pull-request@v6
with:
base: ${{ matrix.branch }}
branch: bincompat/${{ matrix.branch }}/${{ needs.determine_version.outputs.version }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/install-espresso/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ runs:
using: composite
steps:
- id: cache-espresso
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: /usr/local/bin/espresso
key: espresso-${{ runner.os }}-${{ inputs.version }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/install-jextract/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ runs:
using: composite
steps:
- id: cache-jextract
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: jextract
key: jextract-${{ runner.os }}-${{ inputs.file-name }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release-notes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:
run: echo "$CHANGELOG" >> $GITHUB_STEP_SUMMARY
- name: Upload Release Notes (on release)
if: github.event_name == 'release'
uses: softprops/action-gh-release@v0.1.15
uses: softprops/action-gh-release@v2.0.5
with:
body: ${{ steps.release-notes.outputs.changelog }}
- name: Error on uncategorized PRs
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/require-label.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
name: Check Labels
runs-on: ubuntu-22.04
steps:
- uses: docker://agilepathway/pull-request-label-checker:v1.4.25
- uses: docker://agilepathway/pull-request-label-checker:v1.6.32
with:
one_of: Feature,Performance,API Modification,Deprecation,Backend Code Generation,Bugfix,Documentation,Dependency Update,Internal,No Release Notes
repo_token: ${{ secrets.GITHUB_TOKEN }}
4 changes: 2 additions & 2 deletions .github/workflows/scala-cli-example.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:

steps:
- name: Download Generated CLI Example
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: chisel-example.scala
- name: Display Example
Expand All @@ -27,6 +27,6 @@ jobs:
echo '```' >> $GITHUB_STEP_SUMMARY
- name: Upload To Release Page
if: github.event_name == 'release'
uses: softprops/action-gh-release@v0.1.15
uses: softprops/action-gh-release@v2.0.5
with:
files: chisel-example.scala
2 changes: 1 addition & 1 deletion .github/workflows/setup-oss-cad-suite/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ runs:
using: composite
steps:
- id: cache-oss-cad-suite
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: oss-cad-suite
key: oss-cad-suite-${{ runner.os }}-${{ inputs.version }}
Expand Down
36 changes: 12 additions & 24 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
ref: ${{ inputs.ref }}
- name: Install Tabby OSS Cad Suite
Expand Down Expand Up @@ -87,7 +87,7 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
ref: ${{ inputs.ref }}
# FIXME: installling jextract before installing mill to workaround `os.proc` can't find jextract in the outdated PATH env from mill server
Expand All @@ -98,10 +98,6 @@ jobs:
with:
distribution: 'adopt'
java-version: '21'
- name: Install Mill
uses: jodersky/[email protected]
with:
mill-version: 0.11.5
# Mill needs firtool to compile with bindings, cannot use firtool-resolver at runtime
- name: Pick CIRCT version
id: circt-version
Expand All @@ -119,36 +115,32 @@ jobs:
- name: Compile Mill
run: |
export CIRCT_INSTALL_PATH="$(pwd)/circt"
mill __.compile
./mill __.compile
doc:
name: Formatting
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
ref: ${{ inputs.ref }}
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '21'
- name: Install Mill
uses: jodersky/[email protected]
with:
mill-version: 0.11.5
- name: Check Build Script Formatting
run: mill --meta-level 1 mill.scalalib.scalafmt.ScalafmtModule/checkFormatAll sources
run: ./mill --meta-level 1 mill.scalalib.scalafmt.ScalafmtModule/checkFormatAll sources
- name: Check Source File Format
run: mill __.checkFormat
run: ./mill __.checkFormat

integration:
name: Integration Tests
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
ref: ${{ inputs.ref }}
- name: Install Tabby OSS Cad Suite
Expand Down Expand Up @@ -183,20 +175,16 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
ref: ${{ inputs.ref }}
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '21'
- name: Install Mill
uses: jodersky/[email protected]
with:
mill-version: 0.11.5
- name: JMH
run: mill benchmark.runJmh
run: ./mill benchmark.runJmh

std:
name: Standard Library Tests
Expand All @@ -206,7 +194,7 @@ jobs:
scala: ["2.13.14"]
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
ref: ${{ inputs.ref }}
- name: Install Tabby OSS Cad Suite
Expand All @@ -226,7 +214,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
ref: ${{ inputs.ref }}
# Need full history to correctly determine SNAPSHOT version
Expand Down Expand Up @@ -265,7 +253,7 @@ jobs:
- name: Tar built website
run: tar zcf website.tar.gz website/build
- name: Share Built Website
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: website
path: website.tar.gz
Expand Down
1 change: 1 addition & 0 deletions .mill-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0.11.7
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ From the Chisel root directory, run:

```sh
# Reformat normal source files
mill __.reformat
./mill __.reformat

# Reformat mill build files
mill --meta-level 1 mill.scalalib.scalafmt.ScalafmtModule/reformatAll sources
./mill --meta-level 1 mill.scalalib.scalafmt.ScalafmtModule/reformatAll sources
```
2 changes: 1 addition & 1 deletion benchmark/src/main/scala/chisel3/benchmark/Benchmark.scala
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import chisel3._
import chisel3.util.BitPat

// Run with:
// mill benchmark.runJmh
// ./mill benchmark.runJmh
class ChiselBenchmark {

// This is just an example, copy-paste and modify as appropriate
Expand Down
10 changes: 8 additions & 2 deletions core/src/main/scala/chisel3/Aggregate.scala
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,14 @@ sealed abstract class Aggregate extends Data {
// This means we need the `first` argument so that we can preserve this behavior of Aggregates while still allowing subclasses
// to override .asUInt behavior
override private[chisel3] def _asUIntImpl(first: Boolean)(implicit sourceInfo: SourceInfo): UInt = {
val elts = this.getElements.map(_._asUIntImpl(false))
if (elts.isEmpty && !first) 0.U(0.W) else SeqUtils.do_asUInt(elts)
checkingLitOption(checkForDontCares = false) match {
case Some(value) =>
// Using UInt.Lit instead of .U so we can use Width argument which may be Unknown
UInt.Lit(value, this.width)
case None =>
val elts = this.getElements.map(_._asUIntImpl(false))
if (elts.isEmpty && !first) 0.U(0.W) else SeqUtils.do_asUInt(elts)
}
}

private[chisel3] override def connectFromBits(
Expand Down
43 changes: 36 additions & 7 deletions core/src/main/scala/chisel3/Bits.scala
Original file line number Diff line number Diff line change
Expand Up @@ -778,11 +778,27 @@ sealed class UInt private[chisel3] (width: Width) extends Bits(width) with Num[U
final def zext: SInt = macro SourceInfoTransform.noArg

/** @group SourceInfoTransformMacro */
def do_zext(implicit sourceInfo: SourceInfo): SInt =
pushOp(DefPrim(sourceInfo, SInt(width + 1), ConvertOp, ref))
def do_zext(implicit sourceInfo: SourceInfo): SInt = this.litOption match {
case Some(value) => SInt.Lit(value, this.width + 1)
case None => pushOp(DefPrim(sourceInfo, SInt(width + 1), ConvertOp, ref))
}

override def do_asSInt(implicit sourceInfo: SourceInfo): SInt =
pushOp(DefPrim(sourceInfo, SInt(width), AsSIntOp, ref))
override def do_asSInt(implicit sourceInfo: SourceInfo): SInt = this.litOption match {
case Some(value) =>
val w = this.width.get // Literals always have a known width, will be minimum legal width if not set
val signedValue =
// If width is 0, just return value (which will be 0).
if (w > 0 && value.testBit(w - 1)) {
// If the most significant bit is set, the SInt is negative and we need to adjust the value.
value - (BigInt(1) << w)
} else {
value
}
// Using SInt.Lit instead of .S so we can use Width argument which may be Unknown
SInt.Lit(signedValue, this.width.max(Width(1))) // SInt literal has width >= 1
case None =>
pushOp(DefPrim(sourceInfo, SInt(width), AsSIntOp, ref))
}

override private[chisel3] def _asUIntImpl(first: Boolean)(implicit sourceInfo: SourceInfo): UInt = this

Expand Down Expand Up @@ -1023,9 +1039,22 @@ sealed class SInt private[chisel3] (width: Width) extends Bits(width) with Num[S
override def do_>>(that: UInt)(implicit sourceInfo: SourceInfo): SInt =
binop(sourceInfo, SInt(this.width), DynamicShiftRightOp, that)

override private[chisel3] def _asUIntImpl(first: Boolean)(implicit sourceInfo: SourceInfo): UInt = pushOp(
DefPrim(sourceInfo, UInt(this.width), AsUIntOp, ref)
)
override private[chisel3] def _asUIntImpl(first: Boolean)(implicit sourceInfo: SourceInfo): UInt =
this.litOption match {
case Some(value) =>
// This is a reinterpretation of raw bits
val posValue =
if (value.signum == -1) {
(BigInt(1) << this.width.get) + value
} else {
value
}
// Using UInt.Lit instead of .U so we can use Width argument which may be Unknown
UInt.Lit(posValue, this.width)
case None =>
pushOp(DefPrim(sourceInfo, UInt(this.width), AsUIntOp, ref))
}

override def do_asSInt(implicit sourceInfo: SourceInfo): SInt = this

private[chisel3] override def connectFromBits(
Expand Down
Loading

0 comments on commit 01492c0

Please sign in to comment.