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.

class pycaliper.frontend.genericpass.GenericPass(name, description)

Bases: object

generic_visit(node)
visit(node)

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.ASTBlock(stmts)

Bases: ASTStmt

class pycaliper.frontend.pycast.ASTCondEq(cond, stmt)

Bases: ASTStmt

class pycaliper.frontend.pycast.ASTDimension(start, end)

Bases: PAST

Dimensions of a signal declaration

get_plain_width()
class pycaliper.frontend.pycast.ASTEq(exprs)

Bases: ASTStmt

class pycaliper.frontend.pycast.ASTExpr(children=[])

Bases: PAST

get_plain_identifier_name()
get_plain_numeric_literal()
class pycaliper.frontend.pycast.ASTForLoop(loopvar, limit, stmt)

Bases: ASTStmt

class pycaliper.frontend.pycast.ASTFunctionCall(name, args)

Bases: ASTExpr

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.ASTInv(name, expr)

Bases: ASTStmt

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.ASTModStmt(children=[])

Bases: PAST

class pycaliper.frontend.pycast.ASTNumber(num, base='', width='')

Bases: ASTExpr

get_int_value()
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.ASTOpApply(op, args)

Bases: ASTExpr

class pycaliper.frontend.pycast.ASTRangeIndex(start=None, end=None, step=':')

Bases: PAST

Range index

class pycaliper.frontend.pycast.ASTStmt(nested=False, children=[])

Bases: PAST

make_nested()
class pycaliper.frontend.pycast.ASTTopDecl

Bases: PAST

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 expression
expression 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 expression4
expression3 Bar expression4
expression3 Carat expression4
expression3 BinaryXnor expression4
expression3 Amp expression4
expression3 Equality expression4
expression3 Inequality expression4
expression3 CaseEquality expression4
expression3 CaseInequality expression4
expression3 WildcardEquality expression4
expression3 WildcardInequality expression4
pycaliper.frontend.pycparse.p_expression4_1(p)

expression4 : expression5

pycaliper.frontend.pycparse.p_expression4_2(p)
expression4expression4 LessThan expression5
expression4 LessThanEqual expression5
expression4 GreaterThan expression5
expression4 GreaterThanEqual expression5
pycaliper.frontend.pycparse.p_expression5_1(p)

expression5 : expression6

pycaliper.frontend.pycparse.p_expression5_2(p)
expression5expression5 LogicalShiftRight expression6
expression5 LogicalShiftLeft expression6
expression5 ArithmeticShiftRight expression6
expression5 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 expression8
expression7 Mod expression8
expression7 Power expression8
pycaliper.frontend.pycparse.p_expression8_1(p)

expression8 : primary

pycaliper.frontend.pycparse.p_expression8_2(p)
expression8Plus primary
Minus primary
Amp primary
BinaryNand primary
Bar primary
BinaryNor primary
Carat primary
BinaryXnor primary
Not primary
Tilde 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
primary1
function_call
ParenL 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

Module contents