Skip to content

Commit fb82daa

Browse files
author
Oron Port
committed
Verilog bit not operation will always be ~ for bits to preserve x and z
1 parent 6cff1fe commit fb82daa

File tree

5 files changed

+10
-7
lines changed

5 files changed

+10
-7
lines changed

compiler/stages/src/main/scala/dfhdl/compiler/stages/verilog/VerilogValPrinter.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,10 @@ protected trait VerilogValPrinter extends AbstractValPrinter:
125125
case Func.Op.rising => s"posedge $argStrB"
126126
case Func.Op.falling => s"negedge $argStrB"
127127
case Func.Op.unary_- => s"-$argStrB"
128-
case Func.Op.unary_! => s"!$argStrB"
128+
case Func.Op.unary_! =>
129+
dfVal.dfType match
130+
case DFBool => s"!$argStrB"
131+
case _ => s"~${argStrB}"
129132
case Func.Op.unary_~ => s"~$argStrB"
130133
case Func.Op.& => s"&$argStrB"
131134
case Func.Op.| => s"|$argStrB"

compiler/stages/src/test/scala/StagesSpec/PrintVerilogCodeSpec.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -585,7 +585,7 @@ class PrintVerilogCodeSpec extends StageSpec:
585585
| else begin
586586
| if (cnt == $clog2(HALF_PERIOD)'(HALF_PERIOD - 1)) begin
587587
| cnt <= $clog2(HALF_PERIOD)'(0);
588-
| led <= !led;
588+
| led <= ~led;
589589
| end
590590
| else cnt <= cnt + $clog2(HALF_PERIOD)'(1);
591591
| end
@@ -882,7 +882,7 @@ class PrintVerilogCodeSpec extends StageSpec:
882882
| @(posedge i);
883883
| #50us;
884884
| x <= 1'b1;
885-
| wait(!i);
885+
| wait(~i);
886886
| #50ns;
887887
| x <= 1'b0;
888888
| #1ns;
@@ -1052,7 +1052,7 @@ class PrintVerilogCodeSpec extends StageSpec:
10521052
| #5ns;
10531053
| end
10541054
| while (1) begin
1055-
| x <= !b;
1055+
| x <= ~b;
10561056
| #5ns;
10571057
| end
10581058
| end

lib/src/test/resources/ref/docExamples.BlinkerSpec/verilog.sv2009/hdl/Blinker.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ module Blinker#(
2525
else begin
2626
if (cnt == $clog2(HALF_PERIOD)'(HALF_PERIOD - 1)) begin
2727
cnt <= $clog2(HALF_PERIOD)'(0);
28-
led <= !led;
28+
led <= ~led;
2929
end
3030
else cnt <= cnt + $clog2(HALF_PERIOD)'(1);
3131
end

lib/src/test/resources/ref/docExamples.BlinkerSpec/verilog.v2001/hdl/Blinker.v

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ module Blinker#(
2626
else begin
2727
if (cnt == (HALF_PERIOD - 1)) begin
2828
cnt <= `TO_UNSIGNED(0, 1, clog2(HALF_PERIOD));
29-
led <= !led;
29+
led <= ~led;
3030
end
3131
else cnt <= cnt + `TO_UNSIGNED(1, 1, clog2(HALF_PERIOD));
3232
end

lib/src/test/resources/ref/docExamples.BlinkerSpec/verilog.v95/hdl/Blinker.v

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ module Blinker(
2828
else begin
2929
if (cnt == (HALF_PERIOD - 1)) begin
3030
cnt <= `TO_UNSIGNED(0, 1, clog2(HALF_PERIOD));
31-
led <= !led;
31+
led <= ~led;
3232
end
3333
else cnt <= cnt + `TO_UNSIGNED(1, 1, clog2(HALF_PERIOD));
3434
end

0 commit comments

Comments
 (0)