jinja2模板的循环,第一个或最后一个要特殊处理?
专栏:ExASIC Sept. 30, 2024, 5:17 p.m. 19 阅读
用jinja2模板的循环,来特殊处理第一个或最后一个

在jinja2的模板循环里可以对第一个或者最后一个做特殊处理,用loop.firstloop.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.firstloop.last,还有loop.indexloop.index0loop.length分别表示“1开始的序号”、“0开始的序号”、“总个数”。

感谢阅读,更多文章点击这里:【专栏:ExASIC】