mirror of https://github.com/zachjs/sv2v.git
pack sliced arrays (resolves #78)
This commit is contained in:
parent
f44e3e808a
commit
c03dba096f
|
|
@ -85,7 +85,10 @@ traverseStmtM stmt =
|
||||||
traverseStmtAsgnsM traverseAsgnM
|
traverseStmtAsgnsM traverseAsgnM
|
||||||
|
|
||||||
traverseExprM :: Expr -> ST Expr
|
traverseExprM :: Expr -> ST Expr
|
||||||
traverseExprM = return
|
traverseExprM (Range (Ident x) mode i) = do
|
||||||
|
flatUsageM x
|
||||||
|
return $ Range (Ident x) mode i
|
||||||
|
traverseExprM other = return other
|
||||||
|
|
||||||
traverseLHSM :: LHS -> ST LHS
|
traverseLHSM :: LHS -> ST LHS
|
||||||
traverseLHSM (LHSIdent x) = do
|
traverseLHSM (LHSIdent x) = do
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
module foo(clock, data);
|
module Producer(clock, data);
|
||||||
|
parameter INIT = 0;
|
||||||
input logic clock;
|
input logic clock;
|
||||||
output logic [10:0] data [5];
|
output logic [10:0] data [5];
|
||||||
initial data[0][0] = 0;
|
initial data[0][0] = INIT;
|
||||||
always @(clock) begin
|
always @(clock) begin
|
||||||
integer i, j;
|
integer i, j;
|
||||||
for (i = 4; i >= 0; i--) begin
|
for (i = 4; i >= 0; i--) begin
|
||||||
|
|
@ -16,17 +17,24 @@ module foo(clock, data);
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
module top;
|
module top;
|
||||||
logic [10:0] data [5];
|
|
||||||
reg clock;
|
reg clock;
|
||||||
foo f(clock, data);
|
|
||||||
|
|
||||||
initial begin
|
initial begin
|
||||||
clock = 1;
|
clock = 1;
|
||||||
repeat (100)
|
repeat (100)
|
||||||
#1 clock = ~clock;
|
#1 clock = ~clock;
|
||||||
end
|
end
|
||||||
|
|
||||||
initial begin : foo
|
logic [10:0] foo [5];
|
||||||
$monitor("%d %b%b%b%b%b", $time, data[0], data[1], data[2], data[3], data[4]);
|
Producer #(.INIT(0)) p1(clock, foo);
|
||||||
end
|
|
||||||
|
logic [10:0] bar [10];
|
||||||
|
Producer #(.INIT(0)) p2(clock, bar[0:4]);
|
||||||
|
Producer #(.INIT(1)) p3(clock, bar[5:9]);
|
||||||
|
|
||||||
|
initial
|
||||||
|
$monitor("%d %b%b%b%b%b %b%b%b%b%b%b%b%b%b%b", $time,
|
||||||
|
foo[0], foo[1], foo[2], foo[3], foo[4],
|
||||||
|
bar[0], bar[1], bar[2], bar[3], bar[4],
|
||||||
|
bar[5], bar[6], bar[7], bar[8], bar[9]
|
||||||
|
);
|
||||||
endmodule
|
endmodule
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
module foo(clock, data);
|
module Producer(clock, data);
|
||||||
|
parameter INIT = 0;
|
||||||
input clock;
|
input clock;
|
||||||
output reg [54:0] data;
|
output reg [54:0] data;
|
||||||
initial data[11*4] = 0;
|
initial data[11*4] = INIT;
|
||||||
always @(clock) begin : block_name
|
always @(clock) begin : block_name
|
||||||
integer i, j;
|
integer i, j;
|
||||||
for (i = 4; i >= 0; i--) begin
|
for (i = 4; i >= 0; i--) begin
|
||||||
|
|
@ -16,17 +17,20 @@ module foo(clock, data);
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
module top;
|
module top;
|
||||||
wire [54:0] data;
|
|
||||||
reg clock;
|
reg clock;
|
||||||
foo f(clock, data);
|
|
||||||
|
|
||||||
initial begin
|
initial begin
|
||||||
clock = 1;
|
clock = 1;
|
||||||
repeat (100)
|
repeat (100)
|
||||||
#1 clock = ~clock;
|
#1 clock = ~clock;
|
||||||
end
|
end
|
||||||
|
|
||||||
initial begin : foo
|
wire [54:0] foo;
|
||||||
$monitor("%d %b", $time, data);
|
Producer #(.INIT(0)) p1(clock, foo);
|
||||||
end
|
|
||||||
|
wire [109:0] bar;
|
||||||
|
Producer #(.INIT(0)) p2(clock, bar[54:0]);
|
||||||
|
Producer #(.INIT(1)) p3(clock, bar[109:55]);
|
||||||
|
|
||||||
|
initial
|
||||||
|
$monitor("%d %b %b", $time, foo, bar);
|
||||||
endmodule
|
endmodule
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue