Home

Awesome

Verible Formatter Action

Usage

See action.yml

This is a GitHub Action used to format Verilog and SystemVerilog source files and create change suggestions in Pull Requests automatically. The GitHub Token input is used to provide reviewdog access to the PR.

Here's a basic example to format all *.v and *.sv files:

name: Verible formatter example
on:
  pull_request:
jobs:
  format:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - uses: chipsalliance/verible-formatter-action@main
      with:
        github_token: ${{ secrets.GITHUB_TOKEN }}

You can specify the files to format by setting the files argument to a whitespace-separated list of file patterns. The patterns are unix-like globs with support for ** (bash's "globstar"). To recursively search for *.v and *.sv files in the my_design folder, you can set files to 'my_design/**/*.{v,sv}'

By default files has the value './**/*.{v,sv}'. This searches for all *.v and *.sv files in the repository.

- uses: chipsalliance/verible-formatter-action@main
  with:
    files:
      ./rtl/my_file.sv
      ./rtl/module/*.sv
      ./testbench/**/*.{v,sv}
    github_token: ${{ secrets.GITHUB_TOKEN }}

If you want to declare Verible version to be used, you can pass its release tag in the input verible_version:

- uses: actions/checkout@master
- uses: chipsalliance/verible-formatter-action@main
  with:
    verible_version: "v0.0-3100-gd75b1c47"
    github_token: ${{ secrets.GITHUB_TOKEN }}

Additionally, you can add various flags to the formatter with the parameters input:

- uses: chipsalliance/verible-formatter-action@main
  with:
    files:
      ./design/**/*.{v,sv}
    parameters:
      --indentation_spaces 4
      --module_net_variable_alignment=preserve
      --case_items_alignment=preserve
    github_token: ${{ secrets.GITHUB_TOKEN }}

Automatic review on PRs from external repositories

In GitHub Actions, workflows triggered by external repositories may only have read access to the main repository. In order to have automatic reviews on external PRs, you need to change your workflow to trigger on pull_request_target event and manually check out changes from pull request:

name: Verible formatter example
on:
  pull_request_target:

jobs:
  format:
    runs-on: ubuntu-latest
    permissions:
      checks: write
      contents: read
      pull-requests: write
    steps:
      - uses: actions/checkout@v3
        with:
          ref: ${{ github.event.pull_request.head.sha }}
      - name: Run Verible formatter action
        uses: chipsalliance/verible-formatter-action@main
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}