Commit 4d0d652c by Zachary Snow

enum preserves alias base type dimensions

parent bd2efb42
...@@ -90,7 +90,7 @@ convertExpr info (Bits (Right e)) = ...@@ -90,7 +90,7 @@ convertExpr info (Bits (Right e)) =
Stream _ _ exprs -> convertExpr info $ Bits $ Right $ Concat exprs Stream _ _ exprs -> convertExpr info $ Bits $ Right $ Concat exprs
Number n -> Number n ->
case elemIndex '\'' n of case elemIndex '\'' n of
Nothing -> Bits $ Right $ Number n Nothing -> Number "32"
Just idx -> Number $ take idx n Just idx -> Number $ take idx n
_ -> Bits $ Right e _ -> Bits $ Right e
convertExpr _ other = other convertExpr _ other = other
......
...@@ -108,6 +108,7 @@ toBaseType :: Maybe Type -> Type ...@@ -108,6 +108,7 @@ toBaseType :: Maybe Type -> Type
toBaseType Nothing = defaultType toBaseType Nothing = defaultType
toBaseType (Just (Implicit _ rs)) = toBaseType (Just (Implicit _ rs)) =
fst (typeRanges defaultType) rs fst (typeRanges defaultType) rs
toBaseType (Just t @ (Alias _ _ _)) = t
toBaseType (Just t) = toBaseType (Just t) =
if null rs if null rs
then tf [(Number "0", Number "0")] then tf [(Number "0", Number "0")]
......
...@@ -26,11 +26,21 @@ typedef enum [0:0] { ...@@ -26,11 +26,21 @@ typedef enum [0:0] {
G_1, G_2 G_1, G_2
} EnumG; } EnumG;
typedef logic [3:0] Foo_t;
typedef enum Foo_t {
H_1 = 'b1, H_2 = 'b0
} EnumH;
`define PRINT(name, val) \ `define PRINT(name, val) \
dummy``name = name``_``val; \ dummy``name = name``_``val; \
$display("%h %h %0d %0d", \ $display("%h %h %0d %0d", \
name``_``val, dummy``name, $bits(name``_``val), $bits(dummy``name)); name``_``val, dummy``name, $bits(name``_``val), $bits(dummy``name));
`define PRINT_UNSIZED(name, val) \
dummy``name = name``_``val; \
$display("%h %h %0d", \
name``_``val, dummy``name, $bits(dummy``name));
module top; module top;
EnumA dummyA; EnumA dummyA;
EnumB dummyB; EnumB dummyB;
...@@ -39,6 +49,7 @@ module top; ...@@ -39,6 +49,7 @@ module top;
EnumE dummyE; EnumE dummyE;
EnumF dummyF; EnumF dummyF;
EnumG dummyG; EnumG dummyG;
EnumH dummyH;
initial begin initial begin
...@@ -71,5 +82,8 @@ module top; ...@@ -71,5 +82,8 @@ module top;
`PRINT(G, 1) `PRINT(G, 1)
`PRINT(G, 2) `PRINT(G, 2)
`PRINT_UNSIZED(H, 1)
`PRINT_UNSIZED(H, 2)
end end
endmodule endmodule
`define PRINT(name, val) \ `define PRINT(name, val) \
dummy``name = val; \
$display("%h %h %0d %0d", \ $display("%h %h %0d %0d", \
val, val, $bits(dummy``name), $bits(dummy``name)); val, dummy``name, $bits(val), $bits(dummy``name));
`define PRINT_UNSIZED(name, val) \
dummy``name = val; \
$display("%h %h %0d", \
val, dummy``name, $bits(dummy``name));
module top; module top;
...@@ -11,17 +17,10 @@ module top; ...@@ -11,17 +17,10 @@ module top;
reg [31:0] dummyE; reg [31:0] dummyE;
reg [0:0] dummyF; reg [0:0] dummyF;
reg [0:0] dummyG; reg [0:0] dummyG;
reg [3:0] dummyH;
initial begin initial begin
dummyA = 'b10;
dummyB = 'b11;
dummyC = 'b10011;
dummyD = 'b10010;
dummyE = 'b11;
dummyF = 'b1;
dummyG = 'b1;
`PRINT(A, 0) `PRINT(A, 0)
`PRINT(A, 1) `PRINT(A, 1)
`PRINT(A, 2) `PRINT(A, 2)
...@@ -51,6 +50,9 @@ module top; ...@@ -51,6 +50,9 @@ module top;
`PRINT(G, 1'b0) `PRINT(G, 1'b0)
`PRINT(G, 1'b1) `PRINT(G, 1'b1)
`PRINT_UNSIZED(H, 'b1)
`PRINT_UNSIZED(H, 'b0)
end end
endmodule endmodule
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