MCPcopy Create free account
hub / github.com/chipsalliance/Surelog / TEST

Function TEST

src/DesignCompile/CompileExpression_test.cpp:42–74  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

40
41namespace {
42TEST(CompileExpression, ExprFromParseTree1) {
43 CompileHelper helper;
44 ParserHarness pharness;
45 CompilerHarness charness;
46 std::unique_ptr<CompileDesign> compileDesign = charness.createCompileDesign();
47 // Cannot use parameters assignments in next expression, there is no
48 // elaboration performed here!
49 auto fC = pharness.parse(
50 "module top();"
51 "parameter p1 = 1 << 4;"
52 "parameter p2 = (1 << 8) >> 4;"
53 "parameter p3 = (16 * 4) / 4;"
54 "parameter p4 = 32 - 16;"
55 "parameter p5 = 2 ** 4;"
56 "parameter p6 = (1'b1) ? 16 : 15;"
57 "parameter p7 = (1'b0) ? 15 : 16;"
58 "endmodule");
59 NodeId root = fC->getRootNode();
60 std::vector<NodeId> assigns =
61 fC->sl_collect_all(root, VObjectType::paParam_assignment);
62 EXPECT_EQ(assigns.size(), 7);
63 for (NodeId param_assign : assigns) {
64 NodeId param = fC->Child(param_assign);
65 NodeId rhs = fC->Sibling(param);
66 const UHDM::expr *exp = (UHDM::expr *)helper.compileExpression(
67 nullptr, fC.get(), rhs, compileDesign.get(), Reduce::Yes, nullptr,
68 nullptr, true);
69 EXPECT_EQ(exp->UhdmType(), UHDM::uhdmconstant);
70 bool invalidValue = false;
71 UHDM::ExprEval eval;
72 EXPECT_EQ(eval.get_value(invalidValue, exp), 16);
73 }
74}
75TEST(CompileExpression, ExprFromParseTree2) {
76 CompileHelper helper;
77 ParserHarness pharness;

Callers

nothing calls this directly

Calls 9

createCompileDesignMethod · 0.80
compileExpressionMethod · 0.80
parseMethod · 0.45
getRootNodeMethod · 0.45
sl_collect_allMethod · 0.45
ChildMethod · 0.45
SiblingMethod · 0.45
SymNameMethod · 0.45
preprocessMethod · 0.45

Tested by

no test coverage detected