aboutsummaryrefslogtreecommitdiffstats
path: root/passes/pmgen/ice40_dsp.pmg
diff options
context:
space:
mode:
Diffstat (limited to 'passes/pmgen/ice40_dsp.pmg')
-rw-r--r--passes/pmgen/ice40_dsp.pmg11
1 files changed, 7 insertions, 4 deletions
diff --git a/passes/pmgen/ice40_dsp.pmg b/passes/pmgen/ice40_dsp.pmg
index e4c6238c5..a92cf8dd4 100644
--- a/passes/pmgen/ice40_dsp.pmg
+++ b/passes/pmgen/ice40_dsp.pmg
@@ -1,7 +1,7 @@
pattern ice40_dsp
state <SigBit> clock
-state <bool> clock_pol
+state <bool> clock_pol sigS_signed
state <SigSpec> sigA sigB sigY sigS
state <Cell*> addAB muxAB
@@ -92,14 +92,16 @@ match addB
optional
endmatch
-code addAB sigS
+code addAB sigS sigS_signed
if (addA) {
addAB = addA;
- sigS = port(addA, \B);
+ sigS = port(addAB, \B);
+ sigS_signed = param(addAB, \B_SIGNED).as_bool();
}
if (addB) {
addAB = addB;
- sigS = port(addB, \A);
+ sigS = port(addAB, \A);
+ sigS_signed = param(addAB, \A_SIGNED).as_bool();
}
if (addAB) {
int natural_mul_width = GetSize(sigA) + GetSize(sigB);
@@ -144,6 +146,7 @@ match ffS
select nusers(port(ffS, \D)) == 2
index <SigSpec> port(ffS, \D) === port(muxAB, \Y)
index <SigSpec> port(ffS, \Q) === sigS
+ optional
endmatch
code clock clock_pol