hdlConvertorAst.to package

This package contains the classes which do convert hdlConvertorAst.hdlAst to a target language (e.g. Verilog/SystemVerilog/VHDL)

note:

The convertors in this package do not modify the AST itself, if the input comes from a different language. It may be required to translate the AST first using e.g. hdlConvertorAst.translate.

../../doc/uml_images/classes_hdlConvertorAst.to.png ../../doc/uml_images/packages_hdlConvertorAst.to.png

Subpackages

Submodules

hdlConvertorAst.to.common module

class hdlConvertorAst.to.common.ASSOCIATIVITY(*values)[source]

Bases: Enum

L_TO_R = 'L_TO_R'
NONE = 'NONE'
R_TO_L = 'R_TO_L'
class hdlConvertorAst.to.common.ToHdlCommon(out_stream)[source]

Bases: HdlAstVisitor

ALL_UNARY_OPS = {HdlOpType.AND_UNARY, HdlOpType.MINUS_UNARY, HdlOpType.NAND_UNARY, HdlOpType.NOR_UNARY, HdlOpType.OR_UNARY, HdlOpType.PLUS_UNARY, HdlOpType.XNOR_UNARY, HdlOpType.XOR_UNARY}
GENERIC_BIN_OPS = {HdlOpType.ADD: ' + ', HdlOpType.DOT: '.', HdlOpType.GE: ' >= ', HdlOpType.GT: ' > ', HdlOpType.LE: ' <= ', HdlOpType.LT: ' < ', HdlOpType.MUL: ' * ', HdlOpType.SUB: ' - '}
GENERIC_UNARY_OPS = {HdlOpType.MINUS_UNARY: '-', HdlOpType.PLUS_UNARY: '+'}
GENERIC_UNARY_OPS_POSTFIX = {}
INDENT_STEP = '    '
__init__(out_stream)[source]
_precedence_of_expr(o)[source]
_visit_bin_op(operator, op_str, expr_requires_parenthesis=False, cancel_parenthesis=False)[source]
_visit_operand(operand, i, parent, expr_requires_parenthesis, cancel_parenthesis)[source]
_visit_operand_parentheses_extra_check(op_my, precedence_my, asoc_my, op_parent, precedence_parent, asoc_parent, left, right)[source]
_visit_operator_index(operator)[source]
visit_HdlFunctionDef(o)[source]
visit_HdlOp(op)[source]
visit_HdlStmAssign(o)[source]
visit_HdlStmBlock(o)[source]
visit_HdlStmBreak(o)[source]
visit_HdlStmCase(o)[source]
visit_HdlStmContinue(o)[source]
visit_HdlStmFor(o)[source]
visit_HdlStmForIn(o)[source]
visit_HdlStmIf(o)[source]
visit_HdlStmProcess(o)[source]
visit_HdlStmRepeat(o)[source]
visit_HdlStmReturn(o)[source]
visit_HdlStmWait(o)[source]
visit_HdlStmWhile(o)[source]
visit_doc(obj, line_comment_prefix)[source]

Format doc as line comments

visit_iHdlExpr(o)[source]
visit_operator_call(o)[source]

hdlConvertorAst.to.hdlUtils module

class hdlConvertorAst.to.hdlUtils.AutoIndentingStream(stream, indent_step)[source]

Bases: object

__init__(stream, indent_step)[source]
Parameters:
  • stream – output stream

  • indent_step – string of indent

close()[source]
write(s)[source]
class hdlConvertorAst.to.hdlUtils.Indent(autoIndentStream)[source]

Bases: object

indentation context

__init__(autoIndentStream)[source]
class hdlConvertorAst.to.hdlUtils.UnIndent(autoIndentStream)[source]

Bases: object

unindentation context

__init__(autoIndentStream)[source]
hdlConvertorAst.to.hdlUtils._mask_fits_hex(width: int, vld_mask: int | None)[source]
hdlConvertorAst.to.hdlUtils.bit_string(v: int, width: int, vld_mask: int | None = None)[source]
Parameters:
  • v – integer value of bitstring

  • width – number of bits in value

  • vld_mask – mask which has 1 for every valid bit in value

Returns:

HdlValueInt

hdlConvertorAst.to.hdlUtils.iter_with_last(it)[source]
hdlConvertorAst.to.hdlUtils.to_unsigned(val: int, width: int) int[source]

hdlConvertorAst.to.hdl_ast_modifier module

class hdlConvertorAst.to.hdl_ast_modifier.HdlAstModifier[source]

Bases: HdlAstVisitor

A visitor which can be used to traverse and modyfy AST (Abstract Syntax Tree) made of objects from hdlConvertorAst.hdlAst module. Each visit function has to return the object which replaces current object It should return the same object if no change is required.

visit_HdlClassDef(o)[source]
visit_HdlCompInst(o)[source]
visit_HdlContext(context)[source]
visit_HdlEnumDef(o)[source]
visit_HdlFunctionDef(o)[source]
visit_HdlIdDef(o)[source]
visit_HdlModuleDec(o)[source]
visit_HdlModuleDef(o)[source]
visit_HdlOp(o)[source]
Returns:

iHdlExpr

visit_HdlPhysicalDef(o)[source]
visit_HdlStmAssign(o)[source]
visit_HdlStmBlock(o)[source]
visit_HdlStmCase(o)[source]
visit_HdlStmFor(o)[source]
visit_HdlStmForIn(o)[source]
visit_HdlStmIf(o)[source]
visit_HdlStmProcess(o)[source]
visit_HdlStmRepeat(o)[source]
visit_HdlStmReturn(o)[source]
visit_HdlStmWait(o)[source]
visit_HdlStmWhile(o)[source]
visit_HdlValueIdspace(o)[source]
visit_HdlValueInt(o)[source]
visit_iHdlExpr(o)[source]
Returns:

iHdlExpr

visit_iHdlObj_list(obj_list, visit_fn)[source]
Variables:
  • obj_list – list of HDL objects

  • visit_fn – function to modidify the object

visit_param(o)[source]
visit_port(o)[source]

hdlConvertorAst.to.hdl_ast_visitor module

class hdlConvertorAst.to.hdl_ast_visitor.HdlAstVisitor[source]

Bases: object

A visitor which can be used to traverse AST (Abstract Syntax Tree) made of objects from hdlConvertorAst.hdlAst module.

__init__()[source]
visit_HdlClassDef(o)[source]
visit_HdlCompInst(o)[source]
visit_HdlContext(context)[source]
visit_HdlEnumDef(o)[source]
visit_HdlFunctionDef(o)[source]
visit_HdlIdDef(o)[source]
visit_HdlImport(o)[source]
visit_HdlLibrary(o)[source]
visit_HdlModuleDec(o)[source]
visit_HdlModuleDef(o)[source]
visit_HdlOp(o)[source]
Returns:

iHdlExpr

visit_HdlPhysicalDef(o)[source]
visit_HdlStmAssign(o)[source]
visit_HdlStmBlock(o)[source]
visit_HdlStmBreak(o)[source]
visit_HdlStmCase(o)[source]
visit_HdlStmContinue(o)[source]
visit_HdlStmFor(o)[source]
visit_HdlStmForIn(o)[source]
visit_HdlStmIf(o)[source]
visit_HdlStmNop(o)[source]
visit_HdlStmProcess(o)[source]
visit_HdlStmRepeat(o)[source]
visit_HdlStmReturn(o)[source]
visit_HdlStmThrow(o)[source]
visit_HdlStmWait(o)[source]
visit_HdlStmWhile(o)[source]
visit_HdlValueIdspace(o)[source]
visit_HdlValueInt(o)[source]
visit_doc(o)[source]
visit_iHdlExpr(o)[source]
Returns:

iHdlExpr

visit_iHdlObj(o)[source]
visit_iHdlStatement(o)[source]
visit_main_obj(o)[source]
visit_param(o)[source]
visit_port(o)[source]
visit_type(t)[source]

hdlConvertorAst.to.json module

class hdlConvertorAst.to.json.ToJson[source]

Bases: HdlAstVisitor

_visit_iHdlStatement(o)[source]
visit_CodePosition(o)[source]
visit_HdlClassDef(o)[source]
visit_HdlCompInst(o)[source]
visit_HdlContext(context)[source]
visit_HdlDirection(o)[source]
visit_HdlEnumDef(o)[source]
visit_HdlFunctionDef(o)[source]
visit_HdlIdDef(o)[source]
visit_HdlImport(o)[source]
visit_HdlLibrary(o)[source]
visit_HdlModuleDec(o)[source]
visit_HdlModuleDef(o)[source]
visit_HdlOp(o)[source]
Returns:

iHdlExpr

visit_HdlPhysicalDef(o)[source]
visit_HdlStmAssign(o)[source]
visit_HdlStmBlock(o)[source]
visit_HdlStmBlockJoinType(o)[source]
visit_HdlStmBreak(o)[source]
visit_HdlStmCase(o)[source]
Returns:

True if requires ;n after end

visit_HdlStmContinue(o)[source]
visit_HdlStmFor(o)[source]
visit_HdlStmForIn(o)[source]
visit_HdlStmIf(o)[source]
visit_HdlStmNop(o)[source]
visit_HdlStmProcess(o)[source]
visit_HdlStmRepeat(o)[source]
visit_HdlStmReturn(o)[source]
visit_HdlStmThrow(o)[source]
visit_HdlStmWait(o)[source]
visit_HdlStmWhile(o)[source]
visit_HdlValueIdspace(o)[source]
visit_HdlValueInt(o)[source]
visit_hdlAttributes(o)[source]
visit_iHdlExpr(o)[source]
Returns:

iHdlExpr

visit_iHdlObj(o)[source]
visit_iHdlObjWithName(o)[source]

hdlConvertorAst.to.json_debug module

class hdlConvertorAst.to.json_debug.ToJsonDebug[source]

Bases: ToJson

HdlConverto AST -> json (dict/list/str/int/None composed object) An invalid object are converted to str using its __repr__()

visit_HdlDirection(o)[source]
visit_HdlIdDef(o)[source]
visit_iHdlExpr(o)[source]
Returns:

iHdlExpr