# models because apparently they're good to go, already (icarus is a lot
 # stricter than verilator, hence the munging below)
 
+# peripheral fabric
 read_ilang build_simsoc/top.il
+
+# main core (any core, it's all good)
+read_verilog  ./external_core_top.v
+
+# UART 16550
 read_verilog  ../uart16550/rtl/verilog/raminfr.v
 read_verilog  ../uart16550/rtl/verilog/uart_defines.v
 read_verilog  ../uart16550/rtl/verilog/uart_rfifo.v
 read_verilog  ../uart16550/rtl/verilog/uart_receiver.v
 read_verilog  ../uart16550/rtl/verilog/uart_tfifo.v
 read_verilog  ../uart16550/rtl/verilog/uart_wb.v
+
+# Tercel QSPI
 read_verilog  ../tercel-qspi/tercel/phy.v 
 read_verilog  ../tercel-qspi/tercel/wishbone_spi_master.v
+
+# WB Async Bridge
+read_verilog  ../verilog-wishbone/rtl/wb_async_reg.v 
+
 # errors in the ethmac rtl, comment out for now
 #read_verilog  ../ethmac/rtl/verilog/eth_clockgen.v
 #read_verilog  ../ethmac/rtl/verilog/eth_cop.v
 #read_verilog  ../ethmac/rtl/verilog/eth_wishbone.v
 #read_verilog  ../ethmac/rtl/verilog/timescale.v
 
-read_verilog  ./external_core_top.v
-
 # stop yosys deleting stuff
 setattr -mod -set keep 1 uart_transmitter
 setattr -mod -set keep 1 uart_receiver
 
         # a CLKESYNCB (which is set to no-stop at the moment)
         if self.dram_clk_freq is not None:
             self.phase2_domain(m, pll, "dramsync", self.dram_clk_freq, True)
-            # resets for the dram domains
-            m.d.comb += ResetSignal("dramsync2x").eq(reset_ok)
-            m.d.comb += ResetSignal("dramsync").eq(reset_ok)
         else:
             # alias dramsync and dramsync2x to sync and sync2x
             cd_dramsync = ClockDomain("dramsync", local=False)
             cd_dramsync2x = ClockDomain("dramsync2x", local=False)
             m.domains += cd_dramsync2x
             m.d.comb += ClockSignal("dramsync2x").eq(ClockSignal("sync2x"))
+        # resets for the dram domains
+        m.d.comb += ResetSignal("dramsync2x").eq(reset_ok)
+        m.d.comb += ResetSignal("dramsync").eq(reset_ok)
 
         # create 25 mhz "init" clock, straight (no 2x phase stuff)
         cd_init = ClockDomain("init", local=False)
 
         clk_freq = 100e6
         dram_clk_freq = clk_freq
     if fpga == 'isim':
-        clk_freq = 55e6 # below 50 mhz, stops DRAM being enabled
+        clk_freq = 50e6 # below 50 mhz, stops DRAM being enabled
+        dram_clk_freq = 100e6
     if fpga == 'versa_ecp5':
         clk_freq = 50e6 # crank right down to test hyperram
         #dram_clk_freq = 100e6
                                          "ba":4, "clk_en":4,
                                          "odt":4, "ras":4, "cas":4, "we":4,
                                          "cs": 4})
+    print ("ddr pins", ddr_pins)
 
     # Get SPI resource pins
     spi_0_pins = None