mirror of https://github.com/zachjs/sv2v.git
enum preserves alias base type dimensions
This commit is contained in:
parent
bd2efb4201
commit
4d0d652c86
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -1,6 +1,12 @@
|
|||
`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
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue