diff --git a/sim/kelvin_sim.cc b/sim/kelvin_sim.cc
index 421d6e1..38f268b 100644
--- a/sim/kelvin_sim.cc
+++ b/sim/kelvin_sim.cc
@@ -237,7 +237,7 @@
       LOG(ERROR) << wait_status.message();
     }
     auto sec = absl::ToDoubleSeconds(absl::Now() - t0);
-    std::cout << "Total cycles: " << kelvin_top.GetCycleCount() << std::endl;
+    std::cout << "Total cycles: " << kelvin_top.GetCycleCount() << '\n';
     std::cout << absl::StrFormat("Simulation done: %0.3f sec\n", sec);
   }
 }
diff --git a/sim/kelvin_state.cc b/sim/kelvin_state.cc
index 6445099..68e017c 100644
--- a/sim/kelvin_state.cc
+++ b/sim/kelvin_state.cc
@@ -96,7 +96,7 @@
                 absl::StrFormat("%x", std::any_cast<uint32_t>(log_args_[0]));
             break;
           default:
-            std::cerr << "incorrect format" << std::endl;
+            std::cerr << "incorrect format" << '\n';
             break;
         }
       }
@@ -104,7 +104,7 @@
         if (print_ptr[1] == 's') {
           log_string += std::any_cast<std::string>(log_args_[0]);
         } else {
-          std::cerr << "incorrect format" << std::endl;
+          std::cerr << "incorrect format" << '\n';
         }
       }
       log_args_.erase(log_args_.begin());
diff --git a/sim/kelvin_top.cc b/sim/kelvin_top.cc
index 0dc7d74..26e2391 100644
--- a/sim/kelvin_top.cc
+++ b/sim/kelvin_top.cc
@@ -172,7 +172,7 @@
                          inst->address())) {  // Software breakpoint.
             RequestHalt(HaltReason::kSoftwareBreakpoint, inst);
           } else {  // The default Kelvin simulation mode.
-            std::cout << "Program exits with fault" << std::endl;
+            std::cout << "Program exits with fault" << '\n';
             RequestHalt(kHaltAbort, inst);
           }
           return true;
@@ -183,7 +183,7 @@
   state_->AddMpauseHandler(
       [this](const mpact::sim::generic::Instruction *inst) -> bool {
         if (inst != nullptr) {
-          std::cout << "Program exits properly" << std::endl;
+          std::cout << "Program exits properly" << '\n';
           RequestHalt(HaltReason::kUserRequest, inst);
           return true;
         }
@@ -198,20 +198,19 @@
     bool result = false;
     switch (code) {
       case mpact::sim::riscv::ExceptionCode::kIllegalInstruction: {
-        std::cerr << "Illegal instruction at 0x" << std::hex << epc
-                  << std::endl;
+        std::cerr << "Illegal instruction at 0x" << std::hex << epc << '\n';
         RequestHalt(HaltReason::kUserRequest, nullptr);
         result = true;
       } break;
       case mpact::sim::riscv::ExceptionCode::kLoadAccessFault: {
         std::cerr << "Memory load access fault at 0x" << std::hex << epc
-                  << " as: " << inst->AsString() << std::endl;
+                  << " as: " << inst->AsString() << '\n';
         RequestHalt(HaltReason::kUserRequest, nullptr);
         result = true;
       } break;
       case mpact::sim::riscv::ExceptionCode::kStoreAccessFault: {
         std::cerr << "Memory store access fault at 0x" << std::hex << epc
-                  << " as: " << inst->AsString() << std::endl;
+                  << " as: " << inst->AsString() << '\n';
         RequestHalt(HaltReason::kUserRequest, nullptr);
         result = true;
       } break;
@@ -380,9 +379,9 @@
         trace_file.open(absl::GetFlag(FLAGS_trace_path),
                         std::ios_base::out | std::ios_base::binary);
         std::cout << "Dump trace file at " << absl::GetFlag(FLAGS_trace_path)
-                  << std::endl;
+                  << '\n';
       } else {
-        std::cerr << "Failed to create " << trace_dir << std::endl;
+        std::cerr << "Failed to create " << trace_dir << '\n';
       }
     }
 
