if (selected_cell_types.empty())
                        log_cmd_error("No cell type to test specified.\n");
 
-               std::vector<std::string> task_names;
+               std::vector<std::string> uut_names;
 
                for (auto cell_type : selected_cell_types)
                        for (int i = 0; i < num_iter; i++)
                                        Backend::backend_call(design, &vlog_file, "<test_cell -vlog>", "verilog -selected");
                                        Pass::call(design, stringf("copy gold %s_noexpr; select %s_noexpr", uut_name.c_str(), uut_name.c_str()));
                                        Backend::backend_call(design, &vlog_file, "<test_cell -vlog>", "verilog -selected -noexpr");
-                                       task_names.push_back(uut_name + ".run");
+                                       uut_names.push_back(uut_name);
                                }
                                run_eval_test(design, verbose, uut_name, vlog_file);
                                delete design;
 
                if (vlog_file.is_open()) {
                        vlog_file << "\nmodule testbench;\n";
+                       for (auto &uut : uut_names)
+                               vlog_file << stringf("  %s %s ();\n", uut.c_str(), uut.c_str());
                        vlog_file << "  initial begin\n";
-                       for (auto &task : task_names)
-                               vlog_file << "    " << task << ";\n";
+                       for (auto &uut : uut_names)
+                               vlog_file << "    " << uut << ".run;\n";
                        vlog_file << "  end\n";
                        vlog_file << "endmodule\n";
                }