vivado tcl 常见问题
module top();
reg a, b;
generate
begin: ts_gen
for (i = 0; i < 4; i = i + 1)
begin: ts_gen_for
ts u_ts (
......
);
end
end
endgenerate
endmodule
# --------------------------------------------------
module ts();
....
generate
begin: cnt_gen
if (parameter == "A") begin: cnt_gen_A
...
end
else if (parameter == "B") begin: cnt_gen_B
...
end
end
endmodule
在vivado的tcl中通过
get_objects
objects 很玄学,比如这个路径
/u_top/ts_gen.ts_gen_for[2].u_ts/cnt_gen.cnt_gen.u_counter
上述路径分割成几个部分
u_top #不涉及begin命名块,开头不加\,结尾不加空格
\ts_gen.ts_gen_for[2].u_ts #涉及begin命名块,开头加\,结尾加空格,块内用.做分隔符连接
\cnt_gen.cnt_gen.u_counter #涉及begin命名块,开头加\,结尾加空格,块内用.做分隔符连接
generate块里例化的实例最后都是空格结尾,且不能省!!!上述三个部分通过分隔符/链接即
get_objects {/u_top/\ts_gen.ts_gen_for[2].u_ts /\cnt_gen.cnt_gen.u_counter }
如果传入变量i进行索引,由于[]和\在双引号块内需要转义,因此添加 \ 进行转义
set i 2
get_objects "/u_top/\\ts_gen.ts_gen_for\[$i\].u_ts /\\cnt_gen.cnt_gen.u_counter "
作者:odjvnrij 创建时间:2024-12-27 17:52
最后编辑:odjvnrij 更新时间:2024-12-28 15:30
最后编辑:odjvnrij 更新时间:2024-12-28 15:30