2 * yosys -- Yosys Open SYnthesis Suite
4 * Copyright (C) 2012 Clifford Wolf <clifford@clifford.at>
6 * Permission to use, copy, modify, and/or distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20 * The Verilog preprocessor.
23 #ifndef VERILOG_PREPROC_H
24 #define VERILOG_PREPROC_H
26 #include "kernel/yosys.h"
43 // Add a definition, overwriting any existing definition for name.
44 void add(const std::string
&name
, const std::string
&txt
, const arg_map_t
*args
= nullptr);
46 // Merge in another map of definitions (which take precedence
47 // over anything currently defined).
48 void merge(const define_map_t
&map
);
50 // Find a definition by name. If no match, returns null.
51 const define_body_t
*find(const std::string
&name
) const;
53 // Erase a definition by name (no effect if not defined).
54 void erase(const std::string
&name
);
56 // Clear any existing definitions
59 // Print a list of definitions, using the log function
62 std::map
<std::string
, std::unique_ptr
<define_body_t
>> defines
;
69 frontend_verilog_preproc(std::istream
&f
,
71 const define_map_t
&pre_defines
,
72 define_map_t
&global_defines_cache
,
73 const std::list
<std::string
> &include_dirs
);