diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index c6b0cb2..0679d35 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -44,7 +44,7 @@ jobs: - macOS-13 needs: build env: - IVERILOG_REF: f31d0dcbc5ddcd97e1e2e6f7bc7eb0f5a547fe16 + IVERILOG_REF: ef7f0a8f38782dfc0872b1e352ccf32343c10bb8 steps: - uses: actions/checkout@v4 - name: Install Dependencies (macOS) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a7a6d3..3f5af1a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ * Fixed unconverted multidimensional struct fields within dimension queries * Fixed non-typenames (e.g., from packages or subsequent declarations) improperly shadowing the names of `struct` pattern fields +* Fixed shadowing of interface array indices passed to port connections * Fixed failure to resolve typenames suffixed with dimensions in contexts permitting both types and expressions, e.g., `$bits(T[W-1:0])` * Fixed errant constant folding of shadowed non-trivial localparams diff --git a/src/Convert/Interface.hs b/src/Convert/Interface.hs index 90d7cfa..b2be281 100644 --- a/src/Convert/Interface.hs +++ b/src/Convert/Interface.hs @@ -222,7 +222,10 @@ convertDescription tops parts (Part att ext Module lif name ports items) = then Nothing else Just (portName, modportBinding) where - modportBinding = (substitutions, replaceBit modportE) + modportBinding = + ( substitutions + , scopeExprWithScopes modports $ replaceBit modportE + ) substitutions = genSubstitutions modports base instanceE modportE maybeInfo = diff --git a/src/Convert/Scoper.hs b/src/Convert/Scoper.hs index 51a14fa..f297311 100644 --- a/src/Convert/Scoper.hs +++ b/src/Convert/Scoper.hs @@ -38,6 +38,8 @@ module Convert.Scoper , replaceInExpr , scopeExpr , scopeType + , scopeExprWithScopes + , scopeTypeWithScopes , insertElem , removeElem , injectItem @@ -209,6 +211,12 @@ scopeType = traverseNestedTypesM $ traverseTypeExprsM scopeExpr {-# INLINABLE scopeExpr #-} {-# INLINABLE scopeType #-} +scopeExprWithScopes :: Scopes a -> Expr -> Expr +scopeExprWithScopes scopes = flip evalState scopes . scopeExpr + +scopeTypeWithScopes :: Scopes a -> Type -> Type +scopeTypeWithScopes scopes = flip evalState scopes . scopeType + class ScopePath k where toTiers :: Scopes a -> k -> [Tier]