mirror of https://github.com/zachjs/sv2v.git
integer atom explicit sign cast support
This commit is contained in:
parent
a8346f2f88
commit
eb93ba67fc
|
|
@ -162,4 +162,9 @@ typeSigning :: Type -> Maybe Signing
|
|||
typeSigning (Net _ sg _) = Just sg
|
||||
typeSigning (Implicit sg _) = Just sg
|
||||
typeSigning (IntegerVector _ sg _) = Just sg
|
||||
typeSigning (IntegerAtom t sg ) =
|
||||
Just $ case (sg, t) of
|
||||
(Unspecified, TTime) -> Unsigned
|
||||
(Unspecified, _ ) -> Signed
|
||||
(_ , _ ) -> sg
|
||||
typeSigning _ = Nothing
|
||||
|
|
|
|||
|
|
@ -120,10 +120,10 @@ nullRange t rs1 =
|
|||
(tf, rs2) = typeRanges t'
|
||||
|
||||
elaborateIntegerAtom :: Type -> Type
|
||||
elaborateIntegerAtom (IntegerAtom TInt sg) = baseIntType sg Signed 32
|
||||
elaborateIntegerAtom (IntegerAtom TShortint sg) = baseIntType sg Signed 16
|
||||
elaborateIntegerAtom (IntegerAtom TLongint sg) = baseIntType sg Signed 64
|
||||
elaborateIntegerAtom (IntegerAtom TByte sg) = baseIntType sg Unspecified 8
|
||||
elaborateIntegerAtom (IntegerAtom TInt sg) = baseIntType sg Signed 32
|
||||
elaborateIntegerAtom (IntegerAtom TShortint sg) = baseIntType sg Signed 16
|
||||
elaborateIntegerAtom (IntegerAtom TLongint sg) = baseIntType sg Signed 64
|
||||
elaborateIntegerAtom (IntegerAtom TByte sg) = baseIntType sg Signed 8
|
||||
elaborateIntegerAtom other = other
|
||||
|
||||
-- makes a integer "compatible" type with the given signing, base signing and
|
||||
|
|
|
|||
|
|
@ -33,4 +33,12 @@ module top;
|
|||
$display("%b", 5'(1'sb1));
|
||||
end
|
||||
|
||||
parameter W = 9;
|
||||
initial begin
|
||||
byte i = -1;
|
||||
byte unsigned j = -1;
|
||||
$display("%b", W'(i));
|
||||
$display("%b", W'(j));
|
||||
end
|
||||
|
||||
endmodule
|
||||
|
|
|
|||
|
|
@ -36,4 +36,18 @@ module top;
|
|||
$display("%b", 5'sb11111);
|
||||
end
|
||||
|
||||
parameter W = 9;
|
||||
initial begin : block
|
||||
reg signed [7:0] i;
|
||||
reg [7:0] j;
|
||||
reg [8:0] i_extended;
|
||||
reg [8:0] j_extended;
|
||||
i = -1;
|
||||
j = -1;
|
||||
i_extended = i;
|
||||
j_extended = j;
|
||||
$display("%b", i_extended);
|
||||
$display("%b", j_extended);
|
||||
end
|
||||
|
||||
endmodule
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ assertConverts() {
|
|||
assertFalse "conversion of $ac_file still contains dimension queries" $?
|
||||
echo "$filtered" | egrep "\s(int\|bit\|logic\|byte\|struct\|enum\|longint\|shortint)\s"
|
||||
assertFalse "conversion of $ac_file still contains SV types" $?
|
||||
echo "$filtered" | grep "[^$]unsigned" > /dev/null
|
||||
echo "$filtered" | grep "[^\$a-zA-Z_]unsigned" > /dev/null
|
||||
assertFalse "conversion of $ac_file still contains unsigned keyword" $?
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue