在jinja2的模板循环里可以对第一个或者最后一个做特殊处理,用loop.first
和loop.last
来指示迭代到哪里了。
下面是一个例子,verilog例化时,最后一个port不加逗号。
{%- for port in ports %}
.{{ port.name | left_align(20) }} ({{ port_with_width(port.name, port.msb, port.lsb) | left_align(20) }})
{%- if loop.last -%}
//{{ port.direction | dir_simple }}
{%- else -%}
, //{{ port.direction | dir_simple }}
{%- endif %}
{%- endfor %}
除了loop.first
和loop.last
,还有loop.index
、loop.index0
、loop.length
分别表示“1开始的序号”、“0开始的序号”、“总个数”。