diff --git a/src/Convert/Logic.hs b/src/Convert/Logic.hs index 3ebbf88..db64a26 100644 --- a/src/Convert/Logic.hs +++ b/src/Convert/Logic.hs @@ -206,7 +206,7 @@ traverseStmtM (Timing timing stmt) = return $ Timing timing stmt traverseStmtM (Subroutine (Ident f) args) = do case args of - Args [_, Ident x, _] [] -> + Args (_ : Ident x : _) [] -> if f == "$readmemh" || f == "$readmemb" then collectLHSM $ LHSIdent x else return () diff --git a/src/Convert/UnpackedArray.hs b/src/Convert/UnpackedArray.hs index bb549ed..bf8e2fc 100644 --- a/src/Convert/UnpackedArray.hs +++ b/src/Convert/UnpackedArray.hs @@ -94,6 +94,8 @@ traverseStmtM = traverseStmtArgsM traverseStmtArgsM :: Stmt -> ST Stmt +traverseStmtArgsM stmt @ (Subroutine (Ident ('$' : _)) _) = + return stmt traverseStmtArgsM stmt @ (Subroutine _ (Args args [])) = mapM_ flatUsageM args >> return stmt traverseStmtArgsM stmt = return stmt diff --git a/test/core/tf_unpacked_input.mem b/test/core/tf_unpacked_input.mem new file mode 100644 index 0000000..987f338 --- /dev/null +++ b/test/core/tf_unpacked_input.mem @@ -0,0 +1 @@ +ff aa bb cc diff --git a/test/core/tf_unpacked_input.sv b/test/core/tf_unpacked_input.sv index c2234c7..d452654 100644 --- a/test/core/tf_unpacked_input.sv +++ b/test/core/tf_unpacked_input.sv @@ -20,4 +20,7 @@ module top; #1 arr2[2] = 9; dump(arr2); #1 arr2[3] = 7; dump(arr2); end + byte arr3 [4]; + wire [31:0] arr3_flat = {arr3[0], arr3[1], arr3[2], arr3[3]}; + initial $readmemh("tf_unpacked_input.mem", arr3); endmodule diff --git a/test/core/tf_unpacked_input.v b/test/core/tf_unpacked_input.v index 384af07..d00e71e 100644 --- a/test/core/tf_unpacked_input.v +++ b/test/core/tf_unpacked_input.v @@ -19,4 +19,7 @@ module top; #1 arr2[2] = 9; dump(arr2); #1 arr2[3] = 7; dump(arr2); end + reg [7:0] arr3 [0:3]; + wire [31:0] arr3_flat = {arr3[0], arr3[1], arr3[2], arr3[3]}; + initial $readmemh("tf_unpacked_input.mem", arr3); endmodule