Commit 05cafc3d by Zachary Snow

scope bit-indexed modport binding

parent 7a7482c9
...@@ -44,7 +44,7 @@ jobs: ...@@ -44,7 +44,7 @@ jobs:
- macOS-13 - macOS-13
needs: build needs: build
env: env:
IVERILOG_REF: f31d0dcbc5ddcd97e1e2e6f7bc7eb0f5a547fe16 IVERILOG_REF: ef7f0a8f38782dfc0872b1e352ccf32343c10bb8
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Install Dependencies (macOS) - name: Install Dependencies (macOS)
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
* Fixed unconverted multidimensional struct fields within dimension queries * Fixed unconverted multidimensional struct fields within dimension queries
* Fixed non-typenames (e.g., from packages or subsequent declarations) * Fixed non-typenames (e.g., from packages or subsequent declarations)
improperly shadowing the names of `struct` pattern fields 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 * Fixed failure to resolve typenames suffixed with dimensions in contexts
permitting both types and expressions, e.g., `$bits(T[W-1:0])` permitting both types and expressions, e.g., `$bits(T[W-1:0])`
* Fixed errant constant folding of shadowed non-trivial localparams * Fixed errant constant folding of shadowed non-trivial localparams
......
...@@ -222,7 +222,10 @@ convertDescription tops parts (Part att ext Module lif name ports items) = ...@@ -222,7 +222,10 @@ convertDescription tops parts (Part att ext Module lif name ports items) =
then Nothing then Nothing
else Just (portName, modportBinding) else Just (portName, modportBinding)
where where
modportBinding = (substitutions, replaceBit modportE) modportBinding =
( substitutions
, scopeExprWithScopes modports $ replaceBit modportE
)
substitutions = substitutions =
genSubstitutions modports base instanceE modportE genSubstitutions modports base instanceE modportE
maybeInfo = maybeInfo =
......
...@@ -38,6 +38,8 @@ module Convert.Scoper ...@@ -38,6 +38,8 @@ module Convert.Scoper
, replaceInExpr , replaceInExpr
, scopeExpr , scopeExpr
, scopeType , scopeType
, scopeExprWithScopes
, scopeTypeWithScopes
, insertElem , insertElem
, removeElem , removeElem
, injectItem , injectItem
...@@ -209,6 +211,12 @@ scopeType = traverseNestedTypesM $ traverseTypeExprsM scopeExpr ...@@ -209,6 +211,12 @@ scopeType = traverseNestedTypesM $ traverseTypeExprsM scopeExpr
{-# INLINABLE scopeExpr #-} {-# INLINABLE scopeExpr #-}
{-# INLINABLE scopeType #-} {-# 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 class ScopePath k where
toTiers :: Scopes a -> k -> [Tier] toTiers :: Scopes a -> k -> [Tier]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment