diff --git a/src/main/scala/uk/ac/soton/ecs/can/core/CanCore.scala b/src/main/scala/uk/ac/soton/ecs/can/core/CanCore.scala
index 4b7844862106bc221461495607231c9202dae9c1..2ea297cdcf7cfd7a0e7f70c5e7a2a7e713222bc0 100644
--- a/src/main/scala/uk/ac/soton/ecs/can/core/CanCore.scala
+++ b/src/main/scala/uk/ac/soton/ecs/can/core/CanCore.scala
@@ -4,19 +4,15 @@
 package uk.ac.soton.ecs.can.core
 
 import chisel3._
-import scala.math.{ceil, log}
+import chisel3.util.log2Ceil
 
 class CanCore(implicit cfg: CanCoreConfiguration) extends MultiIOModule {
 
   // ========== Calculated Parameters ========== //
 
-  private val programMemoryAddressWidth = ceil(
-    log(cfg.programMemoryWords) / log(2)
-  ).toInt
+  private val programMemoryAddressWidth = log2Ceil(cfg.programMemoryWords)
   private val controlWordWidth = ControlWord(programMemoryAddressWidth).getWidth
-  private val dataMemoryAddressWidth = ceil(
-    log(cfg.dataMemoryWords) / log(2)
-  ).toInt
+  private val dataMemoryAddressWidth = log2Ceil(cfg.dataMemoryWords)
   private val blockWidth = 512
 
   // ========== External I/O Ports ========== //