Commit c03dba09 by Zachary Snow

pack sliced arrays (resolves #78)

parent f44e3e80
......@@ -85,7 +85,10 @@ traverseStmtM stmt =
traverseStmtAsgnsM traverseAsgnM
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 (LHSIdent x) = do
......
module foo(clock, data);
module Producer(clock, data);
parameter INIT = 0;
input logic clock;
output logic [10:0] data [5];
initial data[0][0] = 0;
initial data[0][0] = INIT;
always @(clock) begin
integer i, j;
for (i = 4; i >= 0; i--) begin
......@@ -16,17 +17,24 @@ module foo(clock, data);
endmodule
module top;
logic [10:0] data [5];
reg clock;
foo f(clock, data);
initial begin
clock = 1;
repeat (100)
#1 clock = ~clock;
end
initial begin : foo
$monitor("%d %b%b%b%b%b", $time, data[0], data[1], data[2], data[3], data[4]);
end
logic [10:0] foo [5];
Producer #(.INIT(0)) p1(clock, foo);
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
module foo(clock, data);
module Producer(clock, data);
parameter INIT = 0;
input clock;
output reg [54:0] data;
initial data[11*4] = 0;
initial data[11*4] = INIT;
always @(clock) begin : block_name
integer i, j;
for (i = 4; i >= 0; i--) begin
......@@ -16,17 +17,20 @@ module foo(clock, data);
endmodule
module top;
wire [54:0] data;
reg clock;
foo f(clock, data);
initial begin
clock = 1;
repeat (100)
#1 clock = ~clock;
end
initial begin : foo
$monitor("%d %b", $time, data);
end
wire [54:0] foo;
Producer #(.INIT(0)) p1(clock, foo);
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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment