From d32c0a1b096896fcf8e07d6259b80a004a71c4ef Mon Sep 17 00:00:00 2001 From: Zachary Snow Date: Thu, 1 Jul 2021 23:17:08 -0400 Subject: [PATCH] convert logics with initial values to regs, not wires --- src/Convert/Logic.hs | 2 +- test/core/const.v | 2 +- test/core/foreach.v | 2 +- test/core/inside_expr.v | 3 +-- test/core/interface_nested.v | 2 +- test/core/interface_task.v | 4 ++-- test/core/large_mux.v | 2 +- test/core/struct_integer.v | 2 +- test/core/struct_unit_array.v | 2 +- test/core/unbased_unsized.v | 2 +- 10 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/Convert/Logic.hs b/src/Convert/Logic.hs index ef9bb67..e912500 100644 --- a/src/Convert/Logic.hs +++ b/src/Convert/Logic.hs @@ -172,7 +172,7 @@ rewriteDeclM (Variable d t x a e) = do let location = map accessName accesses usedAsReg <- lift $ gets $ Set.member location blockLogic <- withinProcedureM - if usedAsReg || blockLogic + if usedAsReg || blockLogic || e /= Nil then do let dir = if d == Inout then Output else d return (dir, IntegerVector TReg sg rs) diff --git a/test/core/const.v b/test/core/const.v index 5260934..9425a30 100644 --- a/test/core/const.v +++ b/test/core/const.v @@ -1,5 +1,5 @@ module top; integer w = 11; - wire [63:0] x = { 32'd11, 32'd12 }; + reg [63:0] x = { 32'd11, 32'd12 }; initial $display("%b %b %b %b", w, x, x[32+:32], x[0+:32]); endmodule diff --git a/test/core/foreach.v b/test/core/foreach.v index 468e835..18ff5dc 100644 --- a/test/core/foreach.v +++ b/test/core/foreach.v @@ -1,5 +1,5 @@ module top; - wire [7:0] foo = {2'b10,2'b01,2'b11,2'b00}; + reg [7:0] foo = {2'b10,2'b01,2'b11,2'b00}; initial begin : f integer x; for (x = 0; x <= 3; x = x + 1) diff --git a/test/core/inside_expr.v b/test/core/inside_expr.v index 65ed4a7..daf0805 100644 --- a/test/core/inside_expr.v +++ b/test/core/inside_expr.v @@ -49,8 +49,7 @@ module top; $display("test1: %b %b", 3'b0z1, test1(3'b0z1)); end - wire [0:2][31:0] arr; - assign arr = { 32'd60, 32'd61, 32'd63 }; + reg [0:2][31:0] arr = { 32'd60, 32'd61, 32'd63 }; function test2; input integer inp; integer i; diff --git a/test/core/interface_nested.v b/test/core/interface_nested.v index 22bf9d1..0737a86 100644 --- a/test/core/interface_nested.v +++ b/test/core/interface_nested.v @@ -1,5 +1,5 @@ module top; - wire x = 1; + reg x = 1; generate if (1) begin : f wire x; diff --git a/test/core/interface_task.v b/test/core/interface_task.v index 637f5f4..e7defd6 100644 --- a/test/core/interface_task.v +++ b/test/core/interface_task.v @@ -3,8 +3,8 @@ module top; input reg [31:0] i; $display("I x(%0d)", i); endtask - wire [31:0] w = 31; - wire [31:0] y = 42; + reg [31:0] w = 31; + reg [31:0] y = 42; task x; input reg [31:0] a, b; $display("x('{%0d, %0d})", a, b); diff --git a/test/core/large_mux.v b/test/core/large_mux.v index 51579bd..0406250 100644 --- a/test/core/large_mux.v +++ b/test/core/large_mux.v @@ -1,7 +1,7 @@ module top; parameter SVO_MODE = "768x576"; `include "large_mux.vh" - wire [31:0] DOUBLE_SVO_HOR_PIXELS = 2 * SVO_HOR_PIXELS; + reg [31:0] DOUBLE_SVO_HOR_PIXELS = 2 * SVO_HOR_PIXELS; initial begin $display("%s", SVO_MODE); $display("%d", SVO_HOR_PIXELS); diff --git a/test/core/struct_integer.v b/test/core/struct_integer.v index 31cf607..62de632 100644 --- a/test/core/struct_integer.v +++ b/test/core/struct_integer.v @@ -1,4 +1,4 @@ module top; - wire [32*3-1:0] s = {32'd1, 32'd2, 32'd3}; + reg [32*3-1:0] s = {32'd1, 32'd2, 32'd3}; initial #1 $display("%b %b %b %b", s, s[64+:32], s[32+:32], s[0+:32]); endmodule diff --git a/test/core/struct_unit_array.v b/test/core/struct_unit_array.v index 2be10fc..9ed2166 100644 --- a/test/core/struct_unit_array.v +++ b/test/core/struct_unit_array.v @@ -1,4 +1,4 @@ module top; - wire [2:0] s = 3'b110; + reg [2:0] s = 3'b110; initial #1 $display("%b", s); endmodule diff --git a/test/core/unbased_unsized.v b/test/core/unbased_unsized.v index 7d64aa4..9a84c86 100644 --- a/test/core/unbased_unsized.v +++ b/test/core/unbased_unsized.v @@ -1,5 +1,5 @@ `define TEST(value) \ - wire [63:0] val_``value = {64{1'b``value}}; \ + reg [63:0] val_``value = {64{1'b``value}}; \ initial $display(`"'value -> %b (%0d) %b (%0d)`", \ val_``value, $bits(val_``value), \ 1'b``value, $bits(1'b``value) \