コード例 #1
0
 //#define SUBMODEL(model, name)                                                  \
 //        setup.namespace_push(# name);                                          \
 //        setup.include(# model);                                                \
 //        setup.namespace_pop();
 public static void SUBMODEL(nlparse_t setup, string model, string name)
 {
     setup.namespace_push(name);
     setup.include(model);
     setup.namespace_pop();
 }
コード例 #2
0
        void parse_netlist()
        {
            while (true)
            {
                parser_t_token_t token = get_token();

                if (token.is_type(parser_t_token_type.ENDOFFILE))
                {
                    error(MF_UNEXPECTED_END_OF_FILE());
                }

                m_setup.log().debug.op("Parser: Device: {0}\n", token.str());

                if (token.is_(m_tok_ALIAS))
                {
                    net_alias();
                }
                else if (token.is_(m_tok_DIPPINS))
                {
                    dippins();
                }
                else if (token.is_(m_tok_NET_C))
                {
                    net_c();
                }
                else if (token.is_(m_tok_FRONTIER))
                {
                    frontier();
                }
                else if (token.is_(m_tok_PARAM))
                {
                    netdev_param();
                }
                else if (token.is_(m_tok_DEFPARAM))
                {
                    netdev_defparam();
                }
                else if (token.is_(m_tok_HINT))
                {
                    netdev_hint();
                }
                else if (token.is_(m_tok_NET_MODEL))
                {
                    net_model();
                }
                else if (token.is_(m_tok_SUBMODEL))
                {
                    net_submodel();
                }
                else if (token.is_(m_tok_INCLUDE))
                {
                    net_include();
                }
                else if (token.is_(m_tok_LOCAL_SOURCE))
                {
                    net_local_source();
                }
                else if (token.is_(m_tok_EXTERNAL_SOURCE))
                {
                    net_external_source();
                }
                else if (token.is_(m_tok_LOCAL_LIB_ENTRY))
                {
                    net_lib_entry(true);
                }
                else if (token.is_(m_tok_EXTERNAL_LIB_ENTRY))
                {
                    net_lib_entry(false);
                }
                else if (token.is_(m_tok_TRUTHTABLE_ENTRY))
                {
                    require_token(m_tok_paren_left);
                    string name = get_identifier();
                    register_local_as_source(name);
                    m_setup.include(name);
                    require_token(m_tok_paren_right);
                }
                else if (token.is_(m_tok_NET_REGISTER_DEV))
                {
                    net_register_dev();
                }
                else if (token.is_(m_tok_NETLIST_END))
                {
                    netdev_netlist_end();
                    return;
                }
                else if (!token.is_type(parser_t_token_type.IDENTIFIER))
                {
                    error(MF_EXPECTED_IDENTIFIER_GOT_1(token.str()));
                }
                else
                {
                    device(token.str());
                }
            }
        }
コード例 #3
0
 //#define INCLUDE(name)                                                          \
 //        setup.include(# name);
 public static void INCLUDE(nlparse_t setup, string name)
 {
     setup.include(name);
 }