vendor.lattice_ice40: normalize device names.
authorwhitequark <whitequark@whitequark.org>
Tue, 4 Jun 2019 16:09:08 +0000 (16:09 +0000)
committerwhitequark <whitequark@whitequark.org>
Tue, 4 Jun 2019 16:09:08 +0000 (16:09 +0000)
Right now the device name in the board file is just the option
nextpnr uses, but that's overnormalized and doesn't quite match
the chip names used elsewhere. It is even worse for ECP5 in terms
of mismatch with chip names, and for ECP5 we need to support other
toolchains as well, so let's handle this uniformly everywhere.

nmigen/vendor/lattice_ice40.py

index ab33856bf25e95e6525795ae1f3666de34dbc29c..5b4d7aa0d691b21def5ff81da5d0bf1ceea05612 100644 (file)
@@ -35,6 +35,18 @@ class LatticeICE40Platform(TemplatedPlatform):
     device  = abstractproperty()
     package = abstractproperty()
 
+    _nextpnr_device_options = {
+        "iCE40LP384": "--lp384",
+        "iCE40LP1K":  "--lp1k",
+        "iCE40LP4K":  "--lp8k",
+        "iCE40LP8K":  "--lp8k",
+        "iCE40HX1K":  "--hx1k",
+        "iCE40HX4K":  "--hx8k",
+        "iCE40HX8K":  "--hx8k",
+        "iCE40UP5K":  "--up5k",
+        "iCE5LP4K":   "--u4k",
+    }
+
     file_templates = {
         **TemplatedPlatform.build_script_templates,
         "{{name}}.il": r"""
@@ -83,8 +95,8 @@ class LatticeICE40Platform(TemplatedPlatform):
             {{quiet("-q")}}
             {{get_override("nextpnr_opts")|default(["--placer","heap"])|join(" ")}}
             -l {{name}}.tim
-            --{{platform.device}}
-            --package {{platform.package}}
+            {{platform._nextpnr_device_options[platform.device]}}
+            --package {{platform.package|lower}}
             --json {{name}}.json
             --pcf {{name}}.pcf
             --pre-pack {{name}}_pre_pack.py