Skip to content

Commit 1d9cc1d

Browse files
Make argument order of imap_go's black box consistent with #2543
Fixes #2904
1 parent f78666d commit 1d9cc1d

File tree

3 files changed

+32
-32
lines changed

3 files changed

+32
-32
lines changed

clash-lib/prims/systemverilog/Clash_Sized_Vector.primitives.yaml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -148,21 +148,21 @@
148148
- BlackBox:
149149
name: Clash.Sized.Vector.imap_go
150150
kind: Declaration
151-
type: 'imap_go :: Index n -> (Index n -> a -> b) -> Vec m a -> Vec m b'
151+
type: 'imap_go :: (Index n -> a -> b) -> Vec m a -> Index n -> Vec m b'
152152
template: |-
153153
// imap begin
154154
genvar ~GENSYM[n][1];
155155
~GENERATE
156156
for (~SYM[1]=0; ~SYM[1] < $size(~RESULT); ~SYM[1] = ~SYM[1] + 1) begin : ~GENSYM[imap][2]
157-
~TYP[0] ~GENSYM[i][3];
158-
assign ~SYM[3] = ~SYM[1] + ~ARG[0];~IF~SIZE[~TYP[2]]~THEN
159-
~TYPEL[~TYP[2]] ~GENSYM[imap_in][4];
160-
assign ~SYM[4] = ~FROMBV[~VAR[vec][2][\~SYM[1]\]][~TYPEL[~TYP[2]]];~ELSE ~FI
157+
~TYP[2] ~GENSYM[i][3];
158+
assign ~SYM[3] = ~SYM[1] + ~ARG[2];~IF~SIZE[~TYP[1]]~THEN
159+
~TYPEL[~TYP[1]] ~GENSYM[imap_in][4];
160+
assign ~SYM[4] = ~FROMBV[~VAR[vec][1][\~SYM[1]\]][~TYPEL[~TYP[1]]];~ELSE ~FI
161161
~TYPEL[~TYPO] ~GENSYM[imap_out][5];
162-
~INST 1
162+
~INST 0
163163
~OUTPUT <= ~SYM[5]~ ~TYPEL[~TYPO]~
164-
~INPUT <= ~SYM[3]~ ~TYP[0]~
165-
~INPUT <= ~SYM[4]~ ~TYPEL[~TYP[2]]~
164+
~INPUT <= ~SYM[3]~ ~TYP[2]~
165+
~INPUT <= ~SYM[4]~ ~TYPEL[~TYP[1]]~
166166
~INST
167167
assign ~RESULT[~SYM[1]] = ~TOBV[~SYM[5]][~TYPEL[~TYPO]];
168168
end

clash-lib/prims/verilog/Clash_Sized_Vector.primitives.yaml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -127,22 +127,22 @@
127127
- BlackBox:
128128
name: Clash.Sized.Vector.imap_go
129129
kind: Declaration
130-
type: 'imap :: Index n -> (Index n -> a -> b) -> Vec m a -> Vec m b'
130+
type: 'imap_go :: (Index n -> a -> b) -> Vec m a -> Index n -> Vec m b'
131131
template: |-
132132
// imap begin
133133
genvar ~GENSYM[i][1];
134134
~GENERATE
135135
for (~SYM[1]=0; ~SYM[1] < ~LENGTH[~TYPO]; ~SYM[1] = ~SYM[1] + 1) begin : ~GENSYM[imap][2]
136-
wire ~TYP[0] ~GENSYM[map_index][3];~IF~SIZE[~TYP[2]]~THEN
137-
wire ~TYPEL[~TYP[2]] ~GENSYM[map_in][4];
138-
assign ~SYM[4] = ~VAR[vec][2][~SYM[1]*~SIZE[~TYPEL[~TYP[2]]]+:~SIZE[~TYPEL[~TYP[2]]]];~ELSE ~FI
139-
~OUTPUTUSAGE[1] ~TYPEL[~TYPO] ~GENSYM[map_out][5];
136+
wire ~TYP[2] ~GENSYM[map_index][3];~IF~SIZE[~TYP[1]]~THEN
137+
wire ~TYPEL[~TYP[1]] ~GENSYM[map_in][4];
138+
assign ~SYM[4] = ~VAR[vec][1][~SYM[1]*~SIZE[~TYPEL[~TYP[1]]]+:~SIZE[~TYPEL[~TYP[1]]]];~ELSE ~FI
139+
~OUTPUTUSAGE[0] ~TYPEL[~TYPO] ~GENSYM[map_out][5];
140140
141-
assign ~SYM[3] = ~SIZE[~TYP[0]]'d~MAXINDEX[~TYPO] - ~SYM[1][0+:~SIZE[~TYP[0]]] + ~ARG[0];
142-
~INST 1
141+
assign ~SYM[3] = ~SIZE[~TYP[2]]'d~MAXINDEX[~TYPO] - ~SYM[1][0+:~SIZE[~TYP[2]]] + ~ARG[2];
142+
~INST 0
143143
~OUTPUT <= ~SYM[5]~ ~TYPEL[~TYPO]~
144-
~INPUT <= ~SYM[3]~ ~TYP[0]~
145-
~INPUT <= ~SYM[4]~ ~TYPEL[~TYP[2]]~
144+
~INPUT <= ~SYM[3]~ ~TYP[2]~
145+
~INPUT <= ~SYM[4]~ ~TYPEL[~TYP[1]]~
146146
~INST
147147
assign ~RESULT[~SYM[1]*~SIZE[~TYPEL[~TYPO]]+:~SIZE[~TYPEL[~TYPO]]] = ~SYM[5];
148148
end

clash-lib/prims/vhdl/Clash_Sized_Vector.primitives.yaml

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -148,30 +148,30 @@
148148
- BlackBox:
149149
name: Clash.Sized.Vector.imap_go
150150
kind: Declaration
151-
type: 'imap_go :: Index n -> (Index n -> a -> b) -> Vec m a -> Vec m b'
151+
type: 'imap_go :: (Index n -> a -> b) -> Vec m a -> Index n -> Vec m b'
152152
template: |-
153153
-- imap_go begin
154-
~GENSYM[imap][5] : for ~GENSYM[i][1] in ~RESULT'range generate~IF ~VIVADO ~THEN~IF~SIZE[~TYP[2]]~THEN
155-
signal ~GENSYM[map_in][2] : ~TYPEL[~TYP[2]];~ELSE ~FI
154+
~GENSYM[imap][5] : for ~GENSYM[i][1] in ~RESULT'range generate~IF ~VIVADO ~THEN~IF~SIZE[~TYP[1]]~THEN
155+
signal ~GENSYM[map_in][2] : ~TYPEL[~TYP[1]];~ELSE ~FI
156156
signal ~GENSYM[map_out][3] : ~TYPEL[~TYPO];
157-
signal ~GENSYM[i2][4] : ~TYP[0];
158-
begin~IF~SIZE[~TYP[2]]~THEN
159-
~SYM[2] <= fromSLV(~VAR[vec][2](~SYM[1]));~ELSE ~FI
160-
~SYM[4] <= ~ARG[0] + to_unsigned(~SYM[1],~SIZE[~TYP[0]]);
161-
~INST 1
157+
signal ~GENSYM[i2][4] : ~TYP[2];
158+
begin~IF~SIZE[~TYP[1]]~THEN
159+
~SYM[2] <= fromSLV(~VAR[vec][1](~SYM[1]));~ELSE ~FI
160+
~SYM[4] <= ~ARG[2] + to_unsigned(~SYM[1],~SIZE[~TYP[2]]);
161+
~INST 0
162162
~OUTPUT <= ~SYM[3]~ ~TYPEL[~TYPO]~
163-
~INPUT <= ~SYM[4]~ ~TYP[0]~
164-
~INPUT <= ~SYM[2]~ ~TYPEL[~TYP[2]]~
163+
~INPUT <= ~SYM[4]~ ~TYP[2]~
164+
~INPUT <= ~SYM[2]~ ~TYPEL[~TYP[1]]~
165165
~INST
166166
~RESULT(~SYM[1]) <= ~TOBV[~SYM[3]][~TYPEL[~TYPO]];
167167
end generate;~ELSE
168-
signal ~SYM[4] : ~TYP[0];
168+
signal ~SYM[4] : ~TYP[2];
169169
begin
170-
~SYM[4] <= ~ARG[0] + to_unsigned(~SYM[1],~SIZE[~TYP[0]]);
171-
~INST 1
170+
~SYM[4] <= ~ARG[2] + to_unsigned(~SYM[1],~SIZE[~TYP[2]]);
171+
~INST 0
172172
~OUTPUT <= ~RESULT(~SYM[1])~ ~TYPEL[~TYPO]~
173-
~INPUT <= ~SYM[4]~ ~TYP[0]~
174-
~INPUT <= ~VAR[vec][2](~SYM[1])~ ~TYPEL[~TYP[2]]~
173+
~INPUT <= ~SYM[4]~ ~TYP[2]~
174+
~INPUT <= ~VAR[vec][1](~SYM[1])~ ~TYPEL[~TYP[1]]~
175175
~INST
176176
end generate;~FI
177177
-- imap_go end

0 commit comments

Comments
 (0)