mirror of https://github.com/zachjs/sv2v.git
added support for elaboration tasks
This commit is contained in:
parent
31ffa439f7
commit
74b80c1552
|
|
@ -10,9 +10,43 @@ import Convert.Traverse
|
|||
import Language.SystemVerilog.AST
|
||||
|
||||
convert :: [AST] -> [AST]
|
||||
convert =
|
||||
map $ traverseDescriptions $ traverseModuleItems $
|
||||
traverseStmts $ traverseNestedStmts convertStmt
|
||||
convert = map $ traverseDescriptions $ traverseModuleItems convertModuleItem
|
||||
|
||||
convertModuleItem :: ModuleItem -> ModuleItem
|
||||
|
||||
convertModuleItem (ElabTask SeverityInfo args) =
|
||||
Initial (Block Seq "" [] [
|
||||
(Subroutine (Ident "$write") (Args [(String "Elaboration Info: ")] [])),
|
||||
(Subroutine (Ident "$display") args)
|
||||
])
|
||||
|
||||
convertModuleItem (ElabTask SeverityWarning args) =
|
||||
Initial (Block Seq "" [] [
|
||||
(Subroutine (Ident "$write") (Args [(String "Elaboration Warning: ")] [])),
|
||||
(Subroutine (Ident "$display") args)
|
||||
])
|
||||
|
||||
convertModuleItem (ElabTask SeverityError args) =
|
||||
Initial (Block Seq "" [] [
|
||||
(Subroutine (Ident "$write") (Args [(String "Elaboration Error: ")] [])),
|
||||
(Subroutine (Ident "$display") args)
|
||||
])
|
||||
|
||||
convertModuleItem (ElabTask SeverityFatal (Args [] [])) =
|
||||
Initial (Block Seq "" [] [
|
||||
(Subroutine (Ident "$display") (Args [(String "Elaboration Fatal:")] [])),
|
||||
(Subroutine (Ident "$finish") (Args [] []))
|
||||
])
|
||||
|
||||
convertModuleItem (ElabTask SeverityFatal (Args (finishArgs:displayArgs) _)) =
|
||||
Initial (Block Seq "" [] [
|
||||
(Subroutine (Ident "$write") (Args [(String "Elaboration Fatal: ")] [])),
|
||||
(Subroutine (Ident "$display") (Args displayArgs [])),
|
||||
(Subroutine (Ident "$finish") (Args [finishArgs] []))
|
||||
])
|
||||
|
||||
convertModuleItem other =
|
||||
traverseStmts (traverseNestedStmts convertStmt) other
|
||||
|
||||
timeCall :: Expr
|
||||
timeCall = Call (Ident "$time") (Args [] [])
|
||||
|
|
|
|||
|
|
@ -6,5 +6,6 @@ module top;
|
|||
$error;
|
||||
$error("%b", 3);
|
||||
$fatal;
|
||||
$fatal("%b", 4);
|
||||
$fatal(0);
|
||||
$fatal(0, "%b", 4);
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
module top;
|
||||
initial begin
|
||||
$write("Elaboration Info: ");
|
||||
$display;
|
||||
end
|
||||
initial begin
|
||||
$write("Elaboration Info: ");
|
||||
$display("%b", 1);
|
||||
end
|
||||
initial begin
|
||||
$write("Elaboration Warning: ");
|
||||
$display;
|
||||
end
|
||||
initial begin
|
||||
$write("Elaboration Warning: ");
|
||||
$display("%b", 2);
|
||||
end
|
||||
initial begin
|
||||
$write("Elaboration Error: ");
|
||||
$display;
|
||||
end
|
||||
initial begin
|
||||
$write("Elaboration Error: ");
|
||||
$display("%b", 3);
|
||||
end
|
||||
initial begin
|
||||
$display("Elaboration Fatal:");
|
||||
$finish;
|
||||
end
|
||||
initial begin
|
||||
$write("Elaboration Fatal: ");
|
||||
$display;
|
||||
$finish(0);
|
||||
end
|
||||
initial begin
|
||||
$write("Elaboration Fatal: ");
|
||||
$display("%b", 4);
|
||||
$finish(0);
|
||||
end
|
||||
endmodule
|
||||
Loading…
Reference in New Issue