speed up ==, hash, <, >, <=, and >= for plain_data
[nmutil.git] / src / nmutil / sim_tmp_alternative.py
index e615ad5b8405e27510c4a192bf9113cfa403c1a6..21ecb743e8ac94f9ab531378f09f856323f58771 100644 (file)
@@ -28,37 +28,38 @@ or, even::
 import os
 
 try:
-    from nmigen.sim import Simulator as RealSimulator, Delay, Settle, Tick
+    from nmigen.sim import (Simulator as RealSimulator, Delay, Settle, Tick,
+                            Passive)
     detected_new_api = True
 except ImportError:
     detected_new_api = False
     try:
         from nmigen.sim.pysim import (Simulator as RealSimulator,
-                                      Delay, Settle, Tick)
+                                      Delay, Settle, Tick, Passive)
     except ImportError:
         from nmigen.back.pysim import (Simulator as RealSimulator,
-                                       Delay, Settle, Tick)
+                                       Delay, Settle, Tick, Passive)
 
 nmigen_sim_environ_variable = os.environ.get("NMIGEN_SIM_MODE") \
-                              or "pysim"
+    or "pysim"
 """Detected run-time engine from environment"""
 
 
 def Simulator(*args, **kwargs):
     """Wrapper that allows run-time selection of simulator engine"""
-    if detected_new_api:
+    if detected_new_api and 'engine' not in kwargs:
         kwargs['engine'] = nmigen_sim_environ_variable
     return RealSimulator(*args, **kwargs)
 
 
 def is_engine_cxxsim():
     """Returns ``True`` if the selected engine is cxxsim"""
-    return nmigen_sim_environ_variable == "cxxsim"
+    return detected_new_api and nmigen_sim_environ_variable == "cxxsim"
 
 
 def is_engine_pysim():
     """Returns ``True`` if the selected engine is pysim"""
-    return nmigen_sim_environ_variable == "pysim"
+    return not detected_new_api or nmigen_sim_environ_variable == "pysim"
 
 
 nmigen_sim_top_module = "top." if is_engine_pysim() else ""