Commit 4d0d652c by Zachary Snow

enum preserves alias base type dimensions

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