mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-07 01:54:10 +00:00
Bugfix in name resolution with generate blocks
This commit is contained in:
parent
672229eda5
commit
4df7e03ec9
|
@ -1478,7 +1478,7 @@ void AstNode::expand_genblock(std::string index_var, std::string prefix, std::ma
|
||||||
|
|
||||||
for (size_t i = 0; i < children.size(); i++) {
|
for (size_t i = 0; i < children.size(); i++) {
|
||||||
AstNode *child = children[i];
|
AstNode *child = children[i];
|
||||||
if (child->type != AST_FUNCTION && child->type != AST_TASK)
|
if (child->type != AST_FUNCTION && child->type != AST_TASK && child->type != AST_PREFIX)
|
||||||
child->expand_genblock(index_var, prefix, name_map);
|
child->expand_genblock(index_var, prefix, name_map);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
24
tests/simple/carryadd.v
Normal file
24
tests/simple/carryadd.v
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
module carryadd(a, b, y);
|
||||||
|
|
||||||
|
parameter WIDTH = 8;
|
||||||
|
|
||||||
|
input [WIDTH-1:0] a, b;
|
||||||
|
output [WIDTH-1:0] y;
|
||||||
|
|
||||||
|
genvar i;
|
||||||
|
generate
|
||||||
|
for (i = 0; i < WIDTH; i = i+1) begin:STAGE
|
||||||
|
wire IN1 = a[i], IN2 = b[i];
|
||||||
|
wire C, Y;
|
||||||
|
if (i == 0)
|
||||||
|
assign C = IN1 & IN2, Y = IN1 ^ IN2;
|
||||||
|
else
|
||||||
|
assign C = (IN1 & IN2) | ((IN1 | IN2) & STAGE[i-1].C),
|
||||||
|
Y = IN1 ^ IN2 ^ STAGE[i-1].C;
|
||||||
|
assign y[i] = Y;
|
||||||
|
end
|
||||||
|
endgenerate
|
||||||
|
|
||||||
|
// assert property (y == a + b);
|
||||||
|
|
||||||
|
endmodule
|
Loading…
Reference in a new issue