pycaliper.frontend package
Submodules
pycaliper.frontend.genericpass module
PyCaliper
Author: Adwait Godbole, UC Berkeley
File: frontend/genericpass.py
Abstract pass class for pass-based compilation infrastructure.
pycaliper.frontend.parsetab module
pycaliper.frontend.pycast module
PyCaliper
Author: Adwait Godbole, UC Berkeley
File: frontend/pycast.py
AST for representing frontend format
- class pycaliper.frontend.pycast.ASTDimension(start, end)
Bases:
PAST
Dimensions of a signal declaration
- get_plain_width()
- class pycaliper.frontend.pycast.ASTExpr(children=[])
Bases:
PAST
- get_plain_identifier_name()
- get_plain_numeric_literal()
- class pycaliper.frontend.pycast.ASTIdentifier(path, rng=None, datatype=None)
Bases:
ASTExpr
- add_datatype(datatype)
Adds a datatype to the identifier. In place operation.
- add_level(ident)
- add_level_index(index)
- is_this()
Is this identifier the ‘this’ Caliper keyword?
- Return type:
bool
- select_range(rng)
- class pycaliper.frontend.pycast.ASTModBlock(stmts)
Bases:
ASTModStmt
- class pycaliper.frontend.pycast.ASTModEq(exprs)
Bases:
ASTModStmt
define in a global context in a module
- class pycaliper.frontend.pycast.ASTModIf(cond, innerstmt)
Bases:
ASTModStmt
if statement macro
- class pycaliper.frontend.pycast.ASTModInput(innerstmt)
Bases:
ASTModStmt
- class pycaliper.frontend.pycast.ASTModInstance(name, subm, args)
Bases:
ASTModStmt
- class pycaliper.frontend.pycast.ASTModInv(name, expr)
Bases:
ASTModStmt
- class pycaliper.frontend.pycast.ASTModOutput(innerstmt)
Bases:
ASTModStmt
- class pycaliper.frontend.pycast.ASTModOutputState(innerstmt)
Bases:
ASTModStmt
- class pycaliper.frontend.pycast.ASTModState(innerstmt)
Bases:
ASTModStmt
- class pycaliper.frontend.pycast.ASTOp(value)
Bases:
Enum
- Add = 23
- ArithmeticShiftLeft = 22
- ArithmeticShiftRight = 21
- BinaryAnd = 5
- BinaryOr = 4
- BinaryXnor = 7
- BinaryXor = 6
- CaseEquality = 11
- CaseInequality = 12
- Div = 26
- Equality = 9
- GreaterThan = 17
- GreaterThanEqual = 18
- ITE = 40
- Inequality = 10
- LessThan = 15
- LessThanEqual = 16
- LogicalAnd = 2
- LogicalEquivalence = 39
- LogicalImplication = 38
- LogicalOr = 3
- LogicalShiftLeft = 20
- LogicalShiftRight = 19
- Mod = 27
- Mul = 25
- Power = 28
- Sub = 24
- UnaryBitwiseAnd = 31
- UnaryBitwiseNand = 35
- UnaryBitwiseNor = 36
- UnaryBitwiseNot = 34
- UnaryBitwiseOr = 32
- UnaryBitwiseXnor = 37
- UnaryBitwiseXor = 33
- UnaryLogicalNot = 1
- UnaryMinus = 30
- UnaryPlus = 29
- WildcardEquality = 13
- WildcardInequality = 14
- class pycaliper.frontend.pycast.ASTRangeIndex(start=None, end=None, step=':')
Bases:
PAST
Range index
- class pycaliper.frontend.pycast.ASTTopDeclModule(name, args, stmts)
Bases:
ASTTopDecl
- class pycaliper.frontend.pycast.ASTTopDeclParameter(name)
Bases:
ASTTopDecl
- class pycaliper.frontend.pycast.ASTTopDeclSpec(name, args, stmts)
Bases:
ASTTopDecl
- class pycaliper.frontend.pycast.ASTTopDeclStruct(name, args, stmts)
Bases:
ASTTopDecl
- class pycaliper.frontend.pycast.ASTType(name, args, dims=[])
Bases:
PAST
- add_dimension(dim)
Adds a dimension to the type. Returns a fresh object.
- is_dimensioned()
- is_logic()
- class pycaliper.frontend.pycast.PAST(children=[])
Bases:
object
pycaliper.frontend.pycgen module
- class pycaliper.frontend.pycgen.PYCGenPass
Bases:
GenericPass
- evaluate_index(index)
- generate_module_repr()
- generate_struct_repr()
- increment_loop_iterator()
- pop_loop_scope()
- push_loop_scope(loopvar)
- reset()
- run(decls)
- type_to_pyc_repr(dt)
- visit_ASTBlock(node)
- visit_ASTCondEq(node)
- visit_ASTEq(node)
- visit_ASTForLoop(node)
- visit_ASTFunctionCall(node)
- visit_ASTIdentifier(node)
- visit_ASTInv(node)
- visit_ASTModBlock(node)
- visit_ASTModEq(node)
- visit_ASTModIf(node)
- visit_ASTModInput(node)
- visit_ASTModInstance(node)
- visit_ASTModInv(node)
- visit_ASTModOutput(node)
- visit_ASTModOutputState(node)
- visit_ASTModState(node)
- visit_ASTNumber(node)
- visit_ASTOpApply(node)
- visit_ASTRangeIndex(node)
- class pycaliper.frontend.pycgen.TopDeclPass
Bases:
GenericPass
- run(ast)
- visit_ASTTopDeclModule(node)
- visit_ASTTopDeclStruct(node)
- pycaliper.frontend.pycgen.create_pyc_variable(name, index)
pycaliper.frontend.pyclex module
PyCaliper
Author: Adwait Godbole, UC Berkeley
File: frontend/pyclex.py
Lexer definitions based on PLY Lex
- pycaliper.frontend.pyclex.t_Ident(t)
- pycaliper.frontend.pyclex.t_LineComment(t)
//.*
- pycaliper.frontend.pyclex.t_Num(t)
- pycaliper.frontend.pyclex.t_error(t)
- pycaliper.frontend.pyclex.t_newline(t)
n+
pycaliper.frontend.pycparse module
PyCaliper
Author: Adwait Godbole, UC Berkeley
File: frontend/pycparse.py
Parser based on PLY Yacc
- pycaliper.frontend.pycparse.p_ArithmeticShiftLeft(p)
ArithmeticShiftLeft : LessThan LessThan LessThan
- pycaliper.frontend.pycparse.p_ArithmeticShiftRight(p)
ArithmeticShiftRight : GreaterThan GreaterThan GreaterThan
- pycaliper.frontend.pycparse.p_BinaryNand(p)
- BinaryNandTilde Amp
- Amp Tilde
- pycaliper.frontend.pycparse.p_BinaryNor(p)
- BinaryNorTilde Bar
- Bar Tilde
- pycaliper.frontend.pycparse.p_BinaryXnor(p)
- BinaryXnorTilde Carat
- Carat Tilde
- pycaliper.frontend.pycparse.p_CaseEquality(p)
CaseEquality : Equals Equals Equals
- pycaliper.frontend.pycparse.p_CaseInequality(p)
CaseInequality : Not Equals Equals
- pycaliper.frontend.pycparse.p_Equality(p)
Equality : Equals Equals
- pycaliper.frontend.pycparse.p_GreaterThanEqual(p)
GreaterThanEqual : GreaterThan Equals
- pycaliper.frontend.pycparse.p_Inequality(p)
Inequality : Not Equals
- pycaliper.frontend.pycparse.p_LessThanEqual(p)
LessThanEqual : LessThan Equals
- pycaliper.frontend.pycparse.p_LogicalAnd(p)
LogicalAnd : Amp Amp
- pycaliper.frontend.pycparse.p_LogicalEquivalence(p)
LogicalEquivalence : LessThan Minus GreaterThan
- pycaliper.frontend.pycparse.p_LogicalImplication(p)
LogicalImplication : Minus GreaterThan
- pycaliper.frontend.pycparse.p_LogicalOr(p)
LogicalOr : Bar Bar
- pycaliper.frontend.pycparse.p_LogicalShiftLeft(p)
LogicalShiftLeft : LessThan LessThan
- pycaliper.frontend.pycparse.p_LogicalShiftRight(p)
LogicalShiftRight : GreaterThan GreaterThan
- pycaliper.frontend.pycparse.p_MinusColon(p)
MinusColon : Minus Colon
- pycaliper.frontend.pycparse.p_PlusColon(p)
PlusColon : Plus Colon
- pycaliper.frontend.pycparse.p_Power(p)
Power : Star Star
- pycaliper.frontend.pycparse.p_WildcardEquality(p)
WildcardEquality : Equals Equals Question
- pycaliper.frontend.pycparse.p_WildcardInequality(p)
WildcardInequality : Not Equals Question
- pycaliper.frontend.pycparse.p_basetype_1(p)
basetype : KW_logic
- pycaliper.frontend.pycparse.p_basetype_2(p)
basetype : identifier ParenL expr_list ParenR
- pycaliper.frontend.pycparse.p_basetype_3(p)
basetype : identifier
- pycaliper.frontend.pycparse.p_caliper_declaration_1(p)
caliper_declaration : KW_spec identifier ParenL expr_list ParenR Semi caliper_statement_list KW_endspec
- pycaliper.frontend.pycparse.p_caliper_declaration_2(p)
caliper_declaration : KW_struct identifier ParenL expr_list ParenR Semi caliper_statement_list KW_endstruct
- pycaliper.frontend.pycparse.p_caliper_declaration_3(p)
caliper_declaration : KW_module identifier ParenL expr_list ParenR Semi caliper_mod_stmt_list KW_endmodule
- pycaliper.frontend.pycparse.p_caliper_declaration_4(p)
caliper_declaration : KW_parameter identifier Semi
- pycaliper.frontend.pycparse.p_caliper_declarations_1(p)
caliper_declarations : empty
- pycaliper.frontend.pycparse.p_caliper_declarations_2(p)
caliper_declarations : caliper_declaration caliper_declarations
- pycaliper.frontend.pycparse.p_caliper_loop_1(p)
caliper_loop : identifier LessThan expression
- pycaliper.frontend.pycparse.p_caliper_loop_list_p_1(p)
caliper_loop_list_p : caliper_loop
- pycaliper.frontend.pycparse.p_caliper_loop_list_p_2(p)
caliper_loop_list_p : caliper_loop_list_p Comma caliper_loop
- pycaliper.frontend.pycparse.p_caliper_mod_stmt_1(p)
caliper_mod_stmt : KW_input caliper_statement
- pycaliper.frontend.pycparse.p_caliper_mod_stmt_10(p)
caliper_mod_stmt : KW_submodule identifier ParenL expr_list ParenR identifier Semi
- pycaliper.frontend.pycparse.p_caliper_mod_stmt_2(p)
caliper_mod_stmt : KW_output caliper_statement
- pycaliper.frontend.pycparse.p_caliper_mod_stmt_3(p)
caliper_mod_stmt : KW_state caliper_statement
- pycaliper.frontend.pycparse.p_caliper_mod_stmt_4(p)
caliper_mod_stmt : KW_output KW_state caliper_statement
- pycaliper.frontend.pycparse.p_caliper_mod_stmt_5(p)
caliper_mod_stmt : KW_begin caliper_mod_stmt_list KW_end
- pycaliper.frontend.pycparse.p_caliper_mod_stmt_6(p)
caliper_mod_stmt : KW_if ParenL expression ParenR caliper_mod_stmt
- pycaliper.frontend.pycparse.p_caliper_mod_stmt_7(p)
caliper_mod_stmt : KW_def expr_list_p Semi
- pycaliper.frontend.pycparse.p_caliper_mod_stmt_8(p)
caliper_mod_stmt : KW_invariant identifier Colon expression Semi
- pycaliper.frontend.pycparse.p_caliper_mod_stmt_9(p)
caliper_mod_stmt : datatype primary1_list_p Semi
- pycaliper.frontend.pycparse.p_caliper_mod_stmt_list_1(p)
caliper_mod_stmt_list : caliper_mod_stmt
- pycaliper.frontend.pycparse.p_caliper_mod_stmt_list_2(p)
caliper_mod_stmt_list : caliper_mod_stmt caliper_mod_stmt_list
- pycaliper.frontend.pycparse.p_caliper_statement_1(p)
caliper_statement : KW_def expr_list_p Semi
- pycaliper.frontend.pycparse.p_caliper_statement_2(p)
caliper_statement : KW_invariant identifier Colon expression Semi
- pycaliper.frontend.pycparse.p_caliper_statement_3(p)
caliper_statement : datatype primary1_list_p Semi
- pycaliper.frontend.pycparse.p_caliper_statement_4(p)
caliper_statement : KW_begin caliper_statement_list KW_end
- pycaliper.frontend.pycparse.p_caliper_statement_5(p)
caliper_statement : KW_if ParenL expression ParenR caliper_statement
- pycaliper.frontend.pycparse.p_caliper_statement_6(p)
caliper_statement : KW_foreach ParenL caliper_loop_list_p ParenR caliper_statement
- pycaliper.frontend.pycparse.p_caliper_statement_list_1(p)
caliper_statement_list : empty
- pycaliper.frontend.pycparse.p_caliper_statement_list_2(p)
caliper_statement_list : caliper_statement_list_p
- pycaliper.frontend.pycparse.p_caliper_statement_list_p_1(p)
caliper_statement_list_p : caliper_statement
- pycaliper.frontend.pycparse.p_caliper_statement_list_p_2(p)
caliper_statement_list_p : caliper_statement caliper_statement_list_p
- pycaliper.frontend.pycparse.p_constant_range(p)
- part_select_rangeexpression Colon expression
- expression PlusColon expressionexpression MinusColon expression
- pycaliper.frontend.pycparse.p_datatype_1(p)
datatype : basetype
- pycaliper.frontend.pycparse.p_datatype_2(p)
datatype : datatype dimension
- pycaliper.frontend.pycparse.p_dimension_1(p)
dimension : BracketL expression BracketR
- pycaliper.frontend.pycparse.p_dimension_2(p)
dimension : BracketL expression Colon expression BracketR
- pycaliper.frontend.pycparse.p_empty(p)
empty :
- pycaliper.frontend.pycparse.p_error(p)
- pycaliper.frontend.pycparse.p_expr_list_1(p)
expr_list : empty
- pycaliper.frontend.pycparse.p_expr_list_2(p)
expr_list : expr_list_p
- pycaliper.frontend.pycparse.p_expr_list_p_1(p)
expr_list_p : expression
- pycaliper.frontend.pycparse.p_expr_list_p_2(p)
expr_list_p : expression Comma expr_list_p
- pycaliper.frontend.pycparse.p_expression(p)
expression : expression1
- pycaliper.frontend.pycparse.p_expression1_1(p)
expression1 : expression2
- pycaliper.frontend.pycparse.p_expression1_2(p)
- expression1expression2 LogicalImplication expression1
- expression2 LogicalEquivalence expression1
- pycaliper.frontend.pycparse.p_expression2_1(p)
expression2 : expression3
- pycaliper.frontend.pycparse.p_expression2_2(p)
expression2 : expression3 Question expression Colon expression2
- pycaliper.frontend.pycparse.p_expression3_1(p)
expression3 : expression4
- pycaliper.frontend.pycparse.p_expression3_2(p)
- expression3expression3 LogicalOr expression4
- expression3 LogicalAnd expression4expression3 Bar expression4expression3 Carat expression4expression3 BinaryXnor expression4expression3 Amp expression4expression3 Equality expression4expression3 Inequality expression4expression3 CaseEquality expression4expression3 CaseInequality expression4expression3 WildcardEquality expression4expression3 WildcardInequality expression4
- pycaliper.frontend.pycparse.p_expression4_1(p)
expression4 : expression5
- pycaliper.frontend.pycparse.p_expression4_2(p)
- expression4expression4 LessThan expression5
- expression4 LessThanEqual expression5expression4 GreaterThan expression5expression4 GreaterThanEqual expression5
- pycaliper.frontend.pycparse.p_expression5_1(p)
expression5 : expression6
- pycaliper.frontend.pycparse.p_expression5_2(p)
- expression5expression5 LogicalShiftRight expression6
- expression5 LogicalShiftLeft expression6expression5 ArithmeticShiftRight expression6expression5 ArithmeticShiftLeft expression6
- pycaliper.frontend.pycparse.p_expression6_1(p)
expression6 : expression7
- pycaliper.frontend.pycparse.p_expression6_2(p)
- expression6expression6 Plus expression7
- expression6 Minus expression7
- pycaliper.frontend.pycparse.p_expression7_1(p)
expression7 : expression8
- pycaliper.frontend.pycparse.p_expression7_2(p)
- expression7expression7 Star expression8
- expression7 Divide expression8expression7 Mod expression8expression7 Power expression8
- pycaliper.frontend.pycparse.p_expression8_1(p)
expression8 : primary
- pycaliper.frontend.pycparse.p_expression8_2(p)
- expression8Plus primary
- Minus primaryAmp primaryBinaryNand primaryBar primaryBinaryNor primaryCarat primaryBinaryXnor primaryNot primaryTilde primary
- pycaliper.frontend.pycparse.p_function_call(p)
function_call : identifier ParenL expr_list ParenR
- pycaliper.frontend.pycparse.p_identifier(p)
identifier : Ident
- pycaliper.frontend.pycparse.p_number(p)
number : Num
- pycaliper.frontend.pycparse.p_primary(p)
- primarynumber
- primary1function_callParenL expression ParenR
- pycaliper.frontend.pycparse.p_primary1_1(p)
primary1 : identifier
- pycaliper.frontend.pycparse.p_primary1_2(p)
primary1 : KW_this
- pycaliper.frontend.pycparse.p_primary1_3(p)
primary1 : primary1 Dot identifier
- pycaliper.frontend.pycparse.p_primary1_4(p)
primary1 : primary1 BracketL expression BracketR
- pycaliper.frontend.pycparse.p_primary1_5(p)
primary1 : primary1 BracketL part_select_range BracketR
- pycaliper.frontend.pycparse.p_primary1_list_p_1(p)
primary1_list_p : primary1
- pycaliper.frontend.pycparse.p_primary1_list_p_2(p)
primary1_list_p : primary1 Comma primary1_list_p