From 2309d52fd64b54d3082f0b13dbd4cc38ea227ccd Mon Sep 17 00:00:00 2001 From: Wilson Snyder Date: Wed, 18 Feb 2026 21:36:17 -0500 Subject: [PATCH] Tests: Cleanup t_uvm_dpi. No test change. --- test_regress/t/t_uvm_dpi.v | 273 +++++++++++++++++++------------------ 1 file changed, 143 insertions(+), 130 deletions(-) diff --git a/test_regress/t/t_uvm_dpi.v b/test_regress/t/t_uvm_dpi.v index 196716671..5e67046e7 100644 --- a/test_regress/t/t_uvm_dpi.v +++ b/test_regress/t/t_uvm_dpi.v @@ -55,166 +55,179 @@ module t; // TODO TEST: // extern const char* uvm_dpi_get_next_arg_c(int init); - //===== Exports - uvm_pkg::m__uvm_report_dpi(1, "id", "message", 1, `__FILE__, `__LINE__); + begin : t_exports + uvm_pkg::m__uvm_report_dpi(1, "id", "message", 1, `__FILE__, `__LINE__); + end - //===== Tool - s = uvm_dpi_get_tool_name_c(); - $display("uvm_dpi_get_tool_name_c() = %s", s); - `checks(s, "Verilator"); + begin : t_tool + s = uvm_dpi_get_tool_name_c(); + $display("uvm_dpi_get_tool_name_c() = %s", s); + `checks(s, "Verilator"); - s = uvm_dpi_get_tool_version_c(); - // - is so doesn't compare in .out file, in case version changes - $display("- uvm_dpi_get_tool_version_c() = %s", s); - if (s == "") $stop; + s = uvm_dpi_get_tool_version_c(); + // - is so doesn't compare in .out file, in case version changes + $display("- uvm_dpi_get_tool_version_c() = %s", s); + if (s == "") $stop; + end - //===== Regexp - $display("= uvm_re"); - h = uvm_dpi_regcomp("a.*b"); + begin : t_regexp + $display("= uvm_re"); + h = uvm_dpi_regcomp("a.*b"); - i = uvm_dpi_regexec(h, "__a_b__"); - `checkh(i, 0); - i = uvm_dpi_regexec(h, "__a_z__"); - `checkh(i, 1); + i = uvm_dpi_regexec(h, "__a_b__"); + `checkh(i, 0); + i = uvm_dpi_regexec(h, "__a_z__"); + `checkh(i, 1); + uvm_dpi_regfree(h); - uvm_dpi_regfree(h); + i = uvm_re_match("a.*b", "__a__b__"); + `checkh(i, 0); + i = uvm_re_match("a.*b", "__a__z__"); + `checkh(i, 1); - i = uvm_re_match("a.*b", "__a__b__"); - `checkh(i, 0); + s = uvm_glob_to_re("a foo bar"); + `checks(s, "/^a foo bar$/"); + end - i = uvm_re_match("a.*b", "__a__z__"); - `checkh(i, 1); - - s = uvm_glob_to_re("a foo bar"); - `checks(s, "/^a foo bar$/"); - - //===== Hier + begin : t_hier `ifdef VERILATOR - $c("Verilated::lastContextp()->fatalOnVpiError(false);"); + $c("Verilated::lastContextp()->fatalOnVpiError(false);"); `ifdef TEST_VERBOSE - $c("Verilated::scopesDump();"); + $c("Verilated::scopesDump();"); `endif `endif + end - $display("= uvm_hdl_check_path"); - i = uvm_hdl_check_path("t.__NOT_FOUND"); - `checkh(i, 0); - i = uvm_hdl_check_path("t.exposed"); - `checkh(i, 1); - i = uvm_hdl_check_path("$root.t.exposed"); - `checkh(i, 1); + begin : t_uvm_hdl_check_path + $display("= uvm_hdl_check_path"); + i = uvm_hdl_check_path("t.__NOT_FOUND"); + `checkh(i, 0); + i = uvm_hdl_check_path("t.exposed"); + `checkh(i, 1); + i = uvm_hdl_check_path("$root.t.exposed"); + `checkh(i, 1); + end - $display("= uvm_hdl_read simple variable"); - exposed = 32'hb001; - lval = '0; // Upper bits not cleared by uvm_hdl_read - i = uvm_hdl_read("t.exposed", lval); - `checkh(i, 1); - `checkh(lval[31:0], exposed); + begin : t_simple + $display("= uvm_hdl_read simple variable"); + exposed = 32'hb001; + lval = '0; // Upper bits not cleared by uvm_hdl_read + i = uvm_hdl_read("t.exposed", lval); + `checkh(i, 1); + `checkh(lval[31:0], exposed); - $display("= uvm_hdl_deposit simple variable"); - lval = 1024'hab; - i = uvm_hdl_deposit("t.exposed", lval); - `checkh(i, 1); - `checkh(exposed, 32'hab); + $display("= uvm_hdl_deposit simple variable"); + lval = 1024'hab; + i = uvm_hdl_deposit("t.exposed", lval); + `checkh(i, 1); + `checkh(exposed, 32'hab); - $display("= uvm_hdl_read single bit"); - exposed = 32'habcd; - lval = '0; // Upper bits not cleared by uvm_hdl_read - i = uvm_hdl_read("t.exposed[11]", lval); - `checkh(i, 1); - `checkh(lval[0], exposed[11]); + $display("= uvm_hdl_read single bit"); + exposed = 32'habcd; + lval = '0; // Upper bits not cleared by uvm_hdl_read + i = uvm_hdl_read("t.exposed[11]", lval); + `checkh(i, 1); + `checkh(lval[0], exposed[11]); - $display("= uvm_hdl_deposit single bit"); - lval = 1024'h0; - i = uvm_hdl_deposit("t.exposed[11]", lval); - `checkh(i, 1); - `checkh(exposed, 32'habc5); + $display("= uvm_hdl_deposit single bit"); + lval = 1024'h0; + i = uvm_hdl_deposit("t.exposed[11]", lval); + `checkh(i, 1); + `checkh(exposed, 32'habc5); + end - $display("= uvm_hdl_read multi-bit"); - exposed = 32'habcd; - lval = '0; // Upper bits not cleared by uvm_hdl_read - i = uvm_hdl_read("t.exposed[19:12]", lval); - `checkh(i, 1); - `checkh(lval[7:0], exposed[19:12]); + begin : t_multibit + $display("= uvm_hdl_read multi-bit"); + exposed = 32'habcd; + lval = '0; // Upper bits not cleared by uvm_hdl_read + i = uvm_hdl_read("t.exposed[19:12]", lval); + `checkh(i, 1); + `checkh(lval[7:0], exposed[19:12]); - $display("= uvm_hdl_deposit multi-bit"); - lval = 1024'h12; - i = uvm_hdl_deposit("t.exposed[19:12]", lval); - `checkh(i, 1); - `checkh(exposed, 32'ha12d); + $display("= uvm_hdl_deposit multi-bit"); + lval = 1024'h12; + i = uvm_hdl_deposit("t.exposed[19:12]", lval); + `checkh(i, 1); + `checkh(exposed, 32'ha12d); - $display("= uvm_hdl_read/deposit wide decending"); - wide_dec = 80'h1234_56789abc_dcba8765; - lval = '0; // Upper bits not cleared by uvm_hdl_read - i = uvm_hdl_read("t.wide_dec[79:64]", lval); - `checkh(i, 1); - `checkh(lval[15:0], wide_dec[79:64]); - lval = 1024'hffe; - i = uvm_hdl_deposit("t.wide_dec[79:64]", lval); - `checkh(i, 1); - // .vvv_v......._........ - `checkh(wide_dec, 80'h10ff_e6789abc_dcba8765); + $display("= uvm_hdl_read/deposit wide decending"); + wide_dec = 80'h1234_56789abc_dcba8765; + lval = '0; // Upper bits not cleared by uvm_hdl_read + i = uvm_hdl_read("t.wide_dec[79:64]", lval); + `checkh(i, 1); + `checkh(lval[15:0], wide_dec[79:64]); + lval = 1024'hffe; + i = uvm_hdl_deposit("t.wide_dec[79:64]", lval); + `checkh(i, 1); + // .vvv_v......._........ + `checkh(wide_dec, 80'h10ff_e6789abc_dcba8765); - $display("= uvm_hdl_read/deposit wide ascending"); - wide_asc = 80'h1234_56789abc_dcba8765; - lval = '0; // Upper bits not cleared by uvm_hdl_read - i = uvm_hdl_read("t.wide_asc[64:79]", lval); - `checkh(i, 1); - `checkh(lval[15:0], wide_asc[64:79]); - lval = 1024'hffe; - i = uvm_hdl_deposit("t.wide_asc[64:79]", lval); - `checkh(i, 1); - // ...._........_...vvvv. - `checkh(wide_asc, 80'h1234_56789abc_dcb0ffe5); + $display("= uvm_hdl_read/deposit wide ascending"); + wide_asc = 80'h1234_56789abc_dcba8765; + lval = '0; // Upper bits not cleared by uvm_hdl_read + i = uvm_hdl_read("t.wide_asc[64:79]", lval); + `checkh(i, 1); + `checkh(lval[15:0], wide_asc[64:79]); + lval = 1024'hffe; + i = uvm_hdl_deposit("t.wide_asc[64:79]", lval); + `checkh(i, 1); + // ...._........_...vvvv. + `checkh(wide_asc, 80'h1234_56789abc_dcb0ffe5); + end - $display("= uvm_hdl_deposit bad ranges"); - $display("===\nUVM Report expected on next line:"); - i = uvm_hdl_deposit("t.exposed[10:3]", lval); - `checkh(i, 0); - $display("===\nUVM Report expected on next line:"); - i = uvm_hdl_deposit("t.exposed[99:15]", lval); - `checkh(i, 0); + begin : t_deposit_bad + $display("= uvm_hdl_deposit bad ranges"); + $display("===\nUVM Report expected on next line:"); + i = uvm_hdl_deposit("t.exposed[10:3]", lval); + `checkh(i, 0); + $display("===\nUVM Report expected on next line:"); + i = uvm_hdl_deposit("t.exposed[99:15]", lval); + `checkh(i, 0); - $display("= uvm_hdl_deposit not found (bad)"); - $display("===\nUVM Report expected on next line:"); - i = uvm_hdl_deposit("t.__DEPOSIT_NOT_FOUND", 12); - `checkh(i, 0); + $display("= uvm_hdl_deposit not found (bad)"); + $display("===\nUVM Report expected on next line:"); + i = uvm_hdl_deposit("t.__DEPOSIT_NOT_FOUND", 12); + `checkh(i, 0); `ifdef VERILATOR - $display("= uvm_hdl_deposit to not exposed (bad)"); - $display("===\nUVM Report expected on next line:"); - i = uvm_hdl_deposit("t.not_exposed", 12); - `checkh(i, 0); + $display("= uvm_hdl_deposit to not exposed (bad)"); + $display("===\nUVM Report expected on next line:"); + i = uvm_hdl_deposit("t.not_exposed", 12); + `checkh(i, 0); `endif + end - // Force-release - exposed = 32'h11223344; - i = uvm_hdl_read("t.exposed", lval); - `checkh(i, 1); - `checkh(lval[31:0], exposed); - // UNSUPPORTED: force/release via VPI - // If support, validate or throw unsupported on force/release part-selects - $display("= uvm_hdl_force"); - i = uvm_hdl_force("t.exposed", 62); - `checkh(i, 1); + begin : t_force_release + exposed = 32'h11223344; + i = uvm_hdl_read("t.exposed", lval); + `checkh(i, 1); + `checkh(lval[31:0], exposed); + // UNSUPPORTED: force/release via VPI + // If support, validate or throw unsupported on force/release part-selects + $display("= uvm_hdl_force"); + i = uvm_hdl_force("t.exposed", 62); + `checkh(i, 1); - $display("= uvm_hdl_release"); - i = uvm_hdl_release("t.exposed"); - `checkh(i, 1); + $display("= uvm_hdl_release"); + i = uvm_hdl_release("t.exposed"); + `checkh(i, 1); - $display("= uvm_hdl_release_and_read"); - i = uvm_hdl_release_and_read("t.exposed", lval); - `checkh(i, 1); + $display("= uvm_hdl_release_and_read"); + i = uvm_hdl_release_and_read("t.exposed", lval); + `checkh(i, 1); + end - $display("= uvm_hdl_force to not exposed (bad)"); - $display("===\nUVM Report expected on next line:"); - i = uvm_hdl_force("t.not_exposed", 12); - `checkh(i, 0); + begin : t_force_expose_bad + $display("= uvm_hdl_force to not exposed (bad)"); + $display("===\nUVM Report expected on next line:"); + i = uvm_hdl_force("t.not_exposed", 12); + `checkh(i, 0); - $display("= uvm_hdl_force to not forcable (bad)"); - $display("===\nUVM Report expected on next line:"); - i = uvm_hdl_force("t.exposed_not_forceable", 12); - `checkh(i, 0); + $display("= uvm_hdl_force to not forcable (bad)"); + $display("===\nUVM Report expected on next line:"); + i = uvm_hdl_force("t.exposed_not_forceable", 12); + `checkh(i, 0); + end $write("*-* All Finished *-*\n"); $finish;