diff --git a/verilog/transform/obfuscate.cc b/verilog/transform/obfuscate.cc index 5984ebb68..cb00cc7bd 100644 --- a/verilog/transform/obfuscate.cc +++ b/verilog/transform/obfuscate.cc @@ -47,9 +47,13 @@ static void ObfuscateVerilogCodeInternal(absl::string_view content, case verilog_tokentype::PP_Identifier: *output << (*subst)(token.text); break; + // Preserve all $ID calls, including system task/function calls, and VPI + // calls + case verilog_tokentype::SystemTFIdentifier: + *output << token.text; + break; // The following identifier types start with a special character that // needs to be preserved. - case verilog_tokentype::SystemTFIdentifier: case verilog_tokentype::MacroIdentifier: case verilog_tokentype::MacroCallId: // TODO(fangism): verilog_tokentype::EscapedIdentifier diff --git a/verilog/transform/obfuscate_test.cc b/verilog/transform/obfuscate_test.cc index 1b9718f41..851627b6e 100644 --- a/verilog/transform/obfuscate_test.cc +++ b/verilog/transform/obfuscate_test.cc @@ -53,10 +53,10 @@ TEST(ObfuscateVerilogCodeTest, PreloadedSubstitutions) { "`ifdef AAA\n`elsif CCC\n`else\n`endif\n"}, {"`define ccc bbb+aaa\n", "`define CCC BBB+AAA\n"}, {"`define ccc `bbb+`aaa\n", "`define CCC `BBB+`AAA\n"}, - {"task bbb;\n $aaa;\nendtask\n", "task BBB;\n $AAA;\nendtask\n"}, - {"task bbb;\n $aaa();\nendtask\n", "task BBB;\n $AAA();\nendtask\n"}, + {"task bbb;\n $aaa;\nendtask\n", "task BBB;\n $aaa;\nendtask\n"}, + {"task bbb;\n $aaa();\nendtask\n", "task BBB;\n $aaa();\nendtask\n"}, {"task bbb;\n $aaa($ccc());\nendtask\n", - "task BBB;\n $AAA($CCC());\nendtask\n"}, + "task BBB;\n $aaa($ccc());\nendtask\n"}, {"function aaa()\nreturn bbb^ccc;\nendfunction\n", "function AAA()\nreturn BBB^CCC;\nendfunction\n"}, {"function aaa()\nreturn bbb(ccc);\nendfunction\n",