[Libre-soc-dev] daily kan-ban update 03jul2022

Cesar Strauss cestrauss at gmail.com
Tue Jul 5 21:42:01 BST 2022


Em 05/07/2022 13:54, Cesar Strauss escreveu:
> Em 04/07/2022 19:02, Cesar Strauss escreveu:
>> Em 03/07/2022 15:49, Tobias Platen via Libre-soc-dev escreveu:
>>> orangecrab WERROR: Failed to find a route for arc 2 of net 
>>> ddrphy_ddr3_0__a__o_fclk.
> 
> The LiteX target file for the OrangeCrab has an "ECLKBRIDGECS":
> 
> https://github.com/litex-hub/litex-boards/blob/32f507cc08aa4b969d952143f9fc4fdf82228951/litex_boards/targets/gsd_orangecrab.py#L109 
> 

The attached diff for ls2 seems to route fine for the OrangeCrab, 
generating a bitstream. Being a bit cautious, I did not try programming 
it yet (will carefully try the headless Gram example, first, to gain 
confidence).

The diff unconditionally inserts a ECLKBRIDGECS (following LiteX), 
disables SPI, and re-enables abc9 logic packing, to help meet timing 
(see https://github.com/Ravenslofty/yosys-cookbook/blob/master/ecp5.md).

This work in progress surely needs adjusting and review, before properly 
going into ls2 and gram.

Regards,

Cesar
-------------- next part --------------
diff --git a/src/ecp5_crg.py b/src/ecp5_crg.py
index 403ff7d..43c54c6 100644
--- a/src/ecp5_crg.py
+++ b/src/ecp5_crg.py
@@ -204,8 +204,13 @@ class ECP5CRG(Elaboratable):
         # create PLL clocks
         pll.create_clkout(ClockSignal(cd2x_ub), 2*freq)
         if esyncb:
+            sys2x_clk_ecsout = Signal()
+            m.submodules["%s_eclkbridgecs" % cd] = Instance("ECLKBRIDGECS",
+                    i_CLK0 = ClockSignal(cd2x_ub),
+                    i_SEL  = 0,
+                    o_ECSOUT = sys2x_clk_ecsout)
             m.submodules["%s_eclksyncb" % cd] = Instance("ECLKSYNCB",
-                    i_ECLKI = ClockSignal(cd2x_ub),
+                    i_ECLKI = sys2x_clk_ecsout,
                     i_STOP  = 0,
                     o_ECLKO = ClockSignal(cd2x))
         else:
diff --git a/src/ls2.py b/src/ls2.py
index 0e72d47..8e64064 100644
--- a/src/ls2.py
+++ b/src/ls2.py
@@ -958,7 +958,7 @@ def build_platform(fpga, firmware):
         spi_0_pins = platform.request("spi_0", 0)
 
 
-    if platform is not None and \
+    if False and platform is not None and \
        fpga in ['orangecrab']:
        # spi_flash_mosi   <= spi_sdat_o(0) when spi_sdat_oe(0) = '1' else 'Z';
        # spi_flash_miso   <= spi_sdat_o(1) when spi_sdat_oe(1) = '1' else 'Z';
@@ -1100,8 +1100,8 @@ def build_platform(fpga, firmware):
     if toolchain == 'Trellis':
         # add -abc9 option to yosys synth_ecp5
         #os.environ['NMIGEN_synth_opts'] = '-abc9 -nowidelut'
-        #os.environ['NMIGEN_synth_opts'] = '-abc9'
-        os.environ['NMIGEN_synth_opts'] = '-nowidelut'
+        os.environ['NMIGEN_synth_opts'] = '-abc9'
+        #os.environ['NMIGEN_synth_opts'] = '-nowidelut'
 
     if toolchain == 'yosys_nextpnr':
         # add --seed 2 to arty a7 compile-time options


More information about the Libre-soc-dev mailing list