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

Submodules

hdlConvertorAst.to.common module

class hdlConvertorAst.to.common.ASSOCIATIVITY[source]

Bases: enum.Enum

An enumeration.

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

Bases: hdlConvertorAst.to.hdl_ast_visitor.HdlAstVisitor

ALL_UNARY_OPS = {<HdlOpType.PLUS_UNARY: 1>, <HdlOpType.NAND_UNARY: 26>, <HdlOpType.NOR_UNARY: 27>, <HdlOpType.AND_UNARY: 25>, <HdlOpType.XOR_UNARY: 28>, <HdlOpType.OR_UNARY: 24>, <HdlOpType.MINUS_UNARY: 0>, <HdlOpType.XNOR_UNARY: 29>}
GENERIC_BIN_OPS = {<HdlOpType.ADD: 3>: ' + ', <HdlOpType.SUB: 2>: ' - ', <HdlOpType.MUL: 5>: ' * ', <HdlOpType.LT: 40>: ' < ', <HdlOpType.LE: 41>: ' <= ', <HdlOpType.GT: 42>: ' > ', <HdlOpType.GE: 43>: ' >= ', <HdlOpType.DOT: 55>: '.'}
GENERIC_UNARY_OPS = {<HdlOpType.PLUS_UNARY: 1>: '+', <HdlOpType.MINUS_UNARY: 0>: '-'}
GENERIC_UNARY_OPS_POSTFIX = {}
INDENT_STEP = ' '
__init__(out_stream)[source]

Initialize self. See help(type(self)) for accurate signature.

_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]

Initialize self. See help(type(self)) for accurate signature.

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

Bases: object

unindentation context

__init__(autoIndentStream)[source]

Initialize self. See help(type(self)) for accurate signature.

hdlConvertorAst.to.hdlUtils.bit_string(v, width, vld_mask=None)[source]
Parameters:
  • v (int) – integer value of bitstring
  • widht – number of bits in value
  • vld_mask (Optional[int]) – mask which has 1 for every valid bit in value
Returns:

HdlValueInt

hdlConvertorAst.to.hdlUtils.iter_with_last(it)[source]

hdlConvertorAst.to.hdl_ast_modifier module

class hdlConvertorAst.to.hdl_ast_modifier.HdlAstModifier[source]

Bases: hdlConvertorAst.to.hdl_ast_visitor.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]

Initialize self. See help(type(self)) for accurate signature.

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: hdlConvertorAst.to.hdl_ast_visitor.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_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: hdlConvertorAst.to.json.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