当前位置: 首页>>代码示例>>C++>>正文


C++ AstNode::castConcat方法代码示例

本文整理汇总了C++中AstNode::castConcat方法的典型用法代码示例。如果您正苦于以下问题:C++ AstNode::castConcat方法的具体用法?C++ AstNode::castConcat怎么用?C++ AstNode::castConcat使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在AstNode的用法示例。


在下文中一共展示了AstNode::castConcat方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: visit

    virtual void visit(AstPin* nodep, AstNUser*) {
    // Any non-direct pins need reconnection with a part-select
    if (!nodep->exprp()) return; // No-connect
    if (m_cellRangep) {
        UINFO(4,"   PIN  "<<nodep<<endl);
        int pinwidth = nodep->modVarp()->width();
        int expwidth = nodep->exprp()->width();
        if (expwidth == pinwidth) {
        // NOP: Arrayed instants: widths match so connect to each instance
        } else if (expwidth == pinwidth*m_cellRangep->elementsConst()) {
        // Arrayed instants: one bit for each of the instants (each assign is 1 pinwidth wide)
        AstNode* exprp = nodep->exprp()->unlinkFrBack();
        bool inputPin = nodep->modVarp()->isInput();
        if (!inputPin && !exprp->castVarRef()
            && !exprp->castConcat()  // V3Const will collapse the SEL with the one we're about to make
            && !exprp->castSel()) {  // V3Const will collapse the SEL with the one we're about to make
            nodep->v3error("Unsupported: Per-bit array instantiations with output connections to non-wires.");
            // Note spec allows more complicated matches such as slices and such
        }
        exprp = new AstSel (exprp->fileline(), exprp,
                    pinwidth*(m_instNum-m_instLsb),
                    pinwidth);
        nodep->exprp(exprp);
        } else {
        nodep->v3fatalSrc("Width mismatch; V3Width should have errored out.");
        }
    }
    }
开发者ID:toddstrader,项目名称:verilator-integer-array,代码行数:28,代码来源:V3Inst.cpp


注:本文中的AstNode::castConcat方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。