Skip to content

Commit 1989890

Browse files
committed
Support variants for ECP5
1 parent f1e5710 commit 1989890

File tree

8 files changed

+110
-453
lines changed

8 files changed

+110
-453
lines changed

devices.json

Lines changed: 102 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,8 @@
22
"families": {
33
"ECP5": {
44
"devices": {
5-
"LFE5U-12F": {
6-
"packages": ["csfBGA285", "caBGA256", "caBGA381", "caBGA554", "caBGA756"],
7-
"idcode": "0x21111043",
8-
"frames": 7562,
9-
"bits_per_frame": 592,
10-
"pad_bits_after_frame": 0,
11-
"pad_bits_before_frame": 0,
12-
"max_row" : 50,
13-
"max_col" : 72,
14-
"row_bias" : 0,
15-
"col_bias" : 0,
16-
"fuzz": 1
17-
},
185
"LFE5U-25F": {
196
"packages": ["csfBGA285", "caBGA256", "caBGA381", "caBGA554", "caBGA756"],
20-
"idcode": "0x41111043",
217
"frames": 7562,
228
"bits_per_frame": 592,
239
"pad_bits_after_frame": 0,
@@ -26,11 +12,30 @@
2612
"max_col" : 72,
2713
"row_bias" : 0,
2814
"col_bias" : 0,
29-
"fuzz": 1
15+
"fuzz": 1,
16+
"variants": {
17+
"LFE5U-25F": {
18+
"idcode": "0x41111043",
19+
"packages": ["csfBGA285", "caBGA256", "caBGA381", "caBGA554", "caBGA756"],
20+
"speeds": [ 6, 7, 8 ],
21+
"suffixes": [ "C", "I" ]
22+
},
23+
"LFE5U-12F": {
24+
"idcode": "0x21111043",
25+
"packages": ["csfBGA285", "caBGA256", "caBGA381", "caBGA554", "caBGA756"],
26+
"speeds": [ 6, 7, 8 ],
27+
"suffixes": [ "C", "I" ]
28+
},
29+
"LAE5U-12F": {
30+
"idcode": "0x21111043",
31+
"packages": ["caBGA381"],
32+
"speeds": [ 6, 7 ],
33+
"suffixes": [ "E" ]
34+
}
35+
}
3036
},
3137
"LFE5U-45F": {
3238
"packages": ["csfBGA285", "caBGA256", "caBGA381", "caBGA554", "caBGA756"],
33-
"idcode": "0x41112043",
3439
"frames": 9470,
3540
"bits_per_frame": 846,
3641
"pad_bits_after_frame": 0,
@@ -39,11 +44,18 @@
3944
"max_col" : 90,
4045
"row_bias" : 0,
4146
"col_bias" : 0,
42-
"fuzz": 1
47+
"fuzz": 1,
48+
"variants": {
49+
"LFE5U-45F": {
50+
"idcode": "0x41112043",
51+
"packages": ["csfBGA285", "caBGA256", "caBGA381", "caBGA554", "caBGA756"],
52+
"speeds": [ 6, 7, 8 ],
53+
"suffixes": [ "C", "I" ]
54+
}
55+
}
4356
},
4457
"LFE5U-85F": {
4558
"packages": ["csfBGA285", "caBGA381", "caBGA554", "caBGA756"],
46-
"idcode": "0x41113043",
4759
"frames": 13294,
4860
"bits_per_frame": 1136,
4961
"pad_bits_after_frame": 0,
@@ -52,11 +64,18 @@
5264
"max_col" : 126,
5365
"row_bias" : 0,
5466
"col_bias" : 0,
55-
"fuzz": 1
67+
"fuzz": 1,
68+
"variants": {
69+
"LFE5U-85F": {
70+
"idcode": "0x41113043",
71+
"packages": ["csfBGA285", "caBGA381", "caBGA554", "caBGA756"],
72+
"speeds": [ 6, 7, 8 ],
73+
"suffixes": [ "C", "I" ]
74+
}
75+
}
5676
},
5777
"LFE5UM-25F": {
5878
"packages": ["csfBGA285", "caBGA256", "caBGA381", "caBGA554", "caBGA756"],
59-
"idcode": "0x01111043",
6079
"frames": 7562,
6180
"bits_per_frame": 592,
6281
"pad_bits_after_frame": 0,
@@ -65,11 +84,30 @@
6584
"max_col" : 72,
6685
"row_bias" : 0,
6786
"col_bias" : 0,
68-
"fuzz": 1
87+
"fuzz": 1,
88+
"variants": {
89+
"LFE5UM-25F": {
90+
"idcode": "0x01111043",
91+
"packages": ["csfBGA285", "caBGA256", "caBGA381", "caBGA554", "caBGA756"],
92+
"speeds": [ 6, 7, 8 ],
93+
"suffixes": [ "C", "I" ]
94+
},
95+
"LAE5UM-25F": {
96+
"idcode": "0x01111043",
97+
"packages": ["csfBGA285", "caBGA381"],
98+
"speeds": [ 6, 7 ],
99+
"suffixes": [ "E" ]
100+
},
101+
"LFE5UM5G-25F": {
102+
"idcode": "0x81111043",
103+
"packages": ["csfBGA285", "caBGA256", "caBGA381", "caBGA554", "caBGA756"],
104+
"speeds": [ 8 ],
105+
"suffixes": [ "C", "I" ]
106+
}
107+
}
69108
},
70109
"LFE5UM-45F": {
71110
"packages": ["csfBGA285", "caBGA256", "caBGA381", "caBGA554", "caBGA756"],
72-
"idcode": "0x01112043",
73111
"frames": 9470,
74112
"bits_per_frame": 846,
75113
"pad_bits_after_frame": 0,
@@ -78,50 +116,30 @@
78116
"max_col" : 90,
79117
"row_bias" : 0,
80118
"col_bias" : 0,
81-
"fuzz": 1
119+
"fuzz": 1,
120+
"variants": {
121+
"LFE5UM-45F": {
122+
"idcode": "0x01112043",
123+
"packages": ["csfBGA285", "caBGA256", "caBGA381", "caBGA554", "caBGA756"],
124+
"speeds": [ 6, 7, 8 ],
125+
"suffixes": [ "C", "I" ]
126+
},
127+
"LAE5UM-45F": {
128+
"idcode": "0x01112043",
129+
"packages": ["csfBGA285", "caBGA381"],
130+
"speeds": [ 6, 7 ],
131+
"suffixes": [ "E" ]
132+
},
133+
"LFE5UM5G-45F": {
134+
"idcode": "0x81112043",
135+
"packages": ["csfBGA285", "caBGA256", "caBGA381", "caBGA554", "caBGA756"],
136+
"speeds": [ 8 ],
137+
"suffixes": [ "C", "I" ]
138+
}
139+
}
82140
},
83141
"LFE5UM-85F": {
84142
"packages": ["csfBGA285", "caBGA381", "caBGA554", "caBGA756"],
85-
"idcode": "0x01113043",
86-
"frames": 13294,
87-
"bits_per_frame": 1136,
88-
"pad_bits_after_frame": 0,
89-
"pad_bits_before_frame": 0,
90-
"max_row" : 95,
91-
"max_col" : 126,
92-
"row_bias" : 0,
93-
"col_bias" : 0,
94-
"fuzz": 1
95-
},
96-
"LFE5UM5G-25F": {
97-
"packages": ["csfBGA285", "caBGA256", "caBGA381", "caBGA554", "caBGA756"],
98-
"idcode": "0x81111043",
99-
"frames": 7562,
100-
"bits_per_frame": 592,
101-
"pad_bits_after_frame": 0,
102-
"pad_bits_before_frame": 0,
103-
"max_row" : 50,
104-
"max_col" : 72,
105-
"row_bias" : 0,
106-
"col_bias" : 0,
107-
"fuzz": 1
108-
},
109-
"LFE5UM5G-45F": {
110-
"packages": ["csfBGA285", "caBGA256", "caBGA381", "caBGA554", "caBGA756"],
111-
"idcode": "0x81112043",
112-
"frames": 9470,
113-
"bits_per_frame": 846,
114-
"pad_bits_after_frame": 0,
115-
"pad_bits_before_frame": 2,
116-
"max_row" : 71,
117-
"max_col" : 90,
118-
"row_bias" : 0,
119-
"col_bias" : 0,
120-
"fuzz": 1
121-
},
122-
"LFE5UM5G-85F": {
123-
"packages": ["csfBGA285", "caBGA381", "caBGA554", "caBGA756"],
124-
"idcode": "0x81113043",
125143
"frames": 13294,
126144
"bits_per_frame": 1136,
127145
"pad_bits_after_frame": 0,
@@ -130,7 +148,27 @@
130148
"max_col" : 126,
131149
"row_bias" : 0,
132150
"col_bias" : 0,
133-
"fuzz": 1
151+
"fuzz": 1,
152+
"variants": {
153+
"LFE5UM-85F": {
154+
"idcode": "0x01113043",
155+
"packages": ["csfBGA285", "caBGA381", "caBGA554", "caBGA756"],
156+
"speeds": [ 6, 7, 8 ],
157+
"suffixes": [ "C", "I"]
158+
},
159+
"LAE5UM-85F": {
160+
"idcode": "0x01113043",
161+
"packages": ["caBGA756"],
162+
"speeds": [ 6, 7 ],
163+
"suffixes": [ "E" ]
164+
},
165+
"LFE5UM5G-85F": {
166+
"idcode": "0x81113043",
167+
"packages": ["csfBGA285", "caBGA381", "caBGA554", "caBGA756"],
168+
"speeds": [ 8 ],
169+
"suffixes": [ "C", "I" ]
170+
}
171+
}
134172
}
135173
}
136174
},

diamond.sh

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -90,17 +90,17 @@ set -- "$1" $NCL_SUB
9090
PART=$1
9191

9292
case "${PART}" in
93-
LFE5U-85F)
93+
LFE5U-85|LFE5U-85F)
9494
PACKAGE="${DEV_PACKAGE:-CABGA756}"
9595
DEVICE="LFE5U-85F"
9696
LSE_ARCH="ECP5U"
9797
;;
98-
LFE5U-45F)
98+
LFE5U-45|LFE5U-45F)
9999
PACKAGE="${DEV_PACKAGE:-CABGA381}"
100100
DEVICE="LFE5U-45F"
101101
LSE_ARCH="ECP5U"
102102
;;
103-
LFE5U-25F)
103+
LFE5U-25|LFE5U-25F)
104104
PACKAGE="${DEV_PACKAGE:-CABGA381}"
105105
DEVICE="LFE5U-25F"
106106
LSE_ARCH="ECP5U"
@@ -111,17 +111,17 @@ case "${PART}" in
111111
LSE_ARCH="ECP5U"
112112
;;
113113

114-
LFE5UM-85F)
114+
LFE5UM-85|LFE5UM-85F)
115115
PACKAGE="${DEV_PACKAGE:-CABGA756}"
116116
DEVICE="LFE5UM-85F"
117117
LSE_ARCH="ECP5UM"
118118
;;
119-
LFE5UM-45F)
119+
LFE5UM-45|LFE5UM-45F)
120120
PACKAGE="${DEV_PACKAGE:-CABGA381}"
121121
DEVICE="LFE5UM-45F"
122122
LSE_ARCH="ECP5UM"
123123
;;
124-
LFE5UM-25F)
124+
LFE5UM-25|LFE5UM-25F)
125125
PACKAGE="${DEV_PACKAGE:-CABGA381}"
126126
DEVICE="LFE5UM-25F"
127127
LSE_ARCH="ECP5UM"

libtrellis/src/ChipConfig.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ string ChipConfig::to_string() const
1212
{
1313
stringstream ss;
1414
ss << ".device " << chip_name << endl << endl;
15-
if (!chip_variant.empty())
16-
ss << ".variant " << chip_variant << endl << endl;
15+
ss << ".variant " << chip_variant << endl << endl;
1716
for (const auto &meta : metadata)
1817
ss << ".comment " << meta << endl;
1918
for (const auto &sc : sysconfig)

libtrellis/src/Database.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ DeviceLocator find_device_by_name(string name) {
6565

6666
DeviceLocator find_device_by_name_and_variant(string name, string variant) {
6767
if (variant.empty())
68-
return find_device_by_name(name);
68+
throw runtime_error("using old nexpnr with new trellis tools. ");
6969
auto found = find_device_generic([variant](const string &n, const pt::ptree &p) -> bool {
7070
UNUSED(p);
7171
return n == variant;

metadata/ECP5/LFE5U-12F/globals.json

Lines changed: 0 additions & 88 deletions
This file was deleted.

0 commit comments

Comments
 (0)