jinja2模板macro的使用
专栏:ExASIC Sept. 30, 2024, 4:55 p.m. 20 阅读
jinja2模板macro的使用的一个例子

定义一个jinja2模板宏macroport_with_width(name, msb, lsb))来处理verilog端口及位宽的拼接。当msb=0时,位宽是1,省略方括号。当msb>0,显式的加上[msb:lsb]

{% macro port_with_width(name, msb=0, lsb=0) -%}
  {%- if msb == 0 -%}
    {{ name }}
  {%- else -%}
    {{ name }}[{{ msb }}:{{ lsb }}]
  {%- endif -%}
{%- endmacro %}

这个宏定义好后,可以像函数一样用在其他模板里。下面是一个verilog例化脚本的例子。这个模板可以根据位宽来可选的加方括号。用了宏之后,再继续用filter函数就显得比较清晰。

.{{ port.name | left_align(20) }} ({{ port_with_width(port.name, port.msb, port.lsb) | left_align(20) }})
感谢阅读,更多文章点击这里:【专栏:ExASIC】